В соответствии с приведённым выше планом была реализована программа на языке GPSS (полная реализация приведена в Приложении А).
Выше была представлена программа, позволяющая смоделировать работу по сбору агрегатов в течение 8 часов. Опишем программу моделирования системы, созданную на основе блок-схемы моделирующего алгоритма, Q-схемы модели системы, а также описания работы в задании.
Оператор SIMULATE предназначен для инициализации процесса моделирования (в некоторых версиях не обязателен).
Выделяем память для приборов.
KNTRS STORAGE 2
PRIBOR STORAGE 1STORAGE 1- определяет емкость памяти. Форматы: num STOR[AGE] А num - номер памяти.А - емкость. STOR[AGE]A,B А - память (S) (стандартный числовой атрибут) В - емкость памяти (по умолчанию 32767). Устанавливает определенную емкость памяти. Если емкость не определена, то значением по умолчанию является 32767.
Затем мы генерируем транзакты (детали) которые в дальнейшем будут обслуживать филиалы А, В и С.5.5,2
В программе используется формат GENERATE [<A>],[<B>].
В поле А указывается время, которое определяет интервал между моментами генерации сообщений блоком GENERATE. В поле В задается модификатор, который изменяет значения интервала генерации сообщений по сравнению с интервалом, указанным в поле А. Задан модификатор-интервал, с помощью которого задается равномерный закон распределения времени между генерацией сообщений.QUEUE TYPE1- помещает транзакт в конец очереди. Формат: QUEU[E] А,В А - номер очереди (числовое или символьное имя очереди); В - число добавляемых к очереди элементов (по умолчанию 1). Увеличивает текущее содержимое очереди, указанной в поле А, на значение в поле В. Если поле В не определено, увеличивает содержимое очереди на единицу. Транзакт может находиться в двух различных очередях одновременно.
Работа с устройством.
ENTER KNTRSTYPE19,3
DEPART - удаляет транзакт из очереди. Формат: DEPA[RT] А,В А - номер (имя) очереди; В - число удаляемых из очереди элементов. Удаляет текущий транзакт из очереди, указанной в поле А, и уменьшает содержи-мое очереди на значение поля В. Транзакт может находиться одновременно в двух различных очередях.
Блок SEIZE имеет следующий формат: SEIZE <A>. Операнд А может быть именем, положительным целым, СЧА или СЧА*<параметр>. Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности. В поле А задается номер занимаемого устройства. В нашем случае говорится о первом устройстве - устройстве погрузки изделий в филиале А.
Блок ADVANCE имеет следующий формат записи: ADVANCE <A>, [<B>]. Блок ADVANCE задерживает продвижение сообщения на заданный период времени. В поле А задается среднее время пребывания сообщения в блоке ADVANCE. В поле В указывается способ модификации среднего значения, заданного в поле А. Операнд В может быть именем, положительным целым числом, СЧА или СЧА*<параметр>. Интервал изменения среднего времени задержки может быть задан константой, значение которой не должно превосходить среднего времени задержки, вычисленного для данного сообщения. Эта константа определяет интервал, в котором времена задержки распределены равномерно. Все времена задержки выражаются целыми числами. Любое из (2В+1) целых чисел, заключенных в интервале (А-В, А+В), будет выбираться с вероятностью 1/(2B+1). В нашем случае мы в течении 20 единиц времени осуществляем погрузку изделий. Константа, определяющая интервал времени задержки, не должна превосходить среднего времени задержки, в противном случае может быть получено отрицательное время задержки в блоке ADVANCE. Отрицательное значение задержки всегда считается ошибкой.
LEAVE KNTRS
LEAVE - выводит транзакт из памяти. Формат: LEAV[E] А,В А - номер памяти; В - число освобождаемых единиц, памяти (по умолчанию 1). Транзакт удаляется из памяти, имя (номер) которой указано в поле А. Число осво-бождаемых при этом единиц памяти определяется полем В.
TRANSFER 0.15,SERVICEABLE,BROKEN
TRANSFER - изменяет движение транзакта в модели. Формат: TRAN[SFER] А,В,С,D А - режим передачи (ALL,BOTH,FN,P,PICK,SBR,SIM); В - следующий блок; С - следующий блок; D - значение индекса, используемое в режиме ALL. Транзакт направляется в блок, определяемый в соответствии с режимом передачи, указанным в поле А. Режимы передачи поля А: 1. Пробел - транзакт передается в блок, определяемый полем В. 2. "." - статистический режим; в поле А указано десятичное число, выражающее вероятность перехода в блок С; его дополнение до единицы указывает вероятность перехода в блок В. 3. ALL - транзакт последовательно пытается перейти в блоки, определяемые значениями В, B+D, B+2D .C. 4. BOTH - транзакт последовательно пытается войти в блок В, затем в блок С, до тех пор, пока один из них станет доступным. 5. FN - функциональный режим: поле В является номером функции; следующий блок определяется суммой значения этой функции поля С. 6. Р - параметрический режим: поле В является номером параметра; следующий блок определяется суммой значения этого параметра и поля С. 7. PICK - выборочный режим: блок выбирается с равной вероятностью из блоков с номерами: В, B+l, ., С. 8. SBR - режим перехода к подпрограмме: номер текущего блока помещается в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В. 9. SIM - одновременный режим: проверяется одновременное выполнение условий беспрепятственного движения транзактов в задерживающих блоках . Если условие выполняется, транзакт передается в следующий блок, в противном случае транзакт переходит на блок С.
Самое читаемое:
Разработка микроконтроллерного устройства стабилизации температуры
Эффективная организация контроля информации приобретает всё большее
практическое значение, прежде всего как условие успешной практической
деятельности людей. Объем информации, необходимой для нормального
функционирования современного общества, растёт из года в год. На сегодняшний
день складывается ситуация, в которой наряду с самой ...