ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Соловьев С. В., Цой Р. И., Гринкруг Л. С.,
1. Проектирование системы работы участка цеха Цель работы
Создать программное обеспечение, позволяющее моделировать работу участка цеха.
Задание
На обрабатывающий участок цеха поступают детали для автомобилей в среднем через 30 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до 4 % брака, второй - 60 мин и 8 % брака соответственно. Все бракованные детали возвращаются на повторную обработку на второй станок. Детали, бракованные дважды, считаются отходами. Вторичную обработку детали проходят также на двух станках в среднем за 100 мин на каждом станке. Причем первый станок обрабатывает имеющиеся в накопителе детали после первичной обработки, а второй станок подключается при образовании в накопителе больше трех деталей. Смоделировать работу участка при наличии 500 деталей.
Представим обрабатывающий участок цеха как систему массового обслуживания (СМО) и промоделируем ее работу с помощью языка GPSS.
Этапы выполнения работы 1. Разработка структурной схемы моделируемой системы.
Для анализа процесса функционирования участка цеха необходимо составить Q-схему системы массового обслуживания. Q-схема относится к непрерывно-стохастическим моделям, где непрерывность определяется реальным временем функционирования модели, а стохастичность - случайными характеристиками входных потоков. На рис. 1.1 представлена структурная схема (Q-схема) алгоритма работы обрабатывающего участка цеха. 2. Разработка концептуальной модели.
Входные параметры системы - детали, поступающие в систему в среднем через 50 мин.
Выходные параметры системы - готовые детали.
Рис. 1.1. Структурная схема СМО
Дополнительные параметры системы:
продолжительность первичной обработки деталей на первом станке - 40 мин, при этом имеет место 4 % брака;
продолжительность первичной обработки деталей на втором станке - 60 мин, при этом имеет место 8 % брака;
все бракованные детали возвращаются на повторную обработку на второй станок. Дважды бракованные детали считаются отходами;
продолжительность вторичной обработки на обоих станках - 100 мин, при этом первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела более 3 деталей;
количество обрабатывающих задания систем (ЭВМ) - 1;
участок моделирования - 500 деталей.
3. Блок-схема алгоритма моделирования системы (рис. 1.2).
Рис. 1.2
4. Моделирование на языке GPSS World.
a) листинг программы на языке GPSS:
SIMULATE;
NAK STORAGE 3;
GENERATE (Exponential(1,0,50)),,,500
GATE NU stanok1,STAN_2
STAN_1 SEIZE stanok1
ADVANCE (Exponential(1,0,40))
RELEASE Stanok1
TRANSFER .04,GOOD,BAD
STAN_2 SEIZE stanok2
ADVANCE (Exponential(1,0,60))
RELEASE Stanok2
TRANSFER .08,GOOD,BAD
BAD SEIZE stanok2
ADVANCE (Exponential(1,0,60))
RELEASE Stanok2
TRANSFER .08,GOOD,OTXOD
OTXOD TRANSFER ,OUT
GOOD QUEUE DETAILS
ENTER NAK,1
GATE SF NAK,STAN_3
GATE NU Stanok4,STAN_3
STAN_4 SEIZE Stanok4
LEAVE NAK,1
DEPART DETAILS
ADVANCE (Exponential(1,0,100))
RELEASE Stanok4
TRANSFER ,OUT
STAN_3 SEIZE Stanok3
LEAVE NAK,1
ADVANCE (Exponential(1,0,100))
RELEASE Stanok3
DEPART DETAILS
OUT TERMINATE 1
START 500
б) генерируемый программой отчет:
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 34305.774 31 4 1
NAME VALUE
BAD 11.000
DETAILS 10002.000
GOOD 16.000
NAK 10000.000
OTXOD 15.000
OUT 31.000
STANOK1 10001.000
STANOK2 10004.000
STANOK3 10003.000
STANOK4 10005.000
STAN_1 3.000
STAN_2 7.000
STAN_3 26.000
STAN_4 20.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 500 0 0
2 GATE 500 0 0
STAN_1 3 SEIZE 291 0 0
4 ADVANCE 291 0 0
5 RELEASE 291 0 0
6 TRANSFER 291 0 0
STAN_2 7 SEIZE 209 0 0
8 ADVANCE 209 0 0
9 RELEASE 209 0 0
10 TRANSFER 209 0 0
BAD 11 SEIZE 29 0 0
12 ADVANCE 29 0 0
13 RELEASE 29 0 0
14 TRANSFER 29 0 0
OTXOD 15 TRANSFER 6 0 0
GOOD 16 QUEUE 494 0 0
17 ENTER 494 0 0
18 GATE 494 0 0
19 GATE 465 0 0
STAN_4 20 SEIZE 159 0 0
21 LEAVE 159 0 0
22 DEPART 159 0 0
23 ADVANCE 159 0 0
24 RELEASE 159 0 0
25 TRANSFER 159 0 0
STAN_3 26 SEIZE 335 0 0
27 LEAVE 335 0 0
28 ADVANCE 335 0 0
29 RELEASE 335 0 0
30 DEPART 335 0 0
OUT 31 TERMINATE 500 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
STANOK1 291 0.336 39.598 1 0 0 0 0 0
STANOK3 335 0.995 101.910 1 0 0 0 0 0
STANOK2 238 0.383 55.210 1 0 0 0 0 0
STANOK4 159 0.492 106.141 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
DETAILS 111 0 494 9 55.587 3860.244 3931.878 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
NAK 3 3 0 3 494 1 2.842 0.947 0 0
В колонке ENTRY_COUNT (счетчик входов) показано число транзактов, прошедших за время моделирования через каждый блок модели. В колонке CURRENT_COUNT (счетчик текущих транзактов) показано число транзактов, задержанных в каждом блоке в момент останова модели. Колонка ENTRIES (входы) содержит число транзактов, поступивших в очередь. Столбец с заголовком AVE.TIME содержит среднее время прохождения транзакта через очередь. Соседний столбец AVE.(-0) -среднее время, рассчитанное для тех транзактов, которые прошли очередь за ненулевое время, т.е. которые находились в очереди.
Из отчета работы программы следует, что на участке обработки 500 деталей были обработаны все детали. Из них 291 деталь прошла через первый станок, 209 деталей прошло через второй станок, 29 деталей признаны бракованными и были отправлены на вторичную обработку, 6 деталей после повторной обработки были признаны браком и стали отходами. То есть через второй станок прошло 238 деталей. 494 детали признаны годными и были отправлены на вторичную обработку. Во время вторичной обработки через первый станок прошло 335 деталей, через второй - 159. При первичной обработке среднее время прохождения одной детали через первый станок составило 39,598 мин, через второй - 55,210 мин. При вторичной обработке среднее время прохождения детали через первый станок составило 101,910 мин, через второй - 106,141 мин.
Ниже приведены результаты работы программы с измененными входными условиями (два варианта): 1. На обрабатывающий участок цеха поступают детали в среднем через 30 мин. При первичной обработке время обработки детали на первом станке 20 мин, при этом имеет место 10 % брака, время обработки на втором станке 30 мин и 20 % брака. При вторичной обработке время обработки детали на обоих станках 80 мин. Результат: 295 деталей прошло через первый станок, 205 деталей прошло через второй станок, 77 деталей признаны бракованными и были отправлены на вторичную обработку, 18 деталей после повторной обработки были признаны браком и стали отходами. Через второй станок прошло 282 детали. 482 детали признаны годными и были отправлены на вторичную обработку. При вторичной обработке через первый станок прошло 329 деталей, через второй - 153. При первичной обработке среднее время прохождения одной детали через первый станок составило 21,632 мин, через второй - 27,873 мин. При вторичной обработке среднее время прохождения детали через первый станок составило 82,610 мин, через второй - 85,097 мин. 2. На обрабатывающий участок цеха поступают детали в среднем через 40 мин. При первичной обработке время обработки детали на первом станке 30 мин, при этом имеет место 5 % брака, время обработки на втором станке 40 мин и 10 % брака. При вторичной обработке время обработки детали на обоих станках 60 мин. При вторичной обработке второй станок подключается только тогда, когда в накопителе больше одной детали. Результат: 285 деталей прошло через первый станок, 215 деталей прошло через второй станок, 32 детали признаны бракованными и были отправлены на вторичную обработку, 5 деталей после повторной обработки были признаны браком и стали отходами. 495 деталей признаны годными и были отправлены на вторичную обработку. При вторичной обработке через первый станок прошло 322 детали, через второй - 173. При первичной обработке среднее время прохождения одной детали через первый станок составило 33,022 мин, через второй - 35,772 мин. При вторичной обработке среднее время прохождения детали через первый станок составило 62,038 мин, через второй - 63,585 мин.
Разработка и создание прикладного пакета, моделирующего динамическую работу СМО
Программа моделирования динамической работы участка цеха позволяет визуально отслеживать во времени процесс обработки автомобильных деталей в цехе, получать итоговые результаты, анализировать их и принимать решение. Программа написана на языке Delphi. Описание логической структуры
В программе был использован метод объектного программирования. Список процедур и функций, которые использовались при написании программы:
procedure TForm1.FormCreate - осуществляет инициализацию всех переменных;
procedure TForm1.Timer2Timer - генерирует распределенные по экспоненциальному закону моменты времени поступления новых деталей;
procedure TForm1.Timer1Timer - основная процедура програм- мы - моделирует обработку деталей на станках и обеспечивает в определенные моменты времени вызов процедур перевода деталей из накопителя на станок и наоборот;
procedure TForm1.N3Click - останавливает моделирование;
procedure TForm1.N11Click - обнуляет значения всех переменных (количество всех деталей, бракованных и т.д.);
procedure TForm1.N10Click - выводит на экран форму «Параметры», в которой можно задавать значения переменных (величину брака, время обработки деталей на каждом станке и т.д.);
procedure TForm1.Q1Click - выводит на экран форму с Q-схемой;
procedure TForm1.N5Click - выводит на экран форму с динамической схемой работы системы;
procedure TForm1.N7Click - выводит на экран задание проекта;
procedure TForm1.N8Click - выводит на экран форму со справкой о программе;
procedure TForm4.FormClose - используется для инициализации всех изменений в форме «Параметры»;
procedure TForm1.N9Click - осуществляет выход из программы.
Процедуры и функции пользователя:
function where_go - определяет движение детали после первичной обработки: в накопитель Н1 или возврат в накопитель Н0 (если это брак);
procedure prov_nak - проверяет наличие деталей в накопителях;
procedure add_new - создание и инициализации новой детали;
procedure run - переводит детали со станков в накопители и наоборот.
Рассмотрим основной цикл программы. В нем осуществляются следующие действия:
если очередной момент времени равен времени поступления детали в накопитель Н0, то в накопитель Н0 добавляется одна деталь. Затем вычисляется и запоминается время поступления следующей детали;
если есть очередь и станок №1 или станок №2 свободен, то уменьшается счетчик очереди и вычисляется время обработки детали. В это время станок находится в состоянии занято;
если время моделирования равно времени обработки детали, то станок освобождается и деталь отправляется во второй накопитель или возвращается на повторную обработку, если это брак. Затем для этого станка повторяется второй пункт;
если деталь поступила в накопитель Н1, то счетчик деталей в очереди увеличивается на единицу;
если станок №1 вторичной обработки свободен, то деталь поступает на него, а счетчик деталей в очереди уменьшается на единицу. Если в очереди больше трех деталей, то подключается еще один станок. Если же оба станка заняты, то ожидается освобождение одного из них.
После запуска программы на экран монитора выводится основное рабочее окно. Интерфейс программы включает меню пользователя, которое позволяет вывести сведения о программе и разработчике, посмотреть задание, произвести запуск, остановку и продолжение работы программы, просмотреть Q-схему и динамическую схему СМО, осуществить выход из программы. Экранные формы разработанного приложения приведены ниже (рис. 1.3-1.6).
Рис. 1.3
Рис. 1.4
Рис. 1.5
Рис. 1.6
Итоговый отчет
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
| Входные данные |
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Общее количество деталей: 500
Частота поступления деталей: 40 мин
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
| Первичная обработка |
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Время обработки на первом станке: 40 мин
Время обработки на втором станке: 60 мин
Процент брака на первом станке: 4 %
Процент брака на втором станке: 8 %
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
| Вторичная обработка |
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Время обработки: 100 мин
Второй станок подключается при наличии 3 деталей в накопителе
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
| Результаты |
= = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Затрачено времени (часов/минут): 33/13 Первичная обработка:
Первый станок обработал: 39 деталей
Второй станок обработал: 31 деталь
Всего обработано: 70 деталей
Первый станок забраковал: 2 детали
Второй станок забраковал: 3 детали
Повторно обработано: 5 деталей
Отправлено в отходы: 0 деталей Вторичная обработка:
Первый станок обработал: 18 деталей.
Второй станок обработал: 17 деталей. Готовой продукции: 35 деталей. 2. Проектирование системы работы транспортного предприятия
Цель работы
Создать программное обеспечение, позволяющее моделировать работу транспортного предприятия.
Задание
Транспортное предприятие объединения обслуживает три филиала А, В, С. Грузовики перевозят изделия из А в В и из В в С, возвращаясь затем в А без груза. Погрузка в А занимает 20 мин, переезд из А в В длится 30 мин, разгрузка и погрузка в В - 40 мин. Если к моменту погрузки в А и В отсутствуют изделия, грузовики уходят дальше по маршруту. Изделия в филиале А выпускаются партиями по 1 000 штук через 20 ± 5 мин. На линии работает 8 грузовиков, каждый перевозит 1 000 изделий. В начальный момент все грузовики находятся в филиале А.
Смоделировать работу транспортного предприятия в течение 1 000 часов. Определить частоту пустых перегонов грузовиков между филиалами А и В, В и С и сравнить с характеристиками, полученными при равномерном начальном распределении грузовиков между филиалами и операциями. На рис. 2.1 представлена схема алгоритма работы транспортного предприятия объединения.
Выполнение работы
Ниже приведены результаты работы программы (листинг программы на языке GPSS не приводится) для трех вариантов исходных данных: 1. Все грузовики находятся в филиале А. Результат: сделано 154 поездки: 88 (57 %) поездок с грузом, 66 (43 %) поездок без груза. 2. В филиале А находится 3 грузовика; в филиале B - 2; в филиале B - 3. Результат: сделана 151 поездка: 93 (62 %) поездки с грузом, 58 (38 %) поездок без груза. 3. В филиале А находится 4 грузовика; в филиале B - 4. Результат: сделано 154 поездки: 91 (59 %) поездка с грузом, 63 (41 %) поездки без груза. Экранные формы разработанного приложения приведены ниже (рис. 2.2-2.4).
Рис. 2.1. Структурная схема
Рис. 2.2
Рис. 2.3
Рис. 2.4