Блок
DISPLACE
Назначение. Блок
передает транзакт с указанным номером в заданный блок
Синтаксис.
DISPLACE A,B,[C],[D]
Назначение операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
A |
Номер
передаваемого транзакта |
Имя,
число,
СЧА |
Обязательный операнд |
B |
Метка или номер блока, в
который будет передан транзакт |
Имя,
число,
СЧА |
Обязательный операнд |
C |
Номер параметра передаваемого
транзакта, в который записывается оставшееся время, если транзакт
исключается из списка будущих событий |
Имя,
число,
СЧА |
Нет |
D |
Метка или номер блока, куда
передается активный транзакт, если указанный передаваемый транзакт не
существует |
Имя,
число,
СЧА |
Нет |
Особенности выполнения.
1.
Блок
DISPLACE перемещает заданный транзакт в
процессе моделирования к любому заданному
блоку. Перемещаемый транзакт исключается из любого списка транзактов
и пытается занять блок назначения.
2.
Операнд А
используется для поиска транзакта, который должен быть перемещен. Если такой
транзакт не существует, обработка
прекращается, и активный транзакт пересылается на альтернативный блок
назначения, заданный операндом D,
если он есть. Если транзакт существует, ему
задается новый блок назначения, определенный операндом В.
3.
Если перемещаемый транзакт
находится в списке будущих событий, он исключается из него,
подсчитывается продолжительность
оставшегося времени (время, на которое запланирован
выход транзакта из списка будущих
событий, минус текущее время). Если операнд С используется, оставшееся время
сохраняется в параметре транзакта. Если такой параметр не существует,
и используется операнд С, создается новый параметр.
4.
Когда транзакт перемещается, то он
исключается из:
списка будущих событий;
списков отложенных прерываний (для
вытесняющих транзактов);
списков задержки (по возрастанию
приоритета);
списков пользователя;
списков повторных попыток;
и остается в:
списке текущих событий.
списках прерываний (для
вытесненных транзактов).
списках групп.
5.
Когда транзакт перемещается,
прерванные выполнения в приборах не сбрасываются.
Пример
использования.
DISPLACE X1,NO_EXE,DELTA,NO_PRE
Блок перемещает
транзакт, номер которого ранится в сохраняемой величине 1 в блок с именем
NO_EXE.
Если транзакт находился в списке будущих событий, то он исключается из него и
оставшееся время записывается в параметр
DELTA
перемещаемого транзакта. Если транзакта с таким номером нет, то активный
транзакт переходит в блок с именем
NO_PRE.
Назначение. Блок
передает транзакт в зависимости от состояния объекта.
Синтаксис.
GATE
Х
A[,B]
Назначение
операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
Х |
Определяет проверяемый
логический атрибут объекта |
СЛА |
Обязательный параметр |
A |
Имя или номер проверяемого
объекта |
Имя,
число,
СЧА |
Обязательный параметр |
B |
Определяет блок для режима
перехода |
Имя,
число,
СЧА |
Режим
отказа |
Особенности выполнения.
Блок
GATE работает в двух режимах:
1.
Если операнд В не используется, блок
GATE
работает в режиме отказа. Когда транзакт пытается войти в блок
GATE,
работающий в режиме отказа, и условие, указанное в операнде Х не выполняется,
транзакт блокируется, пока условие не будет выполнено. Если условие выполняется,
активный транзакт входит в блок
GATE и затем переходит к
следующему по порядку блоку.
Блокированные транзакты
помещаются в список повторных попыток проверяемого объекта.
Когда состояние объекта
изменяется, вновь проверяется условие, и если
оно выполняется, транзакту позволяется войти в блок
GATE.
2.
Если операнд В используется, блок
GATE
работает в режиме перехода. Когда транзакт пытается войти в блок
GATE,
и условие не выполняется, транзакт входит в блок
GATE и
направляется к блоку, заданному операндом В, и помещается
в список текущих событий перед равными по приоритету транзактами. Если условие
выполняется, активный транзакт входит в блок
GATE и
затем переходит к следующему по порядку блоку.
Примеры
использования.
GATE
FV SERVER
В режиме отказа
активный транзакт войдет в блок
GATE
, если прибор с именем
SERVER
доступен. В противном случае транзакт блокируется до выполнения условия.
GATE
SE RAM,NO_RAM
В режиме перехода
, если память с именем
RAM
пуста, то транзакт входит в блок
GATE
и переходит к следующему блоку. В противном случае транзакт переходит к блоку с
меткой
NO_RAM.
Назначение. Блок .
передает транзакт и уменьшает значение параметра транзакта
Синтаксис.
LOOP
A,[B]
Назначение
операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
A |
Параметр транзакта,
содержащий уменьшаемое число |
Имя,
число,
СЧА |
Обязательный параметр |
B |
Метка или номер блока, в
который будет передан транзакт |
Имя,
число,
СЧА |
Нет |
Особенности
выполнения.
1.
Блок всегда принимает транзакт.
2.
После входа транзакта в блок числовое значение параметра транзакта, заданного
операндом А , уменьшается на единицу
3.
Если новое значение параметра больше нуля, и задан операнд В, то транзакт
передается в блок, номер или имя которого содержится в операнде В. В противном
случае транзакт переходит к следующему блоку.
4.
Если операнд В не задан, то после уменьшения числового значения параметра
транзакт всегда переходит к следующему блоку.
Пример
использования.
LOOP
5,CYCLE
значение пятого
параметра транзакта уменьшается на единицу и если оно остается больше нуля, то
транзакт передается на блок с меткой
CYCLE
Назначение. Блок
передает транзакт в зависимости от результатов сравнения объектов.
Синтаксис.
TEST
X
A,B,[C]
Назначение операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
X |
Операция сравнения |
Условная операция отношения |
Обязательный операнд |
A |
Первое сравниваемое значение |
Имя,
число,
СЧА |
Обязательный операнд |
B |
Второе сравниваемое значение |
Имя,
число,
СЧА |
Обязательный операнд |
C |
Метка или номер блока, в
который будет передан транзакт |
Имя,
число,
СЧА |
Нет |
Особенности выполнения.
Блок
TEST функционирует в двух режимах:
1.
Если операнд С не используется, блок
TEST
функционирует в режиме отказа. Когда транзакт пытается войти в блок
TEST,
работающий в режиме отказа, и заданное условие не выполняется, транзакт
блокируется, и ему не позволяется войти в блок
TEST,
проверка повторяется до тех пор, пока условие
не будет выполнено. После выполнения заданного условия активный транзакт
входит в блок TEST
и затем переходит к следующему по порядку блоку.
2.
Если операнд С используется, блок
TEST
функционирует в режиме передачи транзакта. Когда транзакт пытается войти в такой
блок TEST
и проверяемое условие не выполняется, транзакт входит в блок
TEST и
далее переходит к блоку, указанному в
операнде С. Если проверяемое условие
выполняется, активный транзакт входит в блок
TEST и
затем переходит к следующему по порядку блоку.
Примеры
использования.
TEST
L
Q$SERVER,100
в режиме отказа
транзакт войдет в блок
TEST
и перейдет к следующему блоку, если текущее содержимое очереди
SERVER
меньше ста.
TEST
GE C1,P$LIMIT,NO_SERVICE
Блок
TRANSFER
Назначение. Блок
передает транзакт на указанный блок.
Синтаксис.
TRANSFER
[A],[B],[C],[D]
Назначение операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
A |
Режим
блока |
BOTH,
ALL,
PICK,
FN,
P,
SBR,
|
Опубликовал Kest
March 30 2014 22:09:55 ·
0 Комментариев ·
6214 Прочтений ·
|
|