Краткое руководство по моделированию на языке GPSS (1049434), страница 7
Текст из файла (страница 7)
- транзакту не разрешается покинуть блоки ASSEMBLE, GATHER или MATCH до тех пор, пока в них не войдет заданное число транзактов из того же семейства.
-
Прибор может быть захвачен любое количество раз, но не два раза подряд одним транзактом.
-
При использовании операндов C, D, E следует учитывать следующее:
-при задании полей D и (или) E, поле С также должно быть задано;
-если приоритетный режим не задан (PR в операнде B), то операнды C, D и (или) E игнорируются.
Примеры.
1. PREEMPT UNIT
В режиме прерывания, если прибор UNIT уже занят, поступивший транзакт помещается в список отложенных прерываний
2. PREEMPT UNIT,PR,NODE2,P_Time
В приоритетном режиме, если приоритет поступившего транзакта выше приоритета транзакта, .занимающего уже прибор, возникает прерывание. Если приоритет входящего транзакта ниже, то он помещается в список задержки в конец своего приоритетного класса. Прерванный транзакт пытается перейти в блок с меткой NODE2, а остаток времени до окончания обслуживания будет помещен в параметр транзакта с именем P_Time.
Блок RETURN
Назначение. Блок позволяет активному транзакту освободить занятый прибор или исключить транзакт из списка прерываний прибора.
Синтаксис. RETURN A
Операнд | Назначение | Значение | Значение по умолчанию |
A | Имя освобождаемого прибора | Имя, число, СЧА | Обязательный операнд |
Пример использования.
RETURN WorkStation
Освобождается прибор с именем WorkStation
Расширенные описания блоков
Блок TRANSFER (полный вариант)
Назначение. Блок передает транзакт на указанный блок.
Синтаксис. TRANSFER [A][,B][,C][,D]
Операнд | Назначение | Значение | Значение по умолчанию |
A | Режим блока | BOTH, ALL, PICK, FN, P, SBR, SIM, Имя, СЧА | Режим безусловной передачи |
B | Номер или метка блока. Номер или имя параметра в режиме Р | Имя, число, СЧА | Нет |
C | Номер или метка блока. Приращение в режимах FN и P | Имя, число, СЧА | Нет 0 для режима P |
D | Приращение номера блока для режима ALL | Имя, число, СЧА | 1 |
Особенности выполнения.
Блок TRANSFER может функционировать в одном из 9 режимов. Операнд А используется для определения режима, в котором функционирует блок. Значение операндов В и С зависит от режима. Если не задан операнд, определяющий блок, куда будет передан транзакт, то используется блок, следующий за блоком TRANSFER.
-
Режим безусловной передачи
Когда операнд А отсутствует, блок TRANSFER функционирует в режиме безусловной передачи. В этом режиме активный транзакт всегда переходит к блоку, заданному в операнде В.
TRANSFER ,NO_SERV
При входе транзакта в блок TRANSFER, он передается в блок с меткой NO_SERV.
-
Режим статистической передачи
В этом режиме активный транзакт переходит к блоку, заданному в операнде С, с вероятностью, заданной в операнде А. Операнд А может быть положительной дробью, меньшей единицы или целым положительным числом. Если операнд А - целое число, оно интерпретируется как доля от тысячи. Альтернативный переход задается в операнде В. Если операнд В пропущен, транзакт переходит к следующему по порядку блоку.
TRANSFER .75,,CHANNEL_2
При входе транзакта в блок TRANSFER, с вероятностью 0.75 он переходит к блоку с именем CHANNEL_2. С вероятностью 0.25 он переходит к следующему по порядку блоку.
-
Режим BOTH (ОБА)
В данном режиме проверяется возможность входа транзакта в блок, метка или номер которого указаны в операнде В. Если транзакту отказано во входе в данный блок, проверяется блок, метка или номер которого указаны в операнде С. Транзакт направляется в первый блок, в который ему будет позволено войти. Если ни один из блоков не принимает транзакт, он остается в блоке TRANSFER до тех пор, пока не сможет войти в один из них.
TRANSFER BOTH, CHANNEL_1, CHANNEL_2
При входе транзакта в блок TRANSFER, проверяется блок с меткой CHANNEL_1. Если транзакт не может войти в него, проверяется блок с меткой CHANNEL_1. Если транзакту отказано во входе и второй блок, он остается в блоке TRANSFER до тех пор, пока не сможет войти в один из блоков.
-
Режим ALL (ВСЕ)
В этом режиме проверяется блок, метка или номер которого указаны в операнде В. Если этот блок не может принять активный транзакт, то последовательно проверяются все блоки до тех пор, пока не будет достигнут блок, метка или номер которого заданы в операнде С, или один из проверенных блоков не примет транзакт до достижения блока, заданного в операнде С. Номер каждого последовательно проверяемого блока вычисляется путем добавления операнда D к номеру ранее проверенного блока. Если операнд D не используется, проверяется каждый блок между блоками, заданными в операндах В и С. Если не используется операнд С, проверяется только один блок. Блоки с большим номером, чем операнд С, не проверяются. Транзакт направляется в первый блок, принявший его. Если блок, принимающий транзакт, отсутствует, транзакт остается в блоке TRANSFER до тех пор, пока не сможет войти в один из блоков.
TRANSFER ALL, CHANNEL_1, CHANNEL_2, 2
Когда транзакт входит в данный блок TRANSFER, проверяется блок с меткой CHANNEL_1. Если транзакт не может войти в него, проверяется каждый блок с номером на 2 больше предыдущего. Если все проверенные блоки отказывают транзакту во входе, проверка заканчивается на блоке с меткой CHANNEL_2 или на блоке перед ним. Если ни один из блоков не принял транзакт, он остается в блоке TRANSFER, пока не сможет покинуть его.
-
Режим PICK (выборочный)
В режиме PICK номер блок для перехода транзакта выбирается случайно из интервала, заданного операндами B и С.
TRANSFER PICK, CHANNEL_1, CHANNEL_2
Когда транзакт входит в этот блок TRANSFER, номер нового блока выбирается случайно в интервале между блоками с именами CHANNEL_1 и CHANNEL_2.
-
Режим FN (функциональный)
В режиме FN номер блок для перехода транзакта выбирается путем вычисления функции, заданной в операнде В, с прибавлением к этому значению необязательного приращения, заданного в операнде С.
TRANSFER FN,Exp,5
Когда транзакт входит в данный блок TRANSFER, номер блок для перехода вычисляется как текущее значение функции с именем Exp плюс 5.
-
Режим Р (параметрический)
В параметрическом режиме активный транзакт переходит к блоку, вычисленному, как сумма значения параметра, заданного операндом B, и значения, заданного операндом С.
TRANSFER Р,End_Proc,1
Когда транзакт входит в этот блок TRANSFER, он переходит в блок, следующий за блоком, номер которого задан в параметре транзакта с именем End_Proc.
-
Режим SBR (подпрограммный)
В режиме SBR активный транзакт всегда переходит к блоку, заданному в операнде В. Номер блока TRANSFER помещается в параметр, указанный в операнде С.
TRANSFER SBR,Proc,End_Proc
Когда транзакт входит в данный блок TRANSFER, он переходит в блок с меткой Proc. Номер блока TRANSFER помещается в параметр с именем End_Proc.
-
Режим SIM (одновременный)
В режиме SIM активный транзакт переходит к одному из двух местоположений в зависимости от индикатора задержки транзакта. Если индикатор задержки установлен, транзакт переходит к блоку, заданному в операнде С, а если индикатор задержки сброшен, транзакт переходит к блоку, заданному в операнде В.
Индикатор задержки транзакта устанавливается всегда, когда транзакту отказывается во входе в какой-либо блок. Индикатор задержки остается установленным до тех пор, пока транзакт не войдет в блок TRANSFER SIM.
TRANSFER SIM,Nodelay_Place,Delay_Place
Когда транзакт входит с этот блок TRANSFER, он немедленно направляется в блок с меткой De!ay_Place, если его индикатор задержки установлен, или в блок с меткой Nodelay_Place, если его индикатор задержки сброшен. После перехода транзакта его индикатор задержки всегда сбрасывается.
Блок SELECT
Назначение. Блок выбирает первый объект определенного типа, который удовлетворяет заданному условию. Номер объекта записывается в параметр активного транзакта.
Синтаксис. SELECT X A,B,C[,D][,E][,F]
Назначение операндов.
Операнд | Назначение | Значение | Значение по умолчанию |
X | Определяет условный или логический режим функционирования блока. | Условный оператор или СЛА | Обязательный операнд |
A | Номер параметра активного транзакта, в который записывается номер объекта, удовлетворяющего заданному условию | Имя, число, СЧА | Обязательный операнд |
B | Минимальный номер объекта данного типа, для которого проверяется заданное условие | Имя, число, СЧА | Обязательный операнд |
C | Максимальный номер объекта данного типа, для которого проверяется заданное условие | Имя, число, СЧА | Обязательный операнд |
D | Величина для сравнения в режиме отношения. Не используется в режиме выбора максимального или минимального | Имя, число, СЧА | Обязательный операнд для режима отношения |
E | СЧА типа объекта для режима отношения и выбора максимального или минимального | СЧА типа объекта | Обязательный операнд для режима отношения и выбора максимального или минимального |
F | Определяет блок для перехода транзакта, если объект не выбран. Не используется в режиме выбора максимального или минимального | Имя, число, СЧА | Следующий блок |
Примеры.
1. SELECT E 1,10,20,0,F,NO_UNIT
В режиме отношения по стандартному числовому атрибуту F(cостояние прибора) среди приборов с номерами от 10 до 20 ищется первый прибор со значением F=0(прибор свободен). Номер найденного прибора записывается в первый параметр транзакта. Если такого прибора нет, то в первый параметр записывается 0 и транзакт переходит в блок с меткой NO_UNIT
2. SELECT MAX 1,5,15,,Q
В режиме выбора максимального элемента по стандартному числовому атрибуту Q(длина очереди) среди очередей с номерами от 5 до 15 ищется очередь с максимальным значением данного атрибута.
3. SELECT SE 3,1,7
В логическом режиме по стандартному логическому атрибуту SE(память пуста) среди памятей с номерами от 1 до 7 ищется первая пустая. Номер найденной памяти записывается в третий параметр транзакта. Если такой памяти нет, то в третий параметр записывается 0.
Оператор FUNCTION (полный вариант)
Оператор определяет функцию GPSS, заданную таблично.