Пример 4. 29 отметкой транзакта

Пусть в устройстве, номер которого хранится в параметре CLR_1 транзакта, продолжительность обслуживания зависит от вре­мени, которое прошло c момента входа транзакта в модель. Предполагается, что это время не может превышать 1000 ед. времени. Для этого в модели можно использовать такие блоки:

Транзитное время. Блок MARK (ОТМЕТИТЬ). Стандартный числовой атрибут M1 измеряет время, которое прошло c момента входа транзакта в модель. Однако очень часто требуется знать время, затраченное на перемещение транзакта между двумя произвольными точками модели. Для этого используется блок MARK.

При входе транзакта в блок MARK значение таймера абсолют­ного времени записывается в качестве одного из его параметров. Та­кую запись называют отметкой транзакта. Формат блока MARK:

MARK A

Таблица 4.30

Операнд Значение Результат по умолчанию
А Номер параметра, в кото­рый записывается значе­ние абсолютного времени (целое число, СЧА) При отсутствии операндаАот­метка времени заменяется те­кущим значением абсолютного времени

Пусть необходимо определить интервал времени, на протяже­нии которого транзакт проходит от точки Т1 к точке Т2. Для этого нужно выполнить два действия:

1) в точку Т1 поместить блок MARK j, где j – номер параметра, в который записывается значение абсолютного времени в момент за­писи;

2) в точке Т2 обратиться к СЧА c именем MPj, где j – номер па­раметра, в котором сделана отметка времени транзакта; СЧА MPj будет иметь такое значение:

Организация циклов. Блок LOOP (ЦИКЛ). C помощью пара­метров транзактов в программе можно организовать циклы. Для этого используется блок LOOP. Он управляет количеством повторных прохождений транзактом определенной последовательности блоков модели.

Формат блока:

LOOP A[,B]

Таблица 4.31

Операнд Значение Результат по умолча­нию
А Параметр транзакта, используемый для органи­зации цикла (переменная цикла). Он может быть именем, положительным целым числом, СЧА, C4A*CЧA (косвенная адресация). Ошибка
В Метка (имя блока) начального блока цикла Ошибка

Когда транзакт входит в блок LOOP, параметр, указанный в операнде А, уменьшается на единицу, А затем проверяется его значе­ние на равенство нулю. Если значение не равно нулю, то транзакт переходит в блок, указанный в операнде В. Если значение параметра равно нулю, транзакт переходит в следующий блок.

Переменная блока LOOP может только уменьшаться.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: