Базовая модель производственного модуля
В примере 1 была рассмотрена простейшая модель производственного модуля. Ее основные недостатки – малая адекватность и невозможность использования для исследования реальных производственных объектов.
Первым рассмотренным способом ввода транзактов в модель является использование блоков generate. Существует также второй способ ввода транзактов. Этот метод требует использования блока split (расщепить).
Блок split
Как только транзакт, уже находящийся в модели, входит в блок split, происходит ввод в модель нескольких дополнительных транзактов. Число дополнительных транзактов задается операндом «А». Транзакт-родитель из блока split переходит в очередной последующий блок. Вновь созданные транзакты переходят к блоку, символическая метка которого записана в операнде «В».
Например: split 9, met1
Данный блок создает дополнительно 9 транзактов и направляет их в блок с меткой met1.
Блоки link и unlink
При использовании в модели блока расщепление поступившей партии на отдельные заготовки возникает необходимость моделирования накопителя. Использование очередей для этой цели неудобно, так как транзакты во время ожидания в очереди находятся в активном состоянии и сильно замедляют процесс моделирования, поэтому удобнее воспользоваться для этой цели так называемыми «цепочками пользователя» (ЦП). При помещении в ЦП транзакты удаляется из списка активных событий и сохраняются в пассивном режиме до момента обращения к ним. Цепочка пользователя однозначно определяется парой блоков link (поместить в ЦП) и unlink (удалить из ЦП).
Операнд «А» блока link содержит имя ЦП, операнд «В» – порядок формирования очереди, в операнде «С» может быть задана метка перехода.
Например: link bxp1,fifo,next1
Все транзакты, попадающие в блок link, помещаются в цепочку пользователя с именем bxp1. Порядок формирования очереди: fifo – первый пришел, первый обслужен. Возможны и другие способы построения очереди, например, lifo – последний пришел, первый обслужен. Данный способ можно использовать при моделировании складывания заготовок одна на другую. Операнд «С» – next1 задает следующий режим работы: при входе в «пустую» ЦП транзакт, минуя ее, направляется к блоку с указанной в операнде «С» меткой.
Вывод транзактов из ЦП осуществляется при помощи блока unlink. Операнды блока задают: «А» – имя ЦП, «В» – метку блока, в которой следует поместить удаляемый транзакт, «С» – количество удаляемых на ЦП транзактов.
Блок assemble
Блок assemble (собрать) позволяет организовать сбор готовых деталей в транспортные партии. Операнд «А» содержит число собираемых в партию транзактов. На выходе блока assemble формируется один транзакт-партия. При этом необходимо учитывать, что если транзакты создавались блоком split, то операнд «А» блока assemble должен быть равен операнду «А»+1 блока split или меньше и кратен ему.
Пример 2. Модель обрабатывающего производственного модуля с накопителем и транспортными партиями
Необходимо построить модель обрабатывающего производственного модуля. Заготовки на обработку поступают партиями по 10 штук с интервалом 1 ± 0,5 часа и помещаются в ориентирующий накопитель кассетного типа. Время загрузки – выгрузки составляет 25 ± 10 с. Время обработки 6 ± 1 мин.
Промоделировать работу модуля в течение 8 часов. Исследовать возможность сокращения времени обработки до 5 ± 2 мин. Провести прогон модели в установившемся режиме с ненулевыми условиями.
Блок-схема модели приведена на рис. 4.1. Ввод партий заготовок осуществляется блоком generate. Затем происходит разделение на отдельные заготовки. В блоке split создаются 9 транзактов-копий, которые вместе с исходным транзактом вводятся блоком link в цепочку пользователя с именем bxp1. Первый транзакт из партии переходит на обработку в блок с меткой next1.
Последовательность загрузки, обработки, выгрузки реализована с помощью соответствующих блоков seize, advance, release . К моменту освобождения робота после операции выгрузки необходимо подготовить для загрузки очередную заготовку. Вывод заготовки-транзакта из накопителя – ЦП осуществляется блоком unlink, который играет роль защелки на выходе накопителя.
Полная распечатка текста моделирующей программы приведена на рис. 4.2.
Рассмотрим использующиеся управляющие карты, первой картой start 1 осуществляется первый прогон модели и вывод выходной статистики. Карта clear возвращает модель в исходное состояние. Для исследования изменения времени обработки заготовки, воспользуемся средством переопределения блоков. Блок advance с меткой met1 повторно записывается с новыми значениями операндов «А» и «В» после карты clear. Повторный запуск модели осуществляется очередной картой start. Для получения статистики о работе в установившемся режиме, необходимо исключить влияние переходного процесса. Для этой цели используется карта reset. Она сбрасывает всю накопленную статистику, оставляя модель в том состоянии, в котором она была остановлена. Таким образом, третий прогон модели осуществляется с начальных условий соответствующих установившемуся режиму работы.
Результаты моделирования приведены на рис. 4.3–4.5. Уменьшение времени обработки привело к увеличению числа обработанных деталей, снижению времени пролеживания, уменьшению среднего и максимального содержимого накопителя.
Результаты прогона в установившемся режиме показывают более высокие значения коэффициента использования оборудования и увеличение выхода готовых деталей (с 69 до 72 штук).
Данная модель может служить в качестве базовой при исследовании различных режимов работы модуля, так как позволяет использовать различные дополнительные подпрограммы.
Так, например, на рис. 4.6 приведена блок-схема модели производственного модуля с учетом сбора готовых деталей в транспортные партии по 25 штук. Для этой цели используется блок assemble .
Рис. 4.1. Блок-схема модели
; GPSS/PC Program File TEST.GPS. (V 2, # 37349) 10-03-2002 11:18:46
10 *
20 * ЛАБОРАТОРНАЯ РАБОТА № 2
30 * ИССЛЕДОВАНИЕ РАБОТЫ ПРОИЗВОДСТВЕННОГО МОДУЛЯ
40 *
50 * ВЫПОЛНИЛ:...........
60 * ГРУППА:.............
70 * ПРИНЯЛ:.............
80 *
90 GENERATE 3600,1800 ;Ввод транзакта – заготовки
100 SPLIT 9,BXP1 ;Разделение на заготовки
110 BXP1 LINK BXP1,FIFO,NEXT1 ;накопитель
120 NEXT1 SEIZE ZRM1 ;Занять робот
130 ADVANCE 25,10 ;Загрузка
140 SEIZE TST1 ;Занять станок
150 RELEASE ZRM1 ;Освободить робот
160 MET1 ADVANCE 360,60 ;Обработка ДЕТАЛИ
170 SEIZE ZRM1 ;Занять робот
180 RELEASE TST1 ;Освободить станок
190 ADVANCE 25,10 ;Выгрузка
200 UNLINK BXP1,NEXT1,1 ;Подготовить деталь
210 RELEASE ZRM1 ;Освободить робот
220 TERMINATE ;Вывод из модели
230 *
240 * ВТОРОЙ СЕГМЕНТ МОДЕЛИ
250 * ТАЙМЕР
260 *
270 GENERATE 28800 ;ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ
280 TERMINATE 1 ;ЧЕРЕЗ 8 ЧАСОВ
290 *
300 * CONTROL CARDS
310 *
320 START 1 ;1 ПРОГОН МОДЕЛИ
330 CLEAR ;УСТАНОВКА В ИСХОДНОЕ СОСТОЯНИЕ
340 MET1 ADVANCE 300,120 ;ПЕРЕОПРЕДЕЛЕНИЕ БЛОКОВ
350 START 1 ;2 ПРОГОН МОДЕЛИ
360 RESET ;СБРОС СТАТИСТИКИ
370 START 1 ;3 ПРОГОН МОДЕЛИ
Рис. 4.2. Текст моделирующей программы
START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY
0 28800 15 2 0 277888
LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY
90 1 GENERATE 7 0 0
100 2 SPLIT 7 0 0
110 BXP1 LINK 70 10 0
120 NEXT1 SEIZE 60 0 0
130 5 ADVANCE 60 0 0
140 6 SEIZE 60 0 0
150 7 RELEASE 60 0 0
160 MET1 ADVANCE 60 1 0
170 9 SEIZE 59 0 0
180 10 RELEASE 59 0 0
190 11 ADVANCE 59 0 0
200 12 UNLINK 59 0 0
210 13 RELEASE 59 0 0
220 14 TERMINATE 59 0 0
270 15 GENERATE 1 0 0
280 16 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY
ZRM1 119 0.104 25.19 1 0 0 0 0 0
TST1 60 0.740 355.27 1 62 0 0 0 0
USER_CHAIN CHAIN_SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME
3 10 0 6.94 69 17 2897.46
Рис. 4.3
START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY
0 28800 15 2 0 327712
LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY
90 1 GENERATE 7 0 0
100 2 SPLIT 7 0 0
110 BXP1 LINK 70 0 0
120 NEXT1 SEIZE 70 0 0
130 5 ADVANCE 70 0 0
140 6 SEIZE 70 0 0
150 7 RELEASE 70 0 0
160 8 ADVANCE 70 1 0
170 9 SEIZE 69 0 0
180 10 RELEASE 69 0 0
190 11 ADVANCE 69 0 0
200 12 UNLINK 69 0 0
210 13 RELEASE 69 0 0
220 14 TERMINATE 69 0 0
270 15 GENERATE 1 0 0
280 16 TERMINATE 1 0 0
340 MET1 ADVANCE 0 0 0
FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY
ZRM1 139 0.122 25.38 1 0 0 0 0 0
TST1 70 0.713 293.64 1 72 0 0 0 0
USER_CHAIN CHAIN_SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME
3 0 0 5.73 68 17 3260.90
Рис. 4.4
START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY
29180 57600 15 2 0 327376
LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY
90 1 GENERATE 8 0 0
100 2 SPLIT 8 0 0
110 BXP1 LINK 80 8 0
120 NEXT1 SEIZE 72 0 0
130 5 ADVANCE 72 0 0
140 6 SEIZE 72 0 0
150 7 RELEASE 72 0 0
160 8 ADVANCE 73 1 0
170 9 SEIZE 72 0 0
180 10 RELEASE 72 0 0
190 11 ADVANCE 72 0 0
200 12 UNLINK 72 0 0
210 13 RELEASE 72 0 0
220 14 TERMINATE 72 0 0
270 15 GENERATE 1 0 0
280 16 TERMINATE 1 0 0
340 MET1 ADVANCE 0 0 0
FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY
ZRM1 144 0.123 24.29 1 0 0 0 0 0
TST1 73 0.786 306.34 1 145 0 0 0 0
USER_CHAIN CHAIN_SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME
3 8 0 5.38 75 14 2040.15
Рис. 4.5
