Базовая модель производственного модуля 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Базовая модель производственного модуля

Поиск

3. ОСНОВНЫЕ ОБЪЕКТЫ GPSS

В данном разделе рассмотрены основные блоки системы GPSS [6, 7]. Работа блоков системы, методы построения моделей и организация экспериментов с ними показана на ряде конкретных примеров.

Все блоки GPSS определяются наименованием типа блока и операндами А, В, С, Д, Е, задающими выполняемые функции. Кроме того, каждый блок может иметь символический адрес, записываемый в поле метки блока. Поле метки расположено со 2 по 5 позиции экрана, поле операции (наименование блока) с 8 по 18, поле операндов с 19 позиции и до первого пробела в тексте. Комментарии, как правило, размещаются после 31 позиции.

 

3.1. Блок generate

 

generate – блок, через который транзакты могут быть введены в модель. Операнд «А» блока определяет среднее время между последовательными приходами транзактов. Операнд «В» задает половину поля допуска интервалов времени. Таким образом, блок generate   60,50 задает последовательность ввода транзактов с интервалами 60 ± 50 единиц модельного времени. Действительное время ввода транзакта в модель планируется интерпретатором GPSS путем розыгрыша случайного числа в соответствии с заданным распределением вероятности появления интервалов. Следует отметить, что задание временных интервалов таким образом предполагает равномерное распределение точек внутри поля допуска. Для получения более сложных зависимостей (распределения Пуассона, экспоненциального распределения и др.) необходимо в качестве операндов использовать специальную функцию. Кроме рассмотренных операндов «А» и «В» у блока generate имеются следующие возможности:

операнд «С» – устанавливает «начальный интервал» – момент времени прихода первого транзакта;

операнд «Д» – ограничитель максимального числа создаваемых транзактов;

операнд «Е» – уровень приоритета транзактов создаваемых в данном блоке.

При кодировании блоков операнды разделяется запятыми.

Например: generate 100,23,40,10,3

Данный блок создает транзакты в интервалы модельного времени 100 ± 20 единиц. Первый транзакт этой последовательности будет введен в момент соответствующий 40 единицам модельного времени. Всего будет создано 10 транзактов с приоритетом равным 3.

При необходимости ряд параметров может быть опущен. Разделительные запятые при этом сохраняются. Считывание операндов любого блока ведется до первого пробела.

Например: generate , , ,5

Данный блок сразу же по началу моделирования создает 5 транзактов и вводит их в модель.

 

3.2. Блок terminate

 

terminate – блок, удаляющий транзакты из модели. Блоки terminate всегда позволяют выйти из модели всем транзактам, которые пытаются это сделать. В модели может содержаться любое количество блоков terminate .

Блок terminate может иметь операнд «А» как правило равный 1. Операнд «А» является указателем уменьшения счетчика завершений модели. При достижении содержимым счетчика нуля моделирование задерживается. Блок terminate, не имеющий операнда «А», содержимое счетчика завершений не изменяет. Число блоков terminate в модели может быть любым, однако счетчик завершений только один. Начальное значение его задается картой start, в операнд «А» которой заносится число завершений.

Например:

Вариант 1                generate 3600

                                 terminate   1

                                 start             1

 

Вариант 2                generate 360

                                 terminatE  1

                                  start              10

 

Обе последовательности блоков останавливают модель в момент времени 3600 единиц. При этом первая реализует приход транзакта-таймера через 3600, а вторая отсчитывает 10 таких транзактов с интервалом в 360.


3.3. Блок advance

 

Блок advance существует для реализации задержки транзактов во времени. Информация, необходимая для описания соответствующего времени обслуживания задается операндами «А» и «В». Как и в блоке generate операнд «А» определяет среднее время задержки транзакта, а операнд «В» – половину поля допуска интервалов времени задержки.

Блоки advance могут размещаться в любом месте модели, где необходимо организовать временную задержку. Вычисленный интервал задержки может быть любым положительным числом, в том числе и нулем.

 

3.4. Блоки seize и release

 

Организация обслуживания на одноканальном обслуживающем аппарате моделируется блоками seize (занять) и release (освободить). Пара этих блоков реализует следующие действия: ожидание в очереди на обслуживании, если это необходимо; занятие обслуживающего аппарата, когда подходит очередь; сохранение состояния занятости обслуживающего аппарата в течение времени обслуживания; освобождение обслуживающего аппарата по окончании обслуживания. Идентификация используемых в модели обслуживающих аппаратов производится по символическому имени. Все символические имена в GPSS/PC должны содержать от трех до пяти символов, причем первые три символа обязательно должны быть буквенными.

 

Например: seize  tst11

 

Данный блок реализует занятие транзактом устройства с именем tst11. При использовании в модели блоков seize, release необходимо учитывать, что транзакт, пытающийся освободить данное устройство, должен был первоначально занять его. При несоблюдении этого выдается сообщение об ошибке. При использовании этих блоков в модели происходит автоматический сбор статистики о работе моделируемого обслуживающего аппарата.

 

3.5. Блоки queue и depart

 

Блоки queue и depart (встать в очередь и покинуть очередь) обеспечивают в модели возможность автоматического сбора данных, описывающих вынужденное ожидание, которое может происходить в различных точках модели. Операнд «А» блоков содержит имя конкретной очереди.

Применение блоков queue и depart не является обязательным для всех случаев возникновения очередей в модели, оно необходимо лишь для сбора статистики о той или иной очереди.

Теперь, когда мы познакомились с некоторыми блоками системы моделирования GPSS/PC, рассмотрим конкретный пример, поясняющий их работу.

3.6. Пример 1. Модель простейшего производственного модуля

 

Построить модель производственного модуля, работающего следующим образом. Заготовки с предыдущей операции поступают с интервалами времени 60 ± 50 с. Загрузка модуля осуществляется специальным роботом, время загрузки составляет 10 ± 5 с. Время обработки на станке 60 ± 10 с. Удаление готовой детали происходит автоматически по окончании обработки, без участия робота.

Необходимо промоделировать работу производственного модуля в течение 8 часов модельного времени, оценить коэффициенты загрузки оборудования, определить число обработанных за это время деталей, исследовать возможность возникновения очереди на входе модуля.

Блок-схема моделирующей программы представлена на рис.3.1.

Транзакты-заготовки вводятся в модель блоком generate с параметрами 60, 50. Поскольку необходимо исследовать возникновение очереди на входе обрабатывающего модуля, используем блок queue с именем mod1. Занятие транзактами загрузочного робота моделируется использованием блока seize  zrm1. После занятия робота транзакт покидает очередь (блок depart) и задерживается на время операции загрузки в блоке advance 10, 5. Событие занятия станка опережает событие освобождения загрузочного робота. Этим реализуется следующая дисциплина обслуживания – загрузка очередной заготовки не должна начинаться раньше, чем предыдущая деталь покинет станок. Время обработки на станке моделируется блоком advance  60, 10. После этого моделируется событие освобождения станка и транзакт-деталь выводится из модели блоком terminate .

Для задания времени моделирования используется второй сегмент модели – таймер. Он состоит из блока generate, создающего транзакт-таймер в момент времени 28800 с и блока terminate с операндом «А» = 1. Счетчик завершений задается равным «1» картой start. Распечатка текста моделирующей программы приведена на рис. 3.2.

Результаты моделирования представлены на рис.3.3. Выходные данные [8]  начинается результатами модельного времени и накопленной статистикой по списку блоков модели. Так, например, в блок №8 на момент окончания моделирования вошло 477 транзактов, причем один из них находился в это время на обработке, о чем свидетельствует текущее содержимое блока №8 равное 1. По статистике списка блоков можно определить количество изготовленных деталей, оно составило 476 штук. Всего за время моделирования было введено 485 заготовок. Одна из них находится в очереди на обслуживание, одна на обработке и одна – в схвате робота ожидает установки на станок.

 


 


Рис. 3.1. Блок-схема моделирующей программы

; GPSS/PC Program File TEST.GPS. (V 2, # 37349) 10-03-2002 11:18:46

10 *

20 *   МОДЕЛЬ ПРОИЗВОДСТВЕННОГО МОДУЛЯ

30 *

40 *   ПЕРВЫЙ СЕГМЕНТ МОДЕЛИ

50 *   ДВИЖЕНИЕ ЗАГОТОВОК

60 *

70     GENERATE 60,50          ;ВВОД ЗАГОТОВКИ

80     QUEUE   MOD1           ;ОЧЕРЕДЬ

90      SEIZE   ZRM1           ;ЗАНЯТЬ РОБОТ

100    DEPART  MOD1           ;ВЫХОД ИЗ ОЧЕРЕДИ

110    ADVANCE 10,5           ;ЗАГРУЗКА

120    SEIZE   TST1           ;Занять станок

130    RELEASE ZRM1           ;Освободить робот

140    ADVANCE 60,10          ;Обработка ЗАГОТОВКИ

150    RELEASE TST1           ;Освободить станок

160    TERMINATE                   ;Вывод из модели

170 *

180 *  ВТОРОЙ СЕГМЕНТ МОДЕЛИ

190 *  ТАЙМЕР

200 *

210    GENERATE 28800          ;ВРЕМЯ МОДЕЛИРОВАНИЯ

220    TERMINATE 1              ;8 ЧАСОВ

230 *

240 *  CONTROL CARDS

250 *

260    START   1

 

Рис. 3.2. Текст моделирующей программы

 

GPSS/PC Report file REPORT.GPS. (V 2, # 37349) 10-14-2002 11:46:02 page 1

 

START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY

       0   28800 11      2     0   278400

 

LINE  LOC     BLOCK_TYPE  ENTRY_COUNT CURRENT_COUNT RETRY

70    1       GENERATE         485         0    0

80    2       QUEUE            485         7    0

90    3       SEIZE            478         0    0

100   4       DEPART           478         0    0

110   5       ADVANCE          478         1    0

120   6       SEIZE            477         0      0

130   7       RELEASE          477         0    0

140   8       ADVANCE          477         1    0

150   9       RELEASE          476         0    0

160   10         TERMINATE        476         0    0

210   11      GENERATE           1         0    0

220   12      TERMINATE          1         0    0

 

FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY

 ZRM1     478 0.947  57.12 1  479 0 0 0 7

 TST1     477 0.987  59.63 1  478 0 0 0 0

 

QUEUE    MAX CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

 MOD1     12 7 485   36 4.77 283.53 306.26 0

 

 

Рис. 3.3. Результаты моделирования


Статистика по обслуживающим аппаратам содержит имя аппарата, количество обработанных деталей, среднее время обслуживания транзакта и коэффициенты использования. Так для загрузочного робота (zrm1) число обслуженных транзактов-деталей составило 478 штук, среднее время обслуживания

57,12 с, коэффициент загрузки 94,7%. Аналогично для станка: 477, 59,63 и 98,7%. Выходная статистика об очередях содержит имя очереди mod1; максимальное содержимое – 12 деталей; среднее содержимое – 4,77 штуки; число входов в очередь – 485 раз; из них с нулевым временем ожидания – 36 штук. Среднее время нахождения в очереди (время пролеживания заготовок) составило 283,53 с. То же без учета нулевых входов в очередь – 306,26 с. Текущее содержимое очереди – 7 заготовок.

Полученная статистика позволяет сделать следующие выводы о работе модуля.

При данных интервалах обработки модуль справляется с поступающим потоком заготовок. Величина очереди за 8 часов работы не превысила 12 заготовок, следовательно емкость промежуточного накопителя может быть выбрана равной 12–13 штук заготовок. Коэффициенты загрузки оборудования достаточно высоки, однако увеличение времени обслуживания загрузочным роботом говорит о задержках заготовок на этой стадии.

 

 

 

В примере 1 была рассмотрена простейшая модель производственного модуля. Ее основные недостатки – малая адекватность и невозможность использования для исследования реальных производственных объектов.

Первым рассмотренным способом ввода транзактов в модель является использование блоков generate. Существует также второй способ ввода транзактов. Этот метод требует использования блока split (расщепить).

 

4.1. Блок split

 

Как только транзакт, уже находящийся в модели, входит в блок split, происходит ввод в модель нескольких дополнительных транзактов. Число дополнительных транзактов задается операндом «А». Транзакт-родитель из блока split переходит в очередной последующий блок. Вновь созданные транзакты переходят к блоку, символическая метка которого записана в операнде «В».

 

Например: split 9, met1

 

Данный блок создает дополнительно 9 транзактов и направляет их в блок с меткой met1.


4.2. Блоки link и unlink

 

При использовании в модели блока расщепление поступившей партии на отдельные заготовки возникает необходимость моделирования накопителя. Использование очередей для этой цели неудобно, так как транзакты во время ожидания в очереди находятся в активном состоянии и сильно замедляют процесс моделирования, поэтому удобнее воспользоваться для этой цели так называемыми «цепочками пользователя» (ЦП). При помещении в ЦП транзакты удаляется из списка активных событий и сохраняются в пассивном режиме до момента обращения к ним. Цепочка пользователя однозначно определяется парой блоков link (поместить в ЦП) и unlink (удалить из ЦП).

Операнд «А» блока link содержит имя ЦП, операнд «В» – порядок формирования очереди, в операнде «С» может быть задана метка перехода.

 

Например: link bxp1,fifo,next1

 

Все транзакты, попадающие в блок link, помещаются в цепочку пользователя с именем bxp1. Порядок формирования очереди: fifo – первый пришел, первый обслужен. Возможны и другие способы построения очереди, например, lifo – последний пришел, первый обслужен. Данный способ можно использовать при моделировании складывания заготовок одна на другую. Операнд «С» – next1 задает следующий режим работы: при входе в «пустую» ЦП транзакт, минуя ее, направляется к блоку с указанной в операнде «С» меткой.

Вывод транзактов из ЦП осуществляется при помощи блока unlink. Операнды блока задают: «А» – имя ЦП, «В» – метку блока, в которой следует поместить удаляемый транзакт, «С» – количество удаляемых на ЦП транзактов.

 

4.3. Блок assemble

 

Блок assemble (собрать) позволяет организовать сбор готовых деталей в транспортные партии. Операнд «А» содержит число собираемых в партию транзактов. На выходе блока assemble формируется один транзакт-партия. При этом необходимо учитывать, что если транзакты создавались блоком split, то операнд «А» блока assemble должен быть равен операнду «А»+1 блока split или меньше и кратен ему.

 

4.4. Пример 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

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 81; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.)