- •Курсовая работа
- •1.3 Математическая модель производительности технологического процесса прокатки полос
- •1.3.1 Концептуальная модель технологического процесса прокатки
- •1.3.2 Приближенный аналитический расчет показателей эффективности сети
- •2 Разработка программной имитационной модели технологического процесса прокатки
- •2.1 Выбор и обоснование инструментальных средств
- •2.2 Разработка моделирующего алгоритма процесса функционирования сети
- •2.2.1 Формализация процесса функционирования сети на базе q-схем
- •2.2.2 Укрупненная схема моделирующего алгоритма
- •2.3 Описание программной реализации имитационной модели сети
- •2.4 Оценка адекватности имитационной модели сети
- •2.5 Эксплуатация программной имитационной модели сети
2.3 Описание программной реализации имитационной модели сети
2.3.1 Программная модель участка травления
STORAGE – Объем памяти устанавливается равным 20, эта память представляет собой ванны для одновременного травления 20 листов.
TABLE – Определение таблицы WeitTime, с помощью которой будет устанавливаться гистограмма длительности ожидания рулонов перед прокаткой. Перед выходом транзакта из участка прокатки значение его СЧА QT представляющего длительность ожидания рулона перед прокаткой заносится в таблицу. Это число представляет период времени, который начинается с момента занятия рулоном очереди к прокатному стану, и продолжается до момента начала прокатки рулона.
QTABLE – Данный блок определяет таблицу WeitArt, с помощью которой в процессе прогона модели формируется гистограмма числа рулонов в очереди на прокатку в течение времени моделирования.
GENERATE – Транзакты представляют собой листы-заготовки металла, поступающие каждые 1,2 мин из цеха горячей прокатки. Для определения интервала между транзактами вызывается подпрограмма D[T(m)], которая рассчитывает его как случайную величину, распределенную по закону Пуассона и определяет момент поступления транзакта в следующий по порядку блок. До этого момента времени транзакт помещается в список будущих событий (СБС). Когда этот момент времени становится текущим, транзакт сразу же направляется в блок QUEUE, а блок GENERATE тут же генерирует следующий транзакт, также помещаемый в СБС.
QUEUE – Блок ОЧЕРЕДЬ с именем Ocher1 при входе транзакта регистрирует момент времени постановки транзакта (листа) в очередь на травление.
ENTER – Блок ВОЙТИ в память STORAGE с меткой Travlen регистрирует вход транзакта в многоканальное устройство для имитации операции травления.
DEPART – Блок ПОКИНУТЬ очередь 1 регистрирует момент времени окончания ожидания транзактом операции травления.
ADVANCE – Блок ЗАДЕРЖАТЬ помещает транзакт на время операции травления в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(1,J)], которая рассчитывает длительность травления как случайную величину по равномерному закону распределения в интервале 18…26 мин.
LEAVE – Блок ВЫЙТИ регистрирует момент времени выхода транзакта из участка травления.
2.3.2 Программная модель участка сварки и намотки
ADOPT – Блок ADOPT присваивает всем прошедшим через него транзактам номер семейства, например 2000, что позволит в дальнейшем объединять несколько транзактов одного семейства в один транзакт с помощью блока ASSEMBLE.
QUEUE - Блок ОЧЕРЕДЬ с именем Ocher2 при входе транзакта регистрирует момент времени постановки транзакта (листа) в очередь на сварку.
TRANSFER ALL,Can1,Can3,6 – Блок ПЕРЕДАТЬ в режиме ВСЕ производит передачу транзакта в свободное из трех место сварки Can1…Can3. Если все места сварки заняты, то транзакт остается в блоке TRANSFER до тех пор, пока не освободится хотя бы одно место сварки.
SEIZE – Блок ЗАНЯТЬ с именем Svarka1 и меткой Can1 при поступлении в него транзакта проверяет, свободно ли место сварки 1, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Svarka1, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher2 регистрирует момент времени окончания ожидания транзактом операции сварки.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции сварки в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(2,1)], которая рассчитывает длительность сварки как случайную величину по нормальному закону распределения с математическим ожиданием равным 2,4 мин и средним квадратичным отклонением равным 0,4 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Svarka1 при входе в него транзакта регистрирует момент окончания сварки и уведомляет об этом блок SEIZE с именем Svarka1.
ASSEMBLE – Блок ОБЬЕДИНИТЬ собирает 5 транзактов семейства 2000, ожидая их, и уничтожает четыре из них, этим имитируется соединение пяти листов в полосу.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Perexod в канал намотки полос на барабан.
SEIZE – Блок ЗАНЯТЬ с именем Svarka2 и меткой Can2 при поступлении в него транзакта проверяет, свободно ли место сварки 2, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Svarka2, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher2 регистрирует момент времени окончания ожидания транзактом операции сварки.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции сварки в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(2,2)], которая рассчитывает длительность сварки как случайную величину по нормальному закону распределения с математическим ожиданием равным 2,4 мин и средним квадратичным отклонением равным 0,4 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Svarka2 при входе в него транзакта регистрирует момент окончания сварки и уведомляет об этом блок SEIZE с именем Svarka2.
ASSEMBLE – Блок ОБЬЕДИНИТЬ собирает 5 транзактов семейства 2000, ожидая их, и уничтожает четыре из них, этим имитируется соединение пяти листов в полосу.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Perexod в канал намотки полос на барабан.
SEIZE – Блок ЗАНЯТЬ с именем Svarka3 и меткой Can3 при поступлении в него транзакта проверяет, свободно ли место сварки 3, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Svarka3, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher2 регистрирует момент времени окончания ожидания транзактом операции сварки.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции сварки в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(2,3)], которая рассчитывает длительность сварки как случайную величину по нормальному закону распределения с математическим ожиданием равным 2,4 мин и средним квадратичным отклонением равным 0,4 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Svarka3 при входе в него транзакта регистрирует момент окончания сварки и уведомляет об этом блок SEIZE с именем Svarka3.
ASSEMBLE – Блок ОБЬЕДИНИТЬ собирает 5 транзактов семейства 2000, ожидая их, и уничтожает четыре из них, этим имитируется соединение пяти листов в полосу.
SEIZE – Блок ЗАНЯТЬ с именем Namotka и меткой Perexod при поступлении в него транзакта проверяет, свободно ли место намотки, если оно свободно, то занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Namotka, а если оно занято, то ставит транзакт в очередь к нему.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции намотки в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(3,1)], которая рассчитывает длительность намотки как детерминированную величину.
RELEASE – Блок ОСВОБОДИТЬ с именем намотка при входе в него транзакта регистрирует момент окончания намотки и уведомляет об этом блок SEIZE с именем намотка.
2.3.3 Программная модель участка прокатки
QUEUE - Блок ОЧЕРЕДЬ с именем Ocher4 при входе транзакта регистрирует момент времени постановки транзакта (рулона) в очередь на прокатку.
SEIZE – Блок ЗАНЯТЬ с именем Prokatka при поступлении в него транзакта проверяет, свободно ли место прокатки, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Prokatka, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher4 регистрирует момент времени окончания ожидания транзактом операции прокатки.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции поркатки в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(4,1)], которая рассчитывает длительность прокатки как случайную величину по нормальному закону распределения с математическим ожиданием равным 5,4 мин и средним квадратичным отклонением равным 1,4 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Prokatka при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Prokatka.
TABULATE Блок ТАБУЛИРОВАТЬ с именем WeitTime при входе в него транзакта заполняет одноименную таблицу для получения времени ожидания прокатки.
2.3.4 Программная модель участка отжига
QUEUE - Блок ОЧЕРЕДЬ с именем Ocher5 при входе транзакта регистрирует момент времени постановки транзакта (рулона) в очередь на отжиг. TRANSFER ALL,Kan1,Kan5,5 – Блок ПЕРЕДАТЬ в режиме ВСЕ производит передачу транзакта в свободное из пяти место отжига Kan1…Kan5. Если все места jn;buf заняты, то транзакт остается в блоке TRANSFER до тех пор, пока не освободится хотя бы одно место отжига.
SEIZE – Блок ЗАНЯТЬ с именем Otgig1 при поступлении в него транзакта проверяет, свободно ли место отжига, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Otgig1, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher5 регистрирует момент времени окончания ожидания транзактом операции отжига.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции отжига в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(5,1)], которая рассчитывает длительность отжига как равномерно распределенную случайную величину в интервале 21…27 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Otgig1 при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Otgig1.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Out в на участок правки и раскроя.
SEIZE – Блок ЗАНЯТЬ с именем Otgig2 при поступлении в него транзакта проверяет, свободно ли место отжига, если оно свободно, то
занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Otgig2, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher5 регистрирует момент времени окончания ожидания транзактом операции отжига.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции отжига в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(5,2)], которая рассчитывает длительность отжига как равномерно распределенную случайную величину в интервале 21…27 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Otgig2 при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Otgig2.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Out в на участок правки и раскроя.
SEIZE – Блок ЗАНЯТЬ с именем Otgig3 при поступлении в него транзакта проверяет, свободно ли место отжига, если оно свободно, то занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Otgig3, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher5 регистрирует момент времени окончания ожидания транзактом операции отжига.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции отжига в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(5,3)], которая рассчитывает длительность отжига как равномерно распределенную случайную величину в интервале 21…27 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Otgig3 при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Otgig3.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Out в на участок правки и раскроя.
SEIZE – Блок ЗАНЯТЬ с именем Otgig4 при поступлении в него транзакта проверяет, свободно ли место отжига, если оно свободно, то занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Otgig4, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher5 регистрирует момент времени окончания ожидания транзактом операции отжига.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции отжига в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(5,4)], которая рассчитывает длительность отжига как равномерно распределенную случайную величину в интервале 21…27 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Otgig4 при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Otgig4.
TRANSFER - Блок ПЕРЕДАТЬ в режиме безусловного перехода производит передачу транзакта по метке Out в на участок правки и раскроя.
SEIZE – Блок ЗАНЯТЬ с именем Otgig5 при поступлении в него транзакта проверяет, свободно ли место отжига, если оно свободно, то занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Otgig5, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher5 регистрирует момент времени окончания ожидания транзактом операции отжига.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции отжига в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(5,5)], которая рассчитывает длительность отжига как равномерно распределенную случайную величину в интервале 21…27 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Otgig5 при входе в него транзакта регистрирует момент окончания прокатки и уведомляет об этом блок SEIZE с именем Otgig5.
2.3.4 Программная модель участка правки и раскроя
QUEUE - Блок ОЧЕРЕДЬ с именем Ocher6 и меткой Out при входе транзакта регистрирует момент времени постановки транзакта (рулона) в очередь на правку и раскрой рулона.
SEIZE – Блок ЗАНЯТЬ с именем Pravka при поступлении в него транзакта проверяет, свободно ли место правки, если оно свободно, то занимает его с регистрацией момента времени начала обслуживания и уведомлением об этом блока RELEASE с именем Pravka, а если оно занято, то ставит транзакт в очередь к нему.
DEPART - Блок ПОКИНУТЬ очередь с именем Ocher6 регистрирует момент времени окончания ожидания транзактом операции правки.
ADVANCE - Блок ЗАДЕРЖАТЬ помещает транзакт на время операции Pravka в СБС. Для определения длительности операции вызывается подпрограмма WORK[K(6,1)], которая рассчитывает длительность правки и раскроя как случайную величину с показательным распределением и средней длительностью в 5 мин.
RELEASE – Блок ОСВОБОДИТЬ с именем Pravka при входе в него транзакта регистрирует момент окончания операций правки и раскроя и уведомляет об этом блок SEIZE с именем Pravka.
TERMINATE – Блок УНИЧТОЖИТЬ при входе в него транзакта ликвидирует его как структуру данных.
