48066 (588518), страница 3
Текст из файла (страница 3)
ISPSCAN.TPU – Модуль сканера.
ISPSEMA1.TPU – Процедуры компиляции предложений ЯЗП.
ISPSEMA2.TPU – Процедуры компиляции предложений ЯЗП.
ISPSEMA3.TPU – Процедуры компиляции предложений ЯЗП.
ISPSERV1.TPU – Процедуры компиляции предложений ЯОМ.
ISPSTAT.TPU – Модуль сбора статистики.
ISPUPR.TPU – Процедуры интерфейса с пользователем.
LIBR_1.TPU – Библиотека высокого уровня для пользовательского интерфейса исполнительной подсистемы.
LIBR_2.TPU – Библиотека высокого уровня для пользовательского интерфейса исполнительной подсистемы.
NETLOAD.TPU – Сервисные процедуры отображения модели.
SERVICE.TPU – Общие сервисные процедуры.
TEXTWIND.TPU – Библиотека низкого уровня для пользовательского интерфейса исполнительной подсистемы.
TURBO3.TPU – Модули Турбо Паскаля.
UPRGLOB.TPU – Глобальные описания для пользовательского интерфейса исполнительной подсистемы.
-
Взаимодействие МИКРОСИМ и СВПИМ
-
-
Определение способа взаимодействия
-
Начальным этапом моделирования всегда является создание самой модели, задание ее параметров и т.д. Для этого наиболее удобно использовать подсистему СВПИМ, разработанную специально для более наглядного изображения модели и ввода ее параметров. Исходя из этого, было принято решение сделать подсистему СВПИМ ядром для объединения подсистемы визуального отображения и непосредственно моделирования. Решение об использовании СВПИМ для отображения процесса моделирования было принято ввиду нецелесообразности написания нового модуля для отображения модели, при условии наличия уже имеющегося и отлаженного механизма.
Заметим, что Е-сетевая модель (результирующий загрузочный модуль исполнительной подсистемы), как было отмечено выше, создается креативной подсистемой путем Паскаль–компиляции PAS‑файлов сегментов модели, хранящихся в каталоге PAS, с помощью Турбо Паскаль – компилятора, и запуск исполнительной подсистемы для каждой конкретной модели осуществляется из креативной, путем выбора соответствующей операции.
Наилучшим вариантом схемы взаимодействия между СВПИМ и МИКРОСИМ было бы использование стандартного механизма Windows, через обмен сообщениями между двумя процессами. Таким образом, можно было бы получить визуализацию процесса моделирования в реальном времени, непосредственно в ходе работы исполнительной подсистемы.
К сожалению, отсутствие исходных текстов самой важной части МИКРОСИМ, креативной подсистемы, сделало невозможным использование этих механизмов, поскольку для этого нужно было бы перевести и креативную и исполнительную подсистемы на язык Delphi, что невозможно без исходных текстов программ.
В силу этих ограничений, вынужденным решением было отказаться от визуализации процесса моделирование в реальном времени. Это никак не отражается на точности и наглядности визуализации, однако, для обеспечения работы такого решения необходим внешний файл, который, при некорректном задании параметров модели, может быть очень большим по размеру и на его подготовку может уйти значительное время.
В процессе работы интерпретатора создается файл .log, в который, при каждом срабатывании перехода в процессе интерпретации модели, записывается информация о состоянии сработавшей элементарной Е-сети.
Информация представляется в следующей последовательности:
-
имя сегмента, в котором сработал переход;
-
имя перехода;
-
время;
-
единица времени;
-
задержка;
-
единица времени;
-
входная позиция;
-
количество фишек в ней;
-
выходная позиция;
-
количество фишек в ней;
Состояние позиций отображается на момент до начала срабатывания перехода.
-
Запись состояния модели в файл
Разработчику при исследовании модели далеко мне всегда может потребоваться графическое отображение процесса моделирования. Принимая во внимание этот факт и то, что файлы, содержащие информацию о работе модели, могут быть достаточно большими, что требует наличия дополнительного свободного дискового пространства, было принято решение о том, что при запуске модели на исполнение должна существовать возможность указания необходимости в последующей визуализации исследуемого процесса.
В МИКРОСИМ существует возможность трассировки, как раз и предназначенная для наблюдения процесса работы модели, которая позволяла получать информацию о сработавших переходах в процессе моделирования. Поскольку разрабатываемая подсистема позволит, в случае необходимости, более полно отразить процесс, было принято решение, о том, что признак трассировки модели и будет означать необходимость последующей визуализации процесса ее интерпретации. Признак трассировки задается предложением TRACE при задании параметров модели на языке ЯЗП.
Для реализации трассировки модели в исполнительной подсистеме МИКРОСИМ существует специальная процедура I00TRD из модуля ISPINT. Данный модуль и является интерпретатором модели, иными словами Е-сетевой машиной. Алгоритм ее функционирования представлен ниже.
-
Алгоритм функционирования интерпретатора сетевых моделей
Е-сетевая модель может быть приведена в движение с помощью особого интерпретатора, который реализует алгоритм функционирования Е-сетевой машины. Формально Е-сетевая машина, воспринимая на своем входе определенную маркированную Е-сеть, приводит в движение имеющиеся в этой сети фишки в соответствии с правилами выполнения элементарных сетей. Основные функции Е-сетевой машины при этом сводятся к следующим действиям:
-
Выявление условий срабатывания переходов в элементарных сетях, входящих в обрабатываемую Е-сетевую модель.
-
Назначение на выполнение тех элементарных сетей, в которых возникают условия срабатывания перехода.
-
Реализация временных задержек, ассоциированных с переходами при их срабатывании (реализация активных фаз сработавших переходов).
-
Перемещение фишек из входных в выходные позиции каждого сработавшего перехода в момент завершения активной фазы в зависимости от типа элементарной сети, отвечающей данному переходу.
-
Контроль правильности доступа к атрибутам фишек в позициях Е-сети при выполнении управляющих процедур (процедур входного и выходного выбора), процедур преобразования и вычисления функций временной задержки.
-
Сбор статистических данных о поведении обрабатываемой Е-сети.
-
Контроль особых условий, возникающих во время обработки Е-сетевой модели (исчезновение фишек, отсутствие активных переходов, истечение заданного интервала наблюдения (моделирования) за Е-сетью, возникновение условия из предложения STOP и т.п.).
Интерпретация модели может выполнятся лишь после сборки модели из предварительно скомпилированных сегментов, входящих в ее состав, и после установки параметров собранной модели (скомпонованной) модели на языке задания параметров (ЯЗП). Готовая к интерпретации Е-сетевая модель представляется в памяти компьютера справочником и набором сетевых и процедурных компонентов сегментов, входящих в модель.
Алгоритм работы Е-сетевой машины (алгоритм интерпретации) реализуется набором целого ряда процедур. В процессе интерпретации динамически формируются и используются следующие списки, указатели которых хранятся в справочнике модели или в справочниках сегментов:
T – список сегментов модели: в списке находятся справочники всех сегментов, составляющих модель. Справочники сегментов упорядочены в списке T по возрастанию времени наступления ближайших событий в сегментах, т.е. по возрастанию значений, хранящихся в поле LOWTIME справочника сегмента. Справочники сегментов с одинаковым значением поля LOWTIME располагаются в списке T согласно дисциплине обслуживания FIFO; поле LOWTIME в справочнике пассивного сегмента (т.е. сегмента, в котором нет активных переходов) содержит значение MAXREAL (максимально возможный момент времени, или «бесконечность»).
S – список активных переходов сегмента: в список включаются таблицы тех переходов сегмента, процесс срабатывания которых находится в активной фазе. Переходы упорядочены в списке S по возрастанию времени окончания активных фаз. Значение этого времени для активного перехода хранится в поле FINT таблицы перехода и выражено в единицах времени модели. Таблицы переходов с одинаковым значением поля FINT располагаются в списке S согласно дисциплине обслуживания FIFO.
I – список прерываний: в список включаются переходы сегмента, принадлежащие элементарным сетям типа I, во входных позициях которых одновременно находятся основная и прерывающая фишки.
R – список потенциально активных переходов: в список включаются таблицы тех переходов, у которых состояние входных и выходных позиций соответствует условию срабатывания, но функция (процедура) входного и / или выходного выбора (управления) задает пустое множество позиций (неопределенное (нулевое) значение траектории перемещения фишки). Таблицы переходов в списке R располагаются согласно дисциплине обслуживания LIFO.
Дополнительно используется дескриптор интерпретатора, содержащий информацию, передаваемую процедурным компонентам модели, и времена начала и окончания интерпретации, необходимые для вычисления затрат машинного времени на моделирование. Дескриптор интерпретатора размещается в отдельной процедуре (процедуре I00GDS), которая предназначена для определения адреса дескриптора интерпретатора.
Справочник модели содержит ее имя, адрес списка сегментов и ряд других сведений, являющихся общими для всей модели (размер модели, единица модельного времени, интервал моделирования, текущее модельное время и т.п.). В свою очередь, каждый сегмент, входящий в модель представлен (кроме сетевого и процедурного компонентов) своим справочником, в котором отражены сведения, относящиеся к данному сегменту. Некоторые поля в справочниках модели используются при осуществлении записи о состоянии сработавшего перехода в файл.
Алгоритм функционирования Е-сетевой машины реализуется следующими процедурами модуля ISPINT:
Процедура I000 – Управление интерпретацией модели.
Процедура I001 – Подготовка интерпретации модели.
Процедура I002 – Основной цикл интерпретации модели.
Процедура I00MC – Управление интерпретацией сегмента.
Процедура I00MS – Управление срабатыванием переходов в сегменте.
Процедура I00PT – Выполнение операций, ассоциированных со срабатыванием перехода.
Упрощенно, структура интерпретатора модели представлена на рис. 2.4.
Алгоритм функционирования процедуры I00MS, управляющей срабатыванием переходов, рассмотрим более подробно:
-
[Инициализация]
Инициализировать список I.
-
[Контроль возможности приостановки]
Если условие приостановки интерпретации истинно, то установить код возврата и завершить процедуру (выход).
-
[Контроль списка I]
Если список I пуст, то перейти на шаг 4; в противном случае исключить (выбрать) переход из списка I и перейти на шаг 8.
-
[Контроль списка S]
Если список S пуст, то завершить процедуру (выход).
-
[Подготовка к работе с переходом]
Настроиться на работу с первым переходом в списке S.
-
[Контроль момента активизации]
Если момент активизации FINT выбранного (из списка S) перехода больше текущего модельного времени, то установить LOWTIME<–FINT и завершить процедуру (выход).
-
[Исключение выбранного перехода из списка S]
Выполнить процедуру I00DSL.
-
[Контроль признака трассировки перехода]
Если задан признак трассировки срабатывания выбранного перехода, то выполнить процедуру I00TRD (вывод информации о срабатывании перехода).
-
[Выполнение операций, ассоциированных со срабатыванием перехода]
Выполнить процедуру I00PT.
-
[Контроль успешности операций]
Если выявлена ошибка при срабатывании перехода, то завершить процедуру (конец).
-
[Контроль активизации переходов по входным позициям]
Проверить условие активизации переходов, связанных со входными позициями сработавшего перехода, из которых удалены фишки в результате срабатывания.
-
[Контроль активизации переходов по выходным позициям]
Проверить условие активизации переходов, связанных с выходными позициями сработавшего перехода, в которые поступили фишки в результате срабатывания.
-
[Повторный контроль сработавшего перехода]
Проверить условие повторной активизации сработавшего перехода (и если условие истинно, то должным образом отразить это в списках S, I, R).
-
[Контроль активизации переходов из списка R]
Проверить условие активизации переходов, находящихся в списке R.
-
[Модификация счетчика]
Нарастить счетчик числа сработавших переходов.
-
[Контроль числа срабатываний]
Если число сработавших переходов достигло установленного максимального значения, то сбросить счетчик числа сработавших переходов, установить код возврата и завершить процедуру (выход). В противном случае перейти на шаг 2.
Как видно из данного алгоритма процедура I00TRD вызывается процедурой I00MS, при установлении задания признака трассировки. Упрощенный алгоритм работы процедуры управления срабатыванием перехода представлен на рис. 2.5.
-
Трассировка модели
Перед рассмотрением работы процедуры трассировки необходимо указать структуру справочника модели и сегмента, таблиц переходов и позиций, некоторые поля которых используются при получении данных о сработавшем в сегменте переходе.
СПРАВОЧНИК МОДЕЛИ (58 БАЙТА)















