48066 (588518), страница 5
Текст из файла (страница 5)
Для осуществления возможности визуального отображения процесса моделирования к свойствам позиций и переходов были добавлены дополнительные свойства. описывающие наличие или отсутствие фишек в позиции и свойства помечающие переход как сработавший.
Класс TNetObj:
TNetObj = class (TNObject)
public
TypeNet:TAllTypeNet;
ResizeRgn:HRGN;
Width:integer;
Height:integer;
HeightVertLine:integer;
IsPassed:boolean; (*добавленное свойство*)
Свойство IsPassed описывает состояние перехода (срабатывающий или нет)
Класс TPosObj:
TPosObj = class (TNObject)
public
TypePos:TAllTypePos;
Width:integer;
Height:integer;
Orientation: Boolean;
Length: Longint;
Pos1, Pos2:TPoint;
InOutPoint: array [1..2] of TPoint;
SatatusInOutPoint:array [1..2] of TWayLine;
OrientationRgn:HRGN;
NumPoints:integer; (*добавленное свойство*)
Свойство NumPoints описывает количество фишек в позиции.
-
Структура подсистемы визуального отображения
Структура подсистемы имеет следующий вид:
ОБРАБОТКА ФАЙЛА
СОЗДАНИЕ СПИСКА
НАЧАЛЬНАЯ МАРКИРОВКА
ГРАФИЧЕСКОЕ ОТОБРАЖЕНИЕ
-
-
Обработка файла созданного МИКРОСИМ
Файл с данными о сработавших переходах создается в результате работы МИКРОСИМ. Структура файла описана в п. 1.4.3. Имя файла задается в виде .log, располагается он в директории МИКРОСИМ. При некорректном задании параметров моделирования размер файла может достигать нескольких мегабайт. Очевидно, что активная работе с таким файлом будет затруднена из-за ограниченной пропускной способности дисковой системы.
Ввиду того, что операции с диском намного медленнее, нежели с памятью, перед началом работы информация из файла с данными загружается в память и в дальнейшем операции с диском отсутствуют. Это позволило существенно ускорить процесс отображения на машинах с медленными дисковыми системами.
Для обеспечения хранения файла со сработавшими переходами был введен тип записи, содержащей следующие параметры сработавшего перехода:
OneLine= Record
Segment: string (*имя сегмента*);
Perehod: string (*имя перехода*);
Ttime: real (*текущее модельное время*);
Ddelay: real (*задержка*);
FromPos: String (*имя входной позиции*);
FromCount: integer (*кол-во фишек*);
ToPos: string (*имя выходной позиции*);
ToCount:integer (*кол-во фишек*);
end;
В процессе обработки файла организуется список из таких записей, в порядке следования сработавших переходов.
-
-
Начальная маркировка модели
Моделирование в МИКРОСИМ подразумевает необходимость задания начальной маркировки модели. Маркировка (размещение фишек) осуществляется исполнительной подсистемой на этапе задания параметров, на языке ЯЗП (предложение MARK). Для правильного отображения процесса моделирования, перед началом визуализации необходима расстановка фишек в исходные позиции. Поэтому первым этапом работы подсистемы визуального отображения является начальная маркировка.
Одним из вариантов начальной маркировки был лексический анализ файла с параметрами системы. Но он был отвергнут ввиду наличия такого механизма в МИКРОСИМ и нежелательности дублирования функционала в разных местах системы. Вместо него использован более простой и логичный вариант начальной маркировки непосредственно по данным о сработавших переходах.
Исходя из правила функционирования элементарных Е-сетей, первым в системе сработает тот переход у которого выполнены условия срабатывания – наличие фишки во входной позиции и ее отсутствие в выходной., а также истекло время задержки перехода. Следовательно для таких переходов время задержки будет равно текущему времени моделирования. Зная же переход, сработавший в начальный момент времени, можно определить, какая траектория перехода была активна в этот момент и, соответственно, определить, из какой позиции появилась фишка.
Исходя из этого, для осуществления начальной маркировки модели необходимо выделить из списка те переходы у которых значение поля Ddelay равно значению поля Ttime. И установить во входную позицию (поле FromPos) обнаруженных переходов фишку (или количество фишек, если позиция – очередь), таким образом, осуществив начальную маркировку модели.
-
-
Визуальное отображение
Таким образом перебираются все сработавшие переходы и поведение модели можно пронаблюдать на экране.
Следует заметить, что ситуация, при которой для выяснения динамики модели требуется просмотреть всю работу модели от начала и до конца, маловероятна. Как правило, достаточно просмотреть некоторое количество срабатываний, чтобы уяснить, каким именно образом работает модель. Для этого предусмотрена возможность останова отображения в любой момент времени.
Подсистемой предусмотрена возможность пошагового выполнения процесса визуального отображения. Запрос необходимости пошагового выполнения осуществляется перед началом визуализации. После отображения каждого срабатывания перехода, система ожидает нажатия клавиши Enter.
Очевидно, что при визуализации процесса интерпретации использование значений модельного времени задержки нецелесообразно. Т.к. в этом случае процесс происходил бы слишком быстро, особенно в случае тех переходов для которых задержка не задана, и соответственно равна 0. Для решения этой проблемы предусмотрен некий коэффициент, называемый коэффициентом визуальной задержки, который устанавливается пользователем. Выбор значения коэффициента также предоставляется исследователю. При отображении процесса моделирования на экране, модельная задержка сработавшего перехода перемножается на заданный коэффициент, благодаря чему мы получаем визуальные задержки переходов пропорциональные модельным. Для тех переходов в модели у которых задержка не реализованная используется аддитивная задержка.
Возможность введения пользователем коэффициента визуальной задержки позволяет исключить зависимость времени изображения от быстродействия компьютера, поскольку на медленных машинах существует возможность установить коэффициент задержки меньшим, нежели на машинах с более мощным процессором. Так же эту возможность можно использовать в тех случаях, когда не требуется визуально отслеживать срабатывание каждого перехода, а нужно лишь оценить работоспособность модели в целом. В этом случае следует установить меньший коэффициент задержки, чем в случаях, когда необходимо отследить траекторию движения каждой фишки.
Разработанная в рамках данного дипломного проекта подсистема позволяет наблюдать за процессом интерпретации модели. Визуально, процесс интерпретации заключается в перемещении фишек в системе.
Подсистема состоит из двух частей одна из которых интегрирована в исполнительную подсистему МИКРОСИМ, а вторая в редактор сетевых моделей СВПИМ. Упрощенно полученную структуру подсистемы можно представить следующим образом:
МИКРОСИМ
СВПИМ
Взаимодействие между интерпретатором модели и СВПИМ осуществляется через текстовый файл, структура данных которого предоставляет второй части подсистемы полную информацию о последовательности срабатываний переходов и состоянии входных – выходных позиций. Процесс визуального отображения осуществляется после интерпретации модели, что никоим образом не сказывается на правильности отображения. Данный процесс состоит из трех этапов, реализованных в программе тремя циклами.
Первый этап – этап работы с файлом, в результате которого создается список имеющий структуру в точности повторяющую структуры данных файла.
Второй этап – этап начальной маркировки модели.
Третий этап – этап визуального отображения.
-
Технология интеграции Windows и DOS-приложений
До настоящего времени наиболее широко распространенной операционной системой являлась система MS-DOS. Развитие и совершенствование компьютерных технологий привело к появлению новых, более совершенных операционных систем, основное отличие и преимущество которых заключается в их многозадачности. Одной из таких ОС стала операционная среда Microsoft Windows 3.x, и впоследствии, Windows’95, Windows’98 и Windows’NT. Данные операционные системы получили широкое распространение в нашей стране и за рубежом, благодаря удобному графическому интерфейсу и мультизадачности.
Если мы вспомним историю развития средств разработки программ, то увидим следующее. Сначала была интеграция – в единой программной среде программисты получали редактор, компилятор и компоновщик. Примерами таких сред были компиляторы фирмы Borland – Turbo Pascal, Turbo C, Turbo C++ и многие продукты других фирм. Выпуск Windows вызвал появление широкого интереса к разработке программ для этой среды и, как следствие, – необходимость в средствах разработки Windows – программ. Так появились первые компиляторы для Windows, принципиально не отличавшиеся по идеологии от своих DOS‑собратьев. Практически сразу же за компиляторами появились различные генераторы приложений (кодогенераторы), которые выполняли две роли. Они выступали как средство для построения прототипов программ – позволяли без программирования построить интерфейс будущей программы, и как средство для автоматической генерации кода. Благодаря этому программист постепенно освобождался от непосредственного написания кода и получал некоторое средство для визуального, наглядного создания приложений.
Среда программирования Delphi является попыткой объединения всего лучшего, из того, что было создано на тему визуального программирования. Delphi – это не просто новая версия компилятора языка Turbo Pascal, а принципиально новый программный продукт, позволяющий создавать широкий спектр приложений для среды Windows.
Одним из таких приложений стала разработанная в МГИЭТ система визуального программирования имитационных моделей – СВПИМ, предназначенная для создания моделей, решаемых системой имитационного моделирования МИКРОСИМ, реализованной на языке Турбо Паскаль 7.0 и являющейся DOS‑приложением. Виду возникновения необходимости совместного использования СВПИМ и МИКРОСИМ возникла потребность их интеграции в рамках единой программной оболочки, для дальнейшего использования в среде Windows. Этой проблеме просвещенна данная глава дипломного проекта.
-
-
Интеграция Dos – и Windows-приложений
-
-
Объединение МИКРОСИМ и СВПИМ
-
Операционная система Window’s позволяет запускать на выполнение любое Dos – приложение. В Delphi также предусмотрена возможность запуска любого *.EXE – файла. Поэтому простейшим объединением двух Windows- и Dos‑приложений является запуск на выполнение одной из программ на определенном этапе работы другой. В рамках данного дипломного проекта был реализован именно такой способ интеграции, являющимся не самым красивым и, может быть не самым правильным, но в данном случае единственно возможным, по независящим от автора причинам. Тем не менее были проведены исследования, связанные с возможностью перевода Dos – приложений, написанных на языке Pascal, на язык Delphi.
-
Создание программ на Delphi
Для начала вкратце рассмотрим, что представляет из себя программа на Delphi. Основное назначение Delphi – служить средством для быстрого создания широкого класса Windows – приложений. [5] Среда Delphi включает в себя полный набор визуальных средств для быстрой разработки приложений, поддерживающих создание пользовательских интерфейсов. В Delphi используется язык Object Pascal, полностью поддерживающий предыдущие версии языка Pascal. Таким образом, работа в Delphi заключается в работе с объектами.
Объект или, в терминологии Delphi – компонет, обладает набором свойств, определяющим его представление и поведение. Свойства влияют на то, как объект выглядит и на его невидимые черты (поведение), они непосредственно связанны с объектом – являются его атрибутами, описывающими его детальное строение.















