32471_gpss_world_reference
.pdfопределяется операндом А, приведенном во включенное или выключенное состояние, соответственно.
Если в качестве логического оператора указан I, состояние логической схемы, определяемое Операндом А, инвертируется. Это означает, что если он был включен, он будет выключен. А если был выключен, то будет включен.
Логические операторы
Логические операторы являются обязательной составляющей блока. Они могут принимать значение S, R или I по следующим правилам:
∙S – Логический переключатель включен (set).
∙R – Логический переключатель выключен (reset).
∙I – Логический переключатель инвертирован.
Режим отказа
Заявке никогда не будет отказано в доступе в блок LOGIC.
Родственные SNA
∙LSEntnum – Логический переключатель включен. LSEntnum возвращает 1 если логический переключатель Entnum включен, 0 в противном случае.
Вспомогательные окна
∙Logicswitches Window (Окно логических переключений) – Просмотр действия логических схем в реальном времени.
LOOP (СВЯЗЬ)
Блок LOOP изменяет параметр и управляет местом назначения активной заявки на основе полученного результата.
LOOP A,B
Операнды
A – Счетчик содержимого параметра. Обязательный. В качестве операндов должны быть
указаны Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.
B – Номер блока. Следующий блок, если счетчик не обнулился после декрементирования. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger,
ParenthesizedExpression, SNA, или SNA*Parameter.
Пример
LOOP Customer_Count,Start_Over
Предположим, что блок Start_Over предшествует в моделировании блоку LOOP. В этом примере, когда заявка поступает в блок LOOP. Ее параметр Customer_Count уменьшается на 1. Если результат не равен нулю, заявка перемещается в блок Start_Over. Это обусловливает циркуляцию заявки до тех пор, пока значение параметра Customer_Count не будет равно нулю. Тогда заявка отправится на следующий блок.
Алгоритм работы
Когда заявка попадает в блок LOOP, операнд А вычисляется, округляется и используется для нахождения параметра заявки по этому номеру. Если такого параметра не существует, фиксируется аварийная остановка. В противном случае, значение параметра уменьшается на 1.
Если новое значение параметра больше нуля и операнд В определен, заявка направляется к определенному операндом В месту назначения. В противном случае, заявка отправляется к следующему блоку.
Особые ограничения
∙A должно быть положительным.
Режим отказа
Заявке никогда не будет отказано в доступе в блок LOOP.
Родственные SNA
PParameter или *Parameter – Значение параметра. PParameter возвращает значение параметра Parameter.
161
Вспомогательные окна
∙Blocks Window (Окно блоков) – Просмотр смены Блоков в реальном времени.
∙Transaction Snapshot (Текущее состояние заявки) – Изображение состояния заявки в моделировании.
MARK (МАРКИРОВКА)
Блок MARK заносит значение абсолютного системного времени в параметр активной заявки.
MARK A
Операнд
A – Номер параметра. Параметр, получающий значение системного времени. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger,
ParenthesizedExpression, SNA, или SNA*Parameter.
Примеры
MARK Beginning
В этом примере, когда заявка попадает в блок MARK, ее параметру Beginning присваивается значение, равное значению абсолютного системного времени, АС1.
MARK
В этом примере, когда заявка попадает в блок MARK, ее времени маркировки присваивается значение, равное значению абсолютного системного времени.
Алгоритм работы
Когда заявка попадает в блок MARK и операнд А не определен, ее времени маркировки присваивается значение, равное значению абсолютного системного времени Если операнд А определен, он численно вычисляется и округляется. Параметру активной
заявки с найденным номером присваивается значение, равное значению абсолютного системного времени. Если параметр не существует, он создается.
Затем активная заявка направляется в следующий блок (NSB – Next Sequential Block). Значение времени, установленное блоком MARK может быть извлечено классами SNAs М1 и МР. М1 возвращает время пребывания требования в системе, которое вычисляется как абсолютное системное время минус время маркировки. МР возвращает значение, равное абсолютному системному времени минус значение параметра заявки.
Особые ограничения
∙ A, если оно определено, должно быть положительным.
Родственные SNAs
∙MPEntnum – Время пребывания требования в системе, параметр. Текущее значение абсолютного системного времени минус значение параметра Entnum.
∙M1 – Время пребывания требования в системе. M1 возвращает значение абсолютного системного времени минус время маркировки заявки.
Режим отказа
Заявке никогда не будет отказано в доступе в блок MARK.
Вспомогательные окна
∙Transaction Snapshot (Текущее состояние заявки) – Изображение состояния заявки в моделировании.
∙CEC Snapshot (Текущее состояние CEC) – Изображение состояния цепи текущих событий в моделировании.
∙FEC Snapshot (Текущее состояние FEC) – Изображение состояния цепи будущих событий в моделировании.
MATCH (СОГЛАСОВАНИЕ)
Пара блоков MATCH заставляют заявки ожидать друг друга.
162
MATCH A
Операнд
A – Номер или имя блока. Сопряженный блок MATCH, который будет проверяться на согласование (совпадение набора) заявки. Обязательный. В качестве операндов должны
быть указаны Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.
Пример
A_Is_Done MATCH B_Is_Done
B_Is_Done MATCH A_Is_Done
В этом примере рассматриваются два сопряженных блока MATCH. Они обычно помещаются в системе моделирования и один, в конечном счете, принимает заявку в тот же набор. Если блок MATCH расположен за набором блоков, осуществляющих некий процесс, пара родственных (согласованных) заявок пройдет через блок MATCH только когда обе заявки закончат соответствующий процесс.
Алгоритм работы
Когда заявка поступает в блок MATCH, операнд А численно вычисляется, округляется, и используется для нахождения сопряженного блока MATCH. Если такого блока не существует, фиксируется аварийная остановка.
Если сопряженный блок MATCH содержит (в своей цепи согласования) заявку из того же набора, родственная заявка удаляется из цепи согласования. Если в текущий момент ее обработка не была прервана на каком– либо устройстве, она помещается в СЕС за заявками с таким же приоритетом. Также, если обработка активной заявки не была прервана на каком– либо устройстве, она помещается в СЕС, но перед заявками с таким же приоритетом.
Если одна из согласуемых заявок была в текущий момент прервана на устройстве, ей не разрешается покинуть блок MATCH до тех пор, пока все приоритетные прерывания обслуживания не будут разблокированы.
Если, когда активная заявка поступает в блок MATCH, ни одной согласуемой заявки не обнаружено, она направляется на ожидание в цепь согласования блока MATCH.
Особые ограничения
∙Операнд A должен определять местоположение существующего блока MATCH.
∙Прерванным заявкам не разрешается покинуть блок MATCH.
Режим отказа
Заявке никогда не будет отказано в доступе в блок MATCH
Родственные блоки
∙ADOPT – Устанавливает наборы (Assembly Set) активных заявок
∙ASSEMBLE – Ожидает и ликвидирует членов наборов.
∙GATHER – Ожидает членов набора.
∙SPLIT – Создает заявки из того же набора.
Родственные SNAs
∙A1 – Набор. Возвращает набор активной заявки.
∙MBEntnum – Согласование в блоке. MBEntnum возвращает 1, если в блоке Entnum есть заявка из того же набора, что и активная. В противном случае, MBEntnum возвращает 0.
Вспомогательные окна
∙Blocks Window (Окно блоков) – Просмотр смены блоков в реальном времени.
∙Transaction Snapshot (Текущее состояние заявки) – Изображение состояния заявки в моделировании.
∙CEC Snapshot (Текущее состояние CEC) – Изображение состояния цепи текущих событий в моделировании.
∙FEC Snapshot (Текущее состояние FEC) – Изображение состояния цепи будущих событий в моделировании.
163
MSAVEVALUE (МАТРИЦА)
Блок MSAVEVALUE обновляет значения элементов матрицы.
MSAVEVALUE A,B,C,D
Операнды
A – Номер или имя матрицы, с необязательным указанием + или –. Обязательный. В
качестве операндов должны быть указаны Name, PosInteger, ParenthesizedExpression, SNA,
или SNA*Parameter, с указанием в конце +, –, или Null.
B – Номер строки. Обязательный. В качестве операндов должны быть указаны Name,
PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.
C – Номер столбца. Обязательный. В качестве операндов должны быть указаны Name,
PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.
D – Значение, которое необходимо сохранить, прибавить или вычесть. Обязательный. В
качестве операндов должны быть указаны Name, Number, String, ParenthesizedExpression, SNA, или SNA*Parameter.
Примеры
MSAVEVALUE Sales+,Part23,Cust77,6.234
В этом примере, когда заявка поступает в блок MSAVEVALUE, элемент матрицы Sales, с номером строки Part23 и номером столбца Cust77 увеличивается на 6.234. Названия строк и столбцов необходимо задать ранее в выражениях EQU.
MSAVEVALUE Parts,Part23,Description,"Zippo lighter"
В этом примере строка добавляется в матрицу в качестве элемента. Матрица должна быть определена в любом месте модели или же задана интерактивно, при помощи команды MATRIX, которая задает элементы матрицы.
Алгоритм работы
Когда заявка поступает в блок MSAVEVALUE, операнд А численно вычисляется и по его значению находится соответствующая матрица. Если такой матрицы не существует, фиксируется аварийная остановка. матрица должна быть определена при помощи группы команд MATRIX.
Операнды В и С численно вычисляются для нахождения требуемого элемента матрицы. Если такого элемента не существует, фиксируется аварийная остановка.
Операнд D высчитывается и используется в операции обновления. Если в операнде А в качестве суффикса указан +, эта операция будет заключаться в прибавлении к элементу численного значения операнда D; если указан –, это будет вычитание. Если суффикс для операнда А не задан, элементу матрицы будет присвоено новое значение, равное численному эквиваленту операнда D.
Матрица задается командой MATRIX. Она может содержать более 6 измерений. Однако только первые два измерения могут быть доступны блок MSAVEVALUE. Поэтому, все оставшиеся координаты считаются равными 1.
Процедура сложения PLUS может получать доступ к любым элементам матриц. Если необходимо использовать матрицы с количеством измерений, больше двух, придется создавать одну или более процедур сложения PLUS для доступа к ним. матрицы, определенные командой MATRIX имеют глобальный контекст и доступны всем процедурам сложения. Кроме того, для вызова процедуры PLUS могут быть созданы и временные локальные матрицы. Это будет обсуждаться позже в главе 8.
Режим отказа
Заявке никогда не будет отказано в доступе в блок MSAVEVALUE.
Особые ограничения
∙Блоки MSAVEVALUE могут получать доступ только к первым двум измерениям многомерных матриц. Индексам третьего и выше измерений будет присвоено значение 1. Для доступа и изменения любых элементов может быть использована процедура PLUS.
164
Родственные SNA
∙MXEntnum(m,n) – Значение элемента матрицы. Возвращается значение из строки m, столбца n матрицы Entnum. Значениями строки и столбца могут Name,
PosInteger, или P class SNA
Вспомогательные окна
∙Expressions Window (Окно выражений) – Просмотр значения выражений в реальном времени.
∙Plot Window (Окно сценариев) – Просмотр содержимого более 8 выражений в реальном времени.
∙Matrix Window (Окно матрицы) – Возможность просмотра изменения значений элементов матрицы в реальном времени.
OPEN (ИНИЦИАЛИЗАЦИЯ)
Блок OPEN инициализирует поток данных.
OPEN A,B,C
Операнды
A – Дескриптор потока данных. Обязательный. В качестве операндов должны быть
указаны Name, PosInteger, String, ParenthesizedExpression, SNA или SNA*Parameter.
B – Номер потока данных. Необязательный. В качестве операндов должны быть указаны
Null, Name, PosInteger, ParenthesizedExpression, SNA or SNA*Parameter. Значение по умолчанию 1.
C – Номер или имя альтернативного блока назначения. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger, ParenthesizedExpression, SNA, или
SNA*Parameter.
Пример
OPEN ("MYFILE.TXT"),2,Error_Block
В этом примере блок OPEN создает тип потока данных, известный как поток ввода/вывода, и присваивает ему идентификационный номер 2. Если в процессе инициализации фиксируется ошибка, код ошибки сохраняется внутри и активная заявка направляется в блок, помеченный как блок Error_Block.
Алгоритм работы
Блок OPEN обеспечивает создание потока данных и устанавливает указатель текущей позиции в 1.
Поток данных – это последовательность текстовых строк, используемый в среде моделирования GPSS. Каждый поток данных идентифицируется уникальным номером. Существуют 3 типа потоков данных:
1.Потоки ввода/вывода (I/O Streams),
2.Потоки памяти (In–Memory Streams),
3.Канальные потоки (Pipe Streams).
операнд А определяется как строка. Если это нулевая строка, создается поток памяти. Если это название канала (например, "\pipe\mypipe"), создается канальный поток. Иначе, создается поток ввода/вывода и операнд А рассматривается в качестве спецификации файла. Если путь к файлу не включен в его спецификацию, предполагается, что используется директория отчета о проекте Project’s Report. Проекты обсуждаются в главе 1 этого руководства.
Если операнд В используется, он вычисляется численно и используется в качестве номера потока данных, для дальнейшего обращения по нему блоков READ, WRITE и CLOSE. Значение по умолчанию 1.
Если используется операнд С, любая ошибка, возникающая в процессе инициализации, вынуждает активную заявку направляться в блок с указанным в нем номером.
В любом случае, если обнаружена ошибка, ее код сохраняется внутри. Блок OPEN может использоваться для извлечения кода ошибки.
165
Глава 4 (4.16) содержит полное описание потоков данных, включая описание кодов ошибок.
Условия Блокировки
Моделирование блокируется на время инициализации потока данных.
Режим отказа
Заявке никогда не будет отказано в доступе в блок OPEN.
Родственные блоки
∙CLOSE – Закрывает поток данных.
∙READ – Извлекает текстовую строку из потока данных.
∙WRITE – Записывает текстовую строку в потока данных.
∙SEEK – устанавливает указатель текущей позиции потока данных.
PLUS (СЛОЖЕНИЕ)
Блок PLUS вычисляет выражение и, по возможности, помещает результат в Параметр.
PLUS A,B
Операнды
A – Выражение. Обязательный. В качестве операндов должны быть указаны Name,
Number, String, ParenthesizedExpression, SNA или SNA*Parameter.
B – Номер параметра. Параметра, в который записывается результат. Необязательный. В
качестве операндов должны быть указаны Null, Name, PosInteger, ParenthesizedExpression,
SNA, или SNA*Parameter.
Пример
PLUS (normal(2,100,2)+100.26),Result_Parm
Алгоритм работы
Когда заявка поступает в блок PLUS, вычисляется операнд А.
Если операнд В определен, он вычисляется численно, округляется и используется для идентификации параметра активной заявки. Если такого параметра не существует, он создается. Затем, результат, вычисленный в операнде А, помещается в него.
Процедуры сложения PLUS, если возвращаемое значение явно не задано, возвращают значение 0.
Режим отказа
Заявке никогда не будет отказано в доступе в блок PLUS.
Вспомогательные окна
∙Expressions Window (Окно выражений) – Просмотр значения выражений в реальном времени.
∙Plot Window (Окно сценариев) – Просмотр содержимого более 8 выражений в реальном времени.
PREEMPT (ПРЕРЫВАНИЕ)
Блок PREEMPT смещает занимающую устройство заявку.
PREEMPT A,B,C,D,E
Операнды
A – Номер или имя устройства. Обязательный. В качестве операндов должны быть
указаны Name, PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.
B – Приоритетный режим. PR для приоритетного режима или режима прерываний, если не указано ничего. Необязательный. В качестве операндов должны быть указаны PR или
Null.
C – Имя или номер блока. Новое место назначения для заявки, занимавшей устройство. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger,
ParenthesizedExpression, SNA, или SNA*Parameter.
166
D – Номер параметра. Параметр прерванной заявки для получения оставшегося времени обработки прерванной заявки, если прерванная заявка удаляется из FEC. Необязательный.
Вкачестве операндов должны быть указаны Null, Name, PosInteger,
ParenthesizedExpression, SNA, или SNA*Parameter.
E – Режим удаления (REmove Mode). Удаляет прерванную заявку из группы претендующих на устройство заявок. Необязательный. В качестве операндов должны быть указаны RE, или Null. При использовании RE, необходимо указать место назначения в операнде C.
Примеры
PREEMPT Teller1
Это простейший способ использования блока PREEMPT. Когда заявка поступает в блок PREEMPT, ей дается право занять устройство до тех пор, пока его работа не будет прервана. Если заявка должна освободить устройство, ей не разрешается постоянно храниться в FEC, и ее передвижение по системе моделирования ограничивается.
PREEMPT Teller1,,Teller2,101,RE
В этом примере Блок PREEMPT функционирует в режиме прерываний, потому как операнд В пропущен. Это означает, что заявка может войти в блок и занять устройство, если оно еще не занято другой заявкой. Приоритеты заявок игнорируются. Когда заявка прервана, все оставшееся время в Блоке ADVANCE записывается в параметр 101 прерванной заявки. Прерванная заявка удаляется из группы претендующих на устройство заявок и отправляется в Блок помеченный как Teller2. Ошибка зафиксируется, если такая Заявка позже попытается RELEASE (ОСВОБОДИТЬ) или RETURN (ВЕРНУТЬСЯ) на устройство Teller1, не заняв его снова.
PREEMPT Teller1,PR,Teller2
В этом примере блок PREEMPT работает в приоритетном режиме. Это означает, что заявка может войти в блок и занять устройство, если устройство уже не занято заявкой с равным или более высоким приоритетом. Любая прерванная заявка не удаляется из группы претендующих на устройство заявок. Это означает, что такая заявка долее не может находиться в FEC или покидать блоки ASSEMBLE, GATHER или MATCH. С учетом этого ограничения, прерванные заявки могут продолжить пребывание в системе моделирования и, в этом случае, будут отправлены в блок Teller2. Такие заявки, за которыми было оставлено право претендовать на устройство Teller1, обычно, вновь занимают его спустя некоторое время. Прерванные заявки могут ВЕРНУТЬСЯ (RETURN) на устройство или ОСВОБОДИТЬ (RELEASE), даже если они его не занимают. Заявки удаляются из группы претендующих на устройство посредством удаления их из цепи прерывания устройства.
Алгоритм работы
Блок PREEMPT действует подобно блоку SEIZE, когда устройство свободно. В противном случае, блок PREEMPT работает либо в приоритетном режиме, либо в режиме прерывания. Это определяется операндом В.
Вприоритетном режиме, только заявка с более высоким приоритетом может вытеснить занимающую устройство заявку. Если же приоритета заявки для этого недостаточно, она помещается в очередь ожидания устройства (очередь прерванной обработки, Delay Chain) в порядке значения приоритета.
Врежиме прерывания, если работа устройство уже прервана, активная заявка помещается в очередь неоконченной обработки (Pending Chain). Заявкам в очереди неоконченной обработки предоставляется право занять устройство перед прерванными заявками или заявками в очереди прерванной обработки.
Операнды С и Е определяют, какое действие необходимо произвести с заявкой, занимающей устройство в данный момент, обработка которой будет прервана. Прерванные заявки не разрешено оставаться в FEC. Прерванные заявки, у которых еще не закончилось время в блоке ADVANCE, могут быть помещены в FEC автоматически,
167
пропустив операнды С и D. В противном случае, если вы самостоятельно решите поместить заявку в FEC, для возобновления неоконченного времени необходимо использовать операнд D и, в конечном счете, отправить прерванную заявку в блок
ADVANCE.
Прерванная заявка может быть удалена уз группы претендующих на устройство заявок (т.е., из всех очередей на устройство) при помощи использования параметра RE операнда Е. Опция RE удаляет ограничения, наложенные на прерванную заявку после ее прерывания на устройстве, и делает любые последующие попытки ВЕРНУТЬСЯ (RETURN) на устройство или ОСВОБОДИТЬ (RELEASE) устройство условием ошибки и остановки.
Прерванная заявка не может существовать в FEC. Более детальное обсуждение прерываний можно найти в разделе 9.4. Все вновь прерванные заявки в блоке ADVANCE, находящиеся в FEC, удаляются из FEC с сохранением значения времени оставшейся обработки. Если операнд D используется, время оставшейся обработки также сохраняется в параметре заявки. Если такого параметра не существует, он создается. Время оставшейся обработки используется для перенаправления заявки в FEС, когда она снова получит право занять все устройства, на которые претендует. В противном случае, можно передать прерванную заявку новому блоку при помощи операнда С.
Прерванная заявка оставляется в группе претендующих на устройство, даже если она была перемещена при помощи операнда С, до тех пор, пока в операнде Е будет выставлен параметр RE. Если прерванная заявка, которая до сих пор претендует на устройство, попытается войти в блок TERMINATE, это приведет к аварийной остановке. Такие заявки должны поступить в блоки RELEASE или RETURN до того, как им будет позволено завершиться (TERMINATE).
В противном случае, если вы намереваетесь ЗАВЕРШИТЬ (TERMINATE) прерванную заявку, можно использовать параметр RE, чтобы удостовериться, что она случайно вновь возобновила свое право занять устройство перед завершением. Такая заявка не может ОСВОБОДИТЬ (RELEASE) или ВЕРНУТЬСЯ (RETURN) на устройство.
Когда заявка перемещается при помощи операнда С, она передается в новый блок, удаляется из очередей:
∙FEC (Future Events Chain) (цепи будущих событий)
∙PENDING (INTERRUPT–MODE PREEMPT) CHAINS ( очереди неоконченной обработки в приоритетном режиме прерывания)
∙DELAY (MAJOR PRIORITY) CHAINS (очереди прерванной по старшинству приоритетов обработки)
∙USER CHAINS (накопительной системы)
∙RETRY CHAINS (повторной очереди)
Ине удаляется из очередей:
∙CEC (Current Events Chain) (цепи текущих событий)
∙INTERRUPT (preempted) CHAINS (очереди приоритетных прерываний)
∙GROUP CHAINS (общей очереди)
Когда заявка изымается из места ее текущего пребывания с использованием альтернативного места назначения, она удаляется из блокирующих условий, но приоритетное прерывание обслуживания разблокировано не будет.
Когда операнд С не используется, прерванная заявка изымается из FEC и будет возвращена туда автоматически. Прерванные заявки, которые не были перемещены при помощи операнда С, ожидают поступления в блоки RELEASE) или RETURN для возобновления права занимать устройство. Если такая заявка прибывает в блоки RELEASE или RETURN до восстановления прав на устройство, заявка удаляется из группы претендующих на устройство заявок. Условия для фиксации ошибки отсутствуют. Заявка может быть прервана на произвольном количестве устройств и продолжать находиться в системе моделирования.
168
Тем не менее, существуют два ограничения:
∙Ей будет отказано в доступе в Блок ADVANCE с положительным значением времени
∙Ей не будет позволено покинуть Блоки ASSEMBLE, GATHER или MATCH до тех
пор, пока все ее приоритетные прерывания обслуживания не будут разблокированы.
Работа устройства может быть прервана произвольное количество раз. Тем не менее, однажды прерванная заявка не сможет вновь пытаться занять устройство, на котором она была прервана. Заявка может быть прервана на произвольном количестве устройств.
Особые ограничения
∙Если на E установлен параметр RE, C должно использоваться.
∙Заявка не может прерывать саму себя.
Режим отказа
Заявке будет отказано в поступлении в блок PREEMPT, если в режиме прерываний устройство в текущий момент было прервано. Такие заявки помещаются в конец очередь неоконченной обработки устройства.
Заявке будет отказано в поступлении в блок PREEMPT, если в приоритетном режиме устройство в текущий момент занято заявкой с равным или более высоким приоритетом, чем у активной заявки. Активная заявка помещается в порядке приоритета в очередь прерванной обработки устройства.
Заявке будет отказано в поступлении в блок PREEMPT, если устройство находится в недоступном состоянии. Такие заявки помещаются в очередь Прерванной обработки устройства в порядке приоритета, в соответствии с дисциплиной FIFO внутри приоритетов.
Родственные блоки
∙DISPLACE – Перемещает любую заявку.
∙FAVAIL – Устанавливает устройство в доступное состояние.
∙FUNAVAIL – Устанавливает устройство в недоступное состояние.
∙RELEASE – отказывает в праве занимать устройства или удаляет заявку из группы претендующих на устройство заявок
∙RETURN – отказывает в праве занимать устройства или удаляет заявку из группы претендующих на устройство заявок
∙SEIZE – Запрашивает разрешение или ждет возможности занять устройство.
Родственные SNA
∙FEntnum – Занятость устройства. Если устройство Entnum в данный момент занято, FEntnum возвращает 1. В противном случае, FEntnum возвращает 0.
∙FCEntnum – Количество итераций работы устройства. Сколько раз устройство Entnum было занято заявкой.
∙FIEntnum – Прерывания работы устройства Entnum. Если работа устройства Entnum в данный момент была прервана, FIEntnum возвращает 1. В противном случае, FIEntnum возвращает 0.
∙FREntnum – Использование устройства. Время, в течение которого устройство Entnum было занято. FREntnum выражается в долях тысячи и, следовательно, возвращает вещественное значение от 0 до 1000, включительно.
∙FTEntnum – Среднее время занятости (удерживания) устройства. Среднее время, в течение которого устройство Entnum бло занято заявкой.
∙FVEntnum – Доступность устройства. FVEntnum возвращает 1, если устройство Entnum доступно, 0 в противном случае.
Вспомогательные окна
∙Facilities Window (Окно устройств) – Возможность просмотра изменения состояния устройств в реальном времени
169
∙CEC Snapshot (Текущее состояние CEC) – Изображение состояния цепи текущих событий в моделировании.
∙FEC Snapshot (Текущее состояние FEC) – Изображение состояния цепи будущих событий в моделировании.
PRIORITY (ПРИОРИТЕТЫ)
Блок PRIORITY устанавливает значение приоритета активной заявки.
PRIORITY A,B
Операнды
A – Новое значение приоритета. Обязательный. В качестве операндов должны быть
указаны Name, integer, String, ParenthesizedExpression, SNA, или SNA*Parameter.
B – Буферная опция. Помещает активную заявку следом за равными ей по приоритету Заявками в CEC. Необязательный. В качестве операндов должны быть указаны BU или
Null.
Пример
PRIORITY 10
В этом примере любой поступившей в блок заявке устанавливается приоритет 10.
Алгоритм работы
Когда заявка поступает в блок PRIORITY, операнд А численно вычисляется, округляется и устанавливается в качестве приоритета для активной заявки.
Заявка перенаправляется к следующему блоку и помещается в СЕС в соответствии с новым значением приоритета. Если в операнда В используется опция BU, заявка помещается следом за равными ей по приоритету заявкам. В противном случае, она помещается перед ними.
Приоритеты заявок – это вещественные числа. Когда заявка при создании заявки приоритет не задается явно, по умолчанию, ей присваивается приоритет 0. Среда GPSS работает наиболее эффективно, когда используемые в моделировании приоритеты задаются последовательно. Например, используются числа 0, 1, 2, вместо – 200, 0, 23.
Режим отказа
Заявке никогда не будет отказано в доступе в блок PRIORITY.
Родственные SNA
∙ PR – Приоритет заявки. Значение приоритета активной заявки.
Вспомогательные окна
∙Transaction Snapshot (Текущее состояние заявки) – Изображение состояния заявки в моделировании.
∙CEC Snapshot (Текущее состояние CEC) – Изображение состояния цепи текущих событий в моделировании.
∙FEC Snapshot (Текущее состояние FEC) – Изображение состояния цепи будущих событий в моделировании.
QUEUE (ОЧЕРЕДЬ)
Блок QUEUE обновляет статистику использования очереди, отражая увеличение ее содержания.
QUEUE A,B
Операнды
A – Номер или имя очереди. Обязательный. В качестве операндов должны быть указаны
Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.
B – Количество единиц, на которое необходимо увеличит содержимое очереди. Значение по умолчанию 1. Необязательный. В качестве операндов должны быть указаны Null,
Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.
170
