Смекни!
smekni.com

Имитационная модель автоматизированного участка обработки деталей (стр. 9 из 9)

Рисунок 2.1 – Структурная схема объекта моделирования

Цель моделирования:

Изучение влияния интенсивности поступления деталей на загрузку транспортного робота и станков обработки.

1 Декомпозиция сложной системы.

Декомпозиция системы осуществляется просто: отдельными элементами модели будут очереди, транспортный робот, станки (в дальнейшем этапы обработки).

2 Выбор параметров и переменных.

В качестве параметров системы будет интенсивность поступления деталей на транспортировку и обработку на станках (

) (
).

Переменными модели системы являются функция распределения длительности перевозки или обработки детали на i-том этапе

.

В качестве статистик моделирования будут выступать:

- - коэффициенты загрузки этапов обработки (

);

- - количество обработанных деталей на автоматизированном участке (

) и на i-м этапе обработки (
);

- - размер очереди к каждому этапу обработки (

);

- - общее время обработки деталей на i-ом участке обработки (

).

3 Уточнение критериев эффективности.

Так как структура модели проста, то в качестве критериев эффективности могут выступать коэффициент загруженности этапов обработки (

) и среднее значение времён обработки деталей (
).

В результате имитационного моделирования нужно найти следующие функциональные зависимости:

и
.

4 Аппроксимация реальных процессов математическими величинами.

При задании функций распределения

длительность обработки детали на i-ом этапе обработки достаточна аппроксимация ступенчатыми функциями.

5 Выдвижение гипотез и предположений.

Выдвигаем гипотезу, что

и
имеют вид полиномов, порядок и значение коэффициентов, которых необходимо определить в ходе имитационных экспериментов.

6 Установление основной структуры моделирования.

С помощью таких эмпирических зависимостей можно предсказывать характеристики загрузки этапов обработки (

) и времена обработки деталей на этапе обработки (
) в зависимости от изменяющихся характеристик входного потока деталей (
) при заданных
[1].

3.2 Формальное описание модели

Алгоритм активностей

Активность поступления деталей

1 Поиск места для детали:

'Ищется место для детали. Либо новая строка, либо на место ушедшей.

i = 2

While Cells(i, 1).Value > 0

i = i + 1

Wend

Cells(i, 1).Value = ModelTime

lsum = lsum + (ModelTime - tlprev) * l

l = l + 1

tlprev = ModelTime

2 Генерация поступления и определение типа детали

'Генерируем поступление деталей в зависимости от параметров табличного распределения и определяем тип детали в зависимости от значения параметра равномерного распределения.

tActions(0) = tActions(0) + RndN1(k, min, max, v)

If tActions(0) > tRun Then

tActions(0) = TBIG

End If

i = 2

While Worksheets("Elements").Cells(i, 2).Value > ""

i = i + 1

Wend

Sheets("Elements").Select

det = RndP(Rp)

If det = 1 Then

Cells(i, 2) = 1

Else

Cells(i, 2) = 2

EndIf

Активность перевозки детали

1 Поиск первой детали в очереди

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 1 листа Elements

last = Range("A30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 3).Value = "") And (Cells(i, 1).Value > 0) And (Cells(i,1).Value < tinmin) Then

inmin = Cells(i, 1).Value

imin = i

End If

Next i

lsum = lsum + (ModelTime - tlprev) * l

l = l - 1

tlprev = ModelTime

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

'присвоение состоянию робота значение 1, т.е. робот занят

'начало перевозки детали роботом

state = 1

tkprev = ModelTime

tActions(1) = ModelTime

Cells(imin, 3) = tActions(1)

If Cells(imin, 2) = 1 Then

tActions(2) = tActions(1) + Tdown

Else

tActions(3) = tActions(1) + Tup

End If

'окончание перевозки детали роботом, в зависимости от типа детали на перевозку затрачивается различное количество времени

'еслитипдетали 1

If (tActions(2) <= ModelTime) And (Cells(imin, 2) = 1) And (state = 1) Then

ksum = ksum + (ModelTime - tkprev)

tkprev = ModelTime

l1 = l1 + 1 'увелечение очереди на 1 к первому станку

Cells(imin, 4) = tActions(2) 'окончание перевозки детали роботом

tActions(1) = tActions(2) + Tdown 'возвращение робота от первого станка

tActions(2) = TBIG

End If

'еслитипдетали 1

If (tActions(3) <= ModelTime) And (Cells(imin, 2) = 2) And (state = 1) Then

ksum = ksum + (ModelTime - tkprev)

tkprev = ModelTime

l2 = l2 + 1 'увелечение очереди на 1 ко второму станку

Cells(imin, 4) = tActions(3) 'окончание перевозки детали роботом

tActions(1) = tActions(3) + Tup 'возвращение робота от второго станка

tActions(3) = TBIG

EndIf

'изменение состояния робота на 0, т.е. незанет

If (state = 1) And (tActions(1) <= ModelTime) Then

state = 0

tActions(1) = TBIG

EndIf

Активность начала обработки детали на станке

'обработка детали первого типа

If (state1 = 0 Andl1 > 0) Then

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 4 листа Elements

last = Range("D30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 5).Value = "") And (Cells(i, 2) = 1) And

(Cells(i, 1).Value > 0) And (Cells(i, 1).Value < tinmin) Then

tinmin = Cells(i, 1).Value

imin1 = i

End If

Next i

i1 = 1

state1 = 1 'станок занят

l1 = l1 – 1 'уменьшение очереди к станку на 1

If ModelTime > Cells(imin1, 4) Then

tActions(4) = ModelTime

Else

tActions(4) = Cells(imin1, 4)

End If

Cells(imin1, 5) = tActions(4)

tActions(6) = tActions(4) + one 'времяобработкидеталитипанастанке

EndIf

обработка детали второго типа

If (state2 = 0 And l2 > 0) Then

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 4 листа Elements

last = Range("D30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 5).Value = "") And (Cells(i, 2) = 2) And

(Cells(i, 1).Value > 0) And (Cells(i, 1).Value < tinmin) Then

tinmin = Cells(i, 1).Value

imin2 = i

End If

Next i

i2 = 0

state2 = 1

l2 = l2 - 1

If ModelTime > Cells(imin2, 4) Then

tActions(5) = ModelTime

Else

tActions(5) = Cells(imin2, 4)

End If

Cells(imin2, 5) = tActions(5)

tActions(7) = tActions(5) + two

EndIf

Активность окончания обработки детали на станке

'окончание обработка детали первого типа

If (tActions(6) <= ModelTime) Then

NextModelTime = False

'откорректировать значения для среднего времени пребывания детали в системе

Nb = Nb + 1

tbuysum = tbuysum + (ModelTime - Cells(imin1, 1).Value)

If i1 = 1 Then

state1 = 0

End If

Cells(imin1, 6) = tActions(6)

tActions(6) = TBIG

End If

'окончание обработка детали второго типа

If (tActions(7) <= ModelTime) Then

NextModelTime = False

'откорректировать значения для среднего времени пребывания детали в системе

Nb = Nb + 1

tbuysum = tbuysum + (ModelTime - Cells(imin2, 1).Value)

If i2 = 0 Then

state2 = 0

End If

Cells(imin2, 6) = tActions(7)

tActions(7) = TBIG

Call Trace("Finish", imin2)

EndIf


4 ВЕРИФИКАЦИЯ ИМИТАЦИОННОЙ МОДЕЛИ

4.1 Контроль за выполнением порядка активностей

Порядок выполнения активностей рассмотрим на примере одной детали при первом прогоне. Arrival, Begin, Processing, Finish – это активности. В первой активности происходит генерация деталей. Первая активность появляется согласно закону нормального табличного распределения с параметрами k, min, max, v(i), где i=

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

Рисунок 4.1 - Изменение откликов на листе Trace