Пусть в устройстве, номер которого хранится в параметре 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 может только уменьшаться.