Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Имитационное моделирование систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
584 Кб
Скачать

следующему

по номеру блоку. В поле В обычно указывается

номер блока, являющегося началом цикла. Операнд В может быть

именем, положительным целым, СЧА или СЧА*<параметр>.

Один

и

тот же цикл может одновременно выполняться

произвольным числом сообщений. Если сообщение входит в блок

LOOP со значением параметра, равным n, то это сообщение

войдет в блок

LOOP n раз и вернется к началу этого цикла (n-1)

раз. Если в момент первого входа сообщения в блок LOOP

значение параметра, номер которого указан в поле А, нулевое

или отрицательное, происходит ошибка выполнения.

 

 

MARK -

сохранение

 

значения

системного времени

в

параметре

сообщения. Блок MARK имеет

следующий

формат

 

записи:

 

 

 

MARK [<A>]

 

 

 

 

 

 

 

 

 

 

 

 

Блок

MARK либо заменяет значение отметки

времени

сообщения на текущее значение абсолютного условного времени

 

(операнд А не определен), либо записывает значение условного

 

времени в заданный параметр сообщения(при использовании

 

операнда А).

 

 

 

 

 

 

 

Поле А содержит номер параметра, в который записывается

 

значение

абсолютного

условного

времени. Если

такого

 

параметра не существует, то он создается. Операнд А может быть

 

именем,

положительным

 

целым

 

числом, СЧА

или

СЧА*<параметр>.

 

 

 

 

 

 

MATCH

- ожидание

сообщением

связанных

с

ним

сообщений в других блоках модели (синхронизация сообщений).

 

Блок MATCH имеет следующий формат:

MATCH <A>

Блок MATCH используется для синхронизации движения двух сообщений, принадлежащих к одному семейству, без удаления этих сообщений из модели.

Блоки MATCH не объединяют синхронизируемые сообщения. Синхронизация осуществляется путем подбора пар сообщений из одного семейства и задержки этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не задерживаются в блоке MATCH. Сообщения, для которых выполнилось условие

61

синхронизации, переходят

к следующему по номеру

блоку. В

одной паре блоковMATCH могут одновременно находиться в

состоянии синхронизации

пары сообщений из

различных

семейств. Возможна также одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH.

Поле А задает имя или номер другого блока MATCH, называемого "сопряженным блоком MATCH". Если такого блока нет, происходит останов по ошибке. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>.

MSAVEVALUE - присваивание значений элементам матриц. Блок MSAVEVALUE имеет следующий формат:

MSAVEVALUE <A>,<B>,<C>,<D>

Блок MSAVEVALUE используется для записи значений в матрицы, а также для увеличения или уменьшения значений, записанных в матрицах.

Воперанде A задается имя матрицы. Крайним правым символом операнда должен быть знак"+", если блок MSAVEVALUE работает в режиме накопителя и "-" - в режиме уменьшения. Операнд может быть именем, положительным целым, СЧА или СЧА*<параметром>, следующими за знаками

"+" и "-".

Воперанде В задается номер строки матрицы, в операнде

С- номер столбца. Таким образом, операнды В и С определяют

относительное

расположение

ячеек

матрицы, содержимое

 

которых изменяется.

 

 

 

 

Операнды В и С могут быть именем,

положительным

 

целым, СЧА или СЧА*<параметр>.

 

 

 

Аргумент

операнда

D определяет

значение, которое

 

должно храниться в соответствующем элементе матрицы, может

 

быть добавлено (режим

накопления) или

вычтено (режим

 

уменьшения) из его содержимого.

 

 

 

PREEMPT

- прерывание

обработки

обрабатываемого

 

устройством

сообщения

и

захват

устройства

активным

сообщением. Блок PREEMPT имеет следующий формат :

 

 

PREEMPT

<A>,[<B>],[<C>],[<D>],[<E>]

 

62

Блок PREEMPT позволяет сообщению, в зависимости от условий, заданных в операндах блока, занять устройство. Блок PREEMPT может задержать сообщение на входе.

Поле А определяет номер или имя устройства, на котором

генерируется

 

прерывание.

 

Операнд

может

быть

именем,

положительным целым, СЧА или СЧА*<параметр>.

 

 

 

Поле

В задает приоритетный режим(PR)

или

 

режим

прерывания, если операнд опущен. При работе в этом режиме

сообщение, занимающее уже устройство или генерирующее на

нем прерывание, может быть прервано только сообщением,

приоритет

 

которого

выше

приоритета

данного сообщения.

Прерванные

 

сообщения

претендуют на

дополнительное

использование

устройства,

когда

прервавшее

их

сообщение

входит

в

 

соответствующий

блокRETURN.

Прерванные

сообщения помещаются в список задержки в порядке приоритета.

Поле

С

задает

номер

или

имя

блока,

куда

должно

попытаться

войти прерванное сообщение вэтот

же

момент

условного времени.

 

 

 

 

 

 

 

 

 

Прерванное сообщение теряет управление устройством, но

претендует на право его использования, если только не задан

аргумент поля Е.

 

 

 

 

 

 

 

 

 

При приоритетном режиме работы желательнозадавать

поле С,

если

прерывающее

сообщение

имеет

более

высокий

приоритет, чем прерванное сообщение. Операнд может быть,

именем, положительным целым, СЧА или СЧА*<параметр>.

Поле D задает номер параметра, связанного с прерванным

сообщением.

Если прерываемое сообщение в момент прерывания

находится в списке будущих событий, тогда остаток времени

нахождения

в

этом списке

записывается

в

заданный

параметр.

Если такой параметр не существует, то он создается. При приоритетном режиме работы желательно задавать поле D только в том случае, если прерывающее сообщение имеет более высокий приоритет, чем прерванное сообщение. Операнд может быть именем, положительным целым, СЧА или СЧА*<параметр>.

PRIORITY - изменение приоритета сообщения. Блок PRIORITY имеет следующий формат записи:

PRIORITY <A>,[<B>]

63

Блок

PRIORITY

присваивает

сообщению

нужный

приоритет.

Приоритет

сообщений

влияет

на

порядок

обработки сообщений процедурой просмотра и порядок занятия

сообщениями объектов оборудования.

 

 

 

 

 

Поле

А задает

новое значение приоритета. Операнд А

может

быть

именем, любым

целым

числом, СЧА

или

СЧА*<параметр>.

 

 

 

 

 

 

 

 

Новое значение приоритета может быть меньше, больше

или равно текущему значению приоритета.

 

 

 

 

Поле В определяет режим BUFFER, в

нем

указывается

значение "BU". В

общем случае

процедура

просмотра

списка

текущих

 

сообщений

пытается

продвинуть

обрабатываемое

сообщение в следующий блок. Однако если

в поле В

блока

PRIORUTY записано слово BU, то после присвоения сообщению

нового

значения

приоритета

блокPRIORITY

 

становится

эквивалентным блоку BUFFER. Сообщение помещается в список текущих событий в конец своего нового приоритетного класса, процедура просмотра возвращается к началу списка текущих

событий и начинает

просмотр снова. Поскольку блок BUFFER

 

не задерживает сообщения, вошедшие в этот блок, сообщение

 

будет обработано

процедурой

просмотра

снова при

том

же

значении

условного

времени. Режим BUFFER

подробно

 

рассматривается при описании блока BUFFER.

 

 

 

 

 

QUEUE - включение сообщения в очередь. Формат записи

 

блока QUEUE:

 

QUEUE <A>,[<B>]

 

 

 

 

 

 

 

 

 

 

 

 

 

Блок QUEUE

увеличивает длину очереди. В

поле

А

задается номер или имя очереди,

к длине которой

добавляются

 

единицы. Операнд может быть именем, положительным целым,

 

СЧА или СЧА*<параметр>.

 

 

 

 

 

 

 

 

Поле

В

определяет

 

число

единиц, на

 

которое

увеличивается текущая длина очереди. Если поле В пусто, то

 

прибавляется

единица.

Операнд

может

быть

именем,

положительным целым, СЧА или СЧА*<параметр>.

 

 

 

 

Когда сообщение входит в блок QUEUE, то ищется очередь

 

с именем, определенным операндом А. Если необходимо, очередь

 

создается. Поскольку к очереди добавляются единицы,

а не сами

 

64

сообщения, не составляется список членов очереди. Сообщения в этот же момент условного времени пытаются перейти к следующему блоку.

Одно и то же сообщение может одновременно увеличить длину нескольких очередей, т.е. сообщение может войти в несколько блоков QUEUE перед тем, как войти в соответствующие блоки DEPART.

Стандартные числовые атрибуты, связанные с описываемым оператором, следующие:

-Q - текущая длина очереди;

-QА - средняя длина очереди;

-QС - общее число входов в очередь;

-QМ - максимальная длина очереди;

-QТ - среднее время ожидания в очереди;

-QХ - среднее время ожидания в очереди для

сообщений с ненулевым временем задержки;

- QZ - число входов в очередь с нулевым временем задержки.

RELEASE - освобождение сообщением устройства. Блок RELEASE имеет следующий формат:

 

 

RELEASE

<A>

 

 

 

 

Блок RELEASE предназначен для освобождения устройства

 

тем сообщением,

которым

оно было занято. Если

сообщение

 

обрабатывается устройством, то с помощью блока RELEASE оно

 

освобождает

 

устройство

и

переходит

к

следующе

последовательному блоку.

Если

сообщение

обрабатывалось

устройством,

но

не было прервано, то

блоком RELEASE

 

сообщение

удаляется из

списка

прерывания

устройства

и

пытается вновь занять устройство.

 

 

 

 

 

REMOVE -

удаление

члена

из

числовой

группы

или

группы сообщений. Блок REMOVE имеет следующий формат:

 

REMOVE [<X>] <A>,[<B>],[<C>],[<D>],[<E>],[<F>]

Блок REMOVE удаляет сообщения или числовые значения из соответствующих групп. Из группы, работающей в режиме сообщения, можно удалить несколько сообщений. Сообщения можно также удалять в зависимости от значений атрибутов сообщений (приоритета или параметра).

65

Указатели отношения во вспомогательном поле операции <X> определяют, какое явное условие следует рассматривать при работе блока REMOVE. Если указатель отношения не задан, предполагается отношение равенства (Е).

Поле А задает номер группы, из которой удаляются сообщения. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>.

Поле В задает число сообщений, которые нужно удалить из группы, работающей в режиме сообщений. Операнд В может быть "ALL", именем, положительным целым, СЧА, СЧА*<параметр>. Поле В должно быть пустым, если задан условный оператор MIN или MAX.

Вполе С задается числовое значение, которое удаляется из группы, работающей в числовом режиме. Операнд может быть именем, целым, СЧА, СЧА*<параметр>.

Вполе D может быть задан атрибут сообщения (приоритет или номер параметров), используемый для сравнения

при поиске сообщений, подлежащих

удалению из

группы.

Операнд

может быть "PR", именем,

положительным

целым,

СЧА, СЧА*<параметр>.

 

 

В

поле Е записывается значение СЧА, сравниваемое со

значением, записанным в поле D при попытке удалить сообщения из групп, работающих в режиме сообщений. Операнд Е может быть именем, целым, СЧА, СЧА*<параметр>.

Поле Е должно быть пустым, если задан условный оператор MIN или MAX.

Операнд F может быть именем, положительным целым, СЧА, СЧА*<параметр>.

RETURN - освобождение захваченного устройства. Блок RETURN имеет следующий формат:

RETURN <A>

Блок RETURN предназначен для освобождения ранее захваченного устройства. В поле А задается номер устройства, с которого снимается прерывание. Прерывание может быть снято в блоке RETURN только тем сообщением, которым оно было генерировано. Операнд А может быть именем, положительным целым, СЧА или СЧА*<параметр>.

66

SAVAIL -

изменение

состояния

многоканального

устройства

на "готово к использованию". Блок SAVAIL имеет

следующий формат:

SAVAIL <A>

 

 

 

 

 

 

Блок

SAVAIL переводит

заданное

многоканальное

устройство

из

состояния

недоступности

в

состояние

доступности.

Если

заданное многоканальное устройство

уже

находится в состоянии доступности, блок SAVAIL выступает как пустой блок.

В поле А определяется номер многоканального устройства, которое следует перевести в состояние доступности. Операнд

может

быть

именем,

положительным

целым, СЧА

 

или

СЧА*<параметр>.

 

 

 

 

 

 

 

 

 

SAVEVALUE

-

присваивание

значений

 

ячейки

сохраняемых величин;

 

 

 

 

 

 

 

 

SCAN

-

просмотр

членов

группы до

выполнения

некоторого

условия. Блок

SCAN

имеет

следующий

формат

записи:

 

SCAN [<X>]

<A>,[<B>],[<C>],<D>,<E>,[<F>]

 

 

 

 

 

 

Блок

SCAN обеспечивает

следующие возможности

для

групп,

работающих

в

 

режиме

сообщения, независимо

от

расположения ее членов:

 

 

 

 

 

 

 

-определяет, является ли сообщение с определенным значением атрибута членом данной группы;

-получает значения атрибутов сообщения - члена группы,

для которого удовлетворяются заданные условия; - изменяет дальнейший путь сообщения, если в группе не

находится сообщения, удовлетворяющего заданным условиям (при помощи операнда F).

Указатели отношения во вспомогательном поле операции <X> определяют, какое явное условие нужно рассматривать. Если указатель отношения не задан, то предполагается отношение равенства (Е). Используются следующие указатели отношения.

Поле А задает номер просматриваемой группы. Операнд может быть именем, положительным целым, СЧА, СЧА*<параметр>.

67

В поле В задается значение сообщения, сравниваемое с другими СЧА. Сравниваемым атрибутом сообщения может быть либо приоритет сообщения(PR), либо значение, записанное в

одном из его параметров. Операнд

В

может

быть "PR",

именем, положительным целым, СЧА, СЧА*<параметр>.

Поле С задает значение, сравниваемое со значением поля В.

По умолчанию это значение равно 0.

Это

поле

должно быть

пустым, если задан указатель отношения MIN или MAX.

Вполе D задается номер параметра, выбранного из данной группы сообщения, значение которого записывается в параметре (номер которого задан в поле) Епоступившего сообщения. Задание в поле D мнемоники "PR" приводит к записи приоритета выбранного сообщения в параметр поля Е вошедшего сообщения. Операнд D может быть "PR", именем, положительным целым, СЧА, СЧА*<параметр>.

Поле Е задаёт номер параметра вошедшего сообщения, в который записывается значение поляD в случае, если найдено сообщение, отвечающее заданным условиям. Операнд может быть именем, целым, СЧА, СЧА*<параметр>.

Вполе F указывает номер альтернативного блока для выхода сообщения, если ни один член группы не удовлетворяет

заданным

условиям.

Операнд

может

быть

,именем

положительным

целым,

СЧА, СЧА*<параметр>. Вошедшее

 

сообщение переходит к следующему по номеру блоку, если

 

выполняется заданное отношение или если не описано поле F.

 

 

SEIZE

-

занятие

устройства

или

ожидание

его

освобождения

 

для последующего занятия. Блок SEIZE имеет

 

следующий формат :

SEIZE <A>

Операнд А может быть именем , положительным целым, СЧА или СЧА*<параметр>. Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности. В поле А задается номер занимаемого устройства.

68

SELECT - выбор блока для дальнейшего продвижения сообщения с использованием значения параметра сообщения. Блок SELECT имеет следующий формат записи:

SELECT <X> <A>,<B>,<C>,[<D>],[<E>],[<F>]

Блок SELECT выбирает первый объект в заданном

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

Номер

этого

объекта

записывается

в

заданный

параметр

вошедшего в блок сообщения.

 

 

 

 

<X> - обозначение логического или условного операторов.

В поле А задается номер параметра вошедшего в блок

COUNT

сообщения, куда

записывается

номер

объекта,

удовлетворяющего заданному условию. Операнд А может быть

именем,

положительным

целым

числом,

СЧА

или

СЧА*<параметр>.

Поле В определяет нижнюю границу диапазона изменения номеров объектов, для которых проверяется заданное условие. Операнд В может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

Поле С определяет верхнюю границу диапазона изменения номеров объектов, для которых проверяется заданное условие. Операнд С может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

В поле D задается величина сравнения. Это значение используется совместно с условными операторами('E', 'NE', 'GE, 'L', 'LE').

Операнд D может быть именем, любым целым числом, СЧА или СЧА*<параметр>.

Значение стандартного числового атрибута сравнивается со значением атрибута объекта, заданного в поле Е. Если не используется условный оператор, поле D можно не задавать.

Поле Е используется совместно с полем D и условным

оператором.

В

поле

Е

задается

только

мнемоническое

обозначение

СЧА

объекта

без

указания

конкретного номера,

поскольку диапазон изменения номеров объектов задан полями В и С. В поле Е может быть задан любой из стандартных числовых атрибутов объекта.

69

Поле F задает номер альтернативного блока для входящего сообщения, если заданным условиям не удовлетворяет ни один объект в диапазоне. Операнд F может быть именем, положительным целым числом, СЧА или СЧА*<параметр>. Если операнд F не используется, то сообщение будет продвинуто к следующему по номеру блоку.

SPLIT - создание копии сообщения с адресацией еев некоторый блок. Блок SPLIT имеет следующий формат:

 

 

 

 

 

SPLIT

<A>,[<B>],[<C>]

 

 

 

 

Блок SPLIT выполняет функцию копирования входящего в

 

него

сообщения,

которое

 

называется

 

исходным

или

порождающим.

 

 

 

 

 

 

 

 

 

 

В поле А

задается число создаваемых копий. Операнд А

 

может

быть

именем,

положительным

целым,

СЧА,

 

СЧА*<параметр>. Если вычисленное значение аргумента поля А

 

равно нулю, то блок SPLIT не выполняет

никаких

операций.

 

После

создания

 

копий

 

сообщение

 

пытается

перейти

следующему по номеру блоку. Все копии

формируются в

 

момент входа порождающего сообщения в блок SPLIT.

 

 

Поле

В

задает

номер следующего блока, к которому

 

переходят

 

копии

 

исходного

сообщения, причем

значение

 

вычисляется

для каждой копии

отдельно. Операнд В может

 

быть именем, положительным целым, СЧА, СЧА*<параметр>.

 

В поле С может быть задан номер параметра,

 

используемого

для

 

присвоения

копиям

последовательных

 

номеров. Операнд С может быть именем, положительным целым,

 

СЧА, СЧА*<параметр>.

 

 

 

 

 

 

 

SUNAVAIL

-

изменение

состояния

многоканального

 

устройства на "не готово к использованию". Блок SUNAVAIL имеет следующий формат:

SUNAVAIL <A>

Блок SUNAVAIL переводит многоканальное устройство в состояние недоступности. В поле А определяется номер многоканального устройства. Операнд может быть именем, положительным целым, СЧА или СЧА*<параметр>.

TABULATE - обновление данных таблицы. Для сбора элементов данных сообщение должно войти в блок TABULATE

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]