Смекни!
smekni.com

Моделирование в системе PILGRIM (стр. 4 из 4)

В строке «ПСЧ» указывается начальное значение для генератора псевдослучайных чисел, необходимых для имитации случайных процессов. Автоматически для этого используется показание компьютерного таймера.

В строке «Пространство» предлагается выбрать тип пространства, если модель будет работать с координатной плоскостью. В данной задаче это не требуется.

Строки «Задержка» и «Поток» предназначены для задания номеров контролируемых узлов: очереди (узел «Queue») и терминатора (узел «Term») соответственно. Для указанных узлов в процессе моделирования будут строиться графики времени задержки (очередь) и динамики выходного потока (терминатор). График времени задержки показывает среднее значение времени ожидания транзакта в очереди в каждый единичный отрезок модельного времени. График динамики потока показывает число транзактов, попавших в терминатор в единицу модельного времени (то есть интенсивность выходного потока заявок в моделируемой системе).

В строке «Точность» можно выбрать необходимое число знаков после десятичной точки в таблице результатов моделирования.

В окне «Начальный С++ текст» при необходимости переопределяются имена параметров транзактов и задаются числовые константы.

Окно инициализации ресурсов предназначено для задания начального состояния узлов, которые в данной модели не используются.

2.4 Описание узлов модели

2.4.1 Очередь

В очередях сигналы накапливаются до 10 сигналов и затем отправляются на обработку в мини-ЭВМ (в соответствии с рисунком 3)

Рисунок 3 – Свойства узла Queue

2.4.2 Серверы

Первый сервер – сигналы буферируются и предварительно обрабатываются в соответствии с рисунком 4.

Остальные сервера предназначены для обработки накопленных сигналов. Как только число сигналов становится равным 10 начинается обработка.

Рисунок 4 – Свойства узла Serv (первичная регулировка)

В очередях заданий необходимо установить флаг учета приоритета транзактов (значение "prty"), в параметрах серверов так же нужно задать флаг учитывания приоритетов транзактов (значение "abs"), а также установиться закон распределения и время обработки в соответствии с рисунком 5.

Рисунок 5 – Детализация узла Serv

2.4.3 Генератор (датчик, мини-ЭВМ)

Описание генератора похоже на описание серверов в соответствии с рисунками 6,7. Здесь необходимо задать интервал времени поступления каналов на вход и время обработки.

Рисунок 6 – Свойства узла AG (датчик)

По условию от датчиков поступают на вход канала сигналы через интервалы 10+ 5мкс.

Рисунок 7 – Детализация узла AG (датчик)

Значение параметра 3 остаются нулевыми.

2.4.4 Ключ

В данной модели ключ используется для регулирования поступления сигналов, в соответствии с рисунком 8.

Рисунок 8 – Свойства узла KEY

2.4.5 Терминатор

Для описания терминаторов необходимо задать только логическое имя узла. Никаких дополнительных действий в данной модели с ними не связано, в соответствии с рисунком 9.

Рисунок 9 – Свойства узла Terminator

2.5 Сохранение модели

После того, как граф модели построен, и все узлы полностью описаны, модель необходимо сохранить в графическом формате. Для этого в меню «Файл» нужно выбрать пункт «Сохранить», затем выбрать адрес сохранения на диске и ввести имя файла. Расширение .pgf (pilgrim graphic file) будет подставлено автоматически.

2.6 Генерация программы

Если сохранение модели в графическом формате был успешно выполнено, нужно в меню «Выполнить» выбрать пункт «Генерировать С++ файл». В указанной пользователем папке будет создан файл PILGRIM-программы с расширением .cpp (имя также вводится пользователем). Тест программы приведен в Приложении А.

Заключение

В данной курсовой работе были рассмотрены основные принципы моделирования в системе Pilgrim.

Изучены основные инструментальные средства, такие как транзакты, узлы, события, модельный таймер.

Рассмотрены основные типы узлов (Ag, Key, Serv, Creatи т.д.)

В рамках проекта была смоделирована система обработки информации.

Приложение А. Листинг программы


#include <Pilgrim.h>

forward

{

int fw;

modbeg("Системаобработкиинформации", 119, 16500, (long)time(NULL), none, none, none,none, 2);

ag("Датчик", 101, none, norm, 10, 5, zero, 102);

network(dummy, dummy)

{

top(102):

queue("Очередь", prty, 103);

place;

top(103):

if( addr[5]->tn<=addr[4]->tn && addr[5]->tn<=addr[6]-> )

{

fw=117;

}

else

if( addr[6]->tn<=addr[5]->tn && addr[6]->tn<=addr[4]-> )

{

fw=118;

}

else

{

fw=116;

}

serv("Сервер", 3, abs, norm, 10, 3, zero, fw);

place;

top(104):

if addr[4]->tn==10 hold(116)

queue("Очередь", prty, 113);

place;

top(105):

if addr[5]->tn==10 hold(117)

queue("Очередь", prty, 114);

place;

top(106):

if addr[6]->tn==10 hold(118)

queue("Очередь", prty, 115);

place;

top(110):

term("мини-ЭВМ 1");

place;

top(111):

term("мини-ЭВМ 2");

place;

top(112):

term("мини-ЭВМ 3");

place;

top(113):

if addr[4]->tn<10 rels(116)

serv("Сервер", 1, abs, none, 33, zero, zero, 110);

place;

top(114):

if addr[5]->tn<10 rels(117)

serv("Сервер", 1, abs, none, 33, zero, zero, 111);

place;

top(115):

if addr[6]->tn<10 rels(118)

serv("Сервер", 1, abs, none, 33, zero, zero, 112);

place;

top(116):

key("Ключ 1", 104);

place;

top(117):

key("Ключ 2", 105);

place;

top(118):

key("Ключ 3", 106);

place;

fault(123);

}

modend("pilgrim.rep", 1, 8, page);

return 0;

}