1. Wstępne założenia
Celem symulacji jest prześledzenie procesu produkcji i uzyskanie optymalnego rozwiązania. Wydział lakierni jest symulowany jako zestawienie operacji wykonywanych na odpowiednich maszynach. Sam wydział składa się z trzynastu operacji przedstawionych jako maszyny . W przypadku gdy w skład operacji wchodzi kilka czynności odbywają się one na jednej maszynie, przykładem takiej sytuacji może być transport, gdzie operacja transportu składająca się z trzech czynności, odbywa się na jednej maszynie. Oprócz maszyn w skład wydziału wchodzą jeszcze bufory, z których pobierane są elementy do produkcji i aidy, z których są pobierane elementy wspomagające produkcję, czyli ludzie potrzebni podczas procesu produkcyjnego. Symulacja odbywa się w czasie ośmiu godzin. W czasie całej symulacji średnia ilości polakierowanych nadwozi na jedną godzinę, powinna się kształtować w granicach dwudziestu czterech. Czas jednej operacji równy jest dwie minuty. Powodem tego, że liczba polakierowanych nadwozi nie jest równa trzydziestu sztuką na godzinę, a kształtuje się na poziomie dwudziestu czterech, jest to, że do procesu produkcji została wprowadzona awaryjność maszyn. Cała symulacja odbywa się pomiędzy dwoma dużymi buforami, z których pierwszy symuluje napływ elementów z wydziału trzeciego, wydziału spawalni, a drugi wyjście elementów do wydziału ósmego, wydział montażu.
2 Opis wydziału lakierni przedstawionego w programie Taylor.
Poniższy rysunek przedstawia wydział lakierni zasymulowany w programie Taylor II.
Wydział lakierni
Wydział lakierni został zasymulowany w programie Taylor II przy użyciu następujących elementów :
a) dwóch buforów głównych umieszczonych na wejściu i wyjściu wydziału, symulujących przejścia między wydziałami. Bufory są oznaczone numerami :
* 41- wejście na wydział lakierni
* 42- wyjście z wydziału lakierni
b) trzech klastrów, jednego będący komórką produkcyjną obejmującego całą linię lakierniczą i dwóch obejmujących stanowisko malowania nadwozia i lakierowania nadwozia, o numerach :
* 0:1 – klaster obejmujący linie malowania nadwozia (komórka produkcyjna)
* 0:1:1 – klaster obejmujący stanowisko malowania nadwozia
* 0:1:2 – klaster obejmujący stanowisko lakierowania nadwozia
c) dwóch buforów umieszczonych na wejściu i wyjściu linii malowania nadwozia, o numerach :
* 1 – wejście na linie malowania nadwozia
* 2 – wyjście z linii malowania nadwozia
d) trzynastu maszyn, na których odbywają się operacje :
* 41 – mycie nadwozia
* 42 – suszenie nadwozia
* 43 – malowanie farbą podkładową
* 44 – pierwsza faza suszenia.
* 45 – druga faza suszenia
* 46 – trzecia faza suszenia
* 47 – lakierowanie nadwozia
* 48 – pierwsza faza suszenia
* 49 – druga faza suszenia
* 410 – trzecia faza suszenia
* 411 – czwarta faza suszenia
* 412 – piąta faza suszenia
* 413 – transport polakierowanego nadwozia
e) pięciu buforów dostarczających farbę i lakiery
* 998 – bufor dostarczający farbę podkładową
* 989 – bufor dostarczający lakier biały
* 990 – bufor dostarczający lakier czerwony
* 991 – bufor dostarczający lakier zielony
* 992 – bufor dostarczający lakier pomarańczowy
f) jednej ikony dynamicznej przedstawiającej czynność odbywającą się na maszynie 413 ( transporcie )
g) pięciu elementów typu Aid wykorzystywanych do operacji malowania, lakierowania i transportu.
2. Opis symulacji wydziału lakierni przedstawionej w programie Taylor II
Symulacja w programie Taylor II rozpoczyna się od wyjścia produktu z bufora numer 41. Przy wyjściu każdemu produktowi zostają przypisane atrybuty takie jak kolor, tapicerka, zderzaki itp. . Nadanie odpowiednich atrybutów wychodzącym produktom odbywa się przez wprowadzenie tych atrybutów jako ustawienia wyjściowe produktu. Odbywa się to w oknie dialogowym elementu w parametrach pracy ( Job parameters ), przy użyciu polecenia odpowiedzialnego za ustawienia elementu na wyjściu ( Trigger on exit )
Trigger on exit : #exec opcje.tli
Zawartość pliku „opcje.tli” przedstawia się następująco.
if produced[0:j1]<31 then projekt[C]:=projekty[produced[J]+1,1]
if produced[0:j1]<31 then wersja[C]:=projekty[produced[J]+1,2]
if produced[0:j1]<31 then kolor[C]:=projekty[produced[J]+1,3]
if produced[0:j1]<31 then tapicerka[C]:=projekty[produced[J]+1,4]
if produced[0:j1]<31 then fotele[C]:=projekty[produced[J]+1,5]
if produced[0:j1]<31 then zderzaki[C]:=projekty[produced[J]+1,6]
if produced[0:j1]<31 then atrapa[C]:=projekty[produced[J]+1,7]
if produced[0:j1]>30 then projekt[C]:=3
if produced[0:j1]>30 then wersja[C]:=produced[0:j1]-30
if produced[0:j1]>30 then kolor[C]:=random[3]+1
if produced[0:j1]>30 then tapicerka[C]:=random[1]+1
if produced[0:j1]>30 then fotele[C]:=random[1]+1
if produced[0:j1]>30 then zderzaki[C]:=random[1]+1
if produced[0:j1]>30 then atrapa[C]:=random[2]+1
Jak widać z powyższego przedstawienia zawartości pliku „ opcje.tli”, produktom są nadawane takie atrybuty jak projekt, wersja, kolor, tapicerka, fotele, zderzaki i atrapy. Wszystkie te atrybuty są niezbędne na wydziale montażu samochodów, natomiast na wydziale lakierni interesuje nas atrybut jakim jest kolor. Atrybut ten w dalszym etapie będzie odpowiedzialny za kolor lakieru jaki będzie pobrany do lakierowania nadwozia.
Z procedury doboru koloru przedstawionej w pliku wynika, że dla pierwszych trzydziestu jeden elementów kolor jest dobierany według ściśle określonego projektu, to znaczy, jeżeli element na numer mniejszy od trzydziestu jeden to kolor jest z czytywany z tabeli „projekty”, w przeciwnym wypadku kolor jest losowany poleceniem „random”, jako jeden z czterech.
Tabela „projekty”, zapisana w programie Taylor, jest tabelą zawierającą informacje podane przez użytkownika co do koloru lakieru, rodzaju zderzaka itp., dla pierwszych trzydziestu jeden produktów.
Tabela w programie Taylor
Jak widać z powyższej prezentacji tabela ta zawiera trzydzieści jeden wierszy ( Rows : 31 ) i siedem kolumn ( Columns : 7 ) . Liczba kolumn jest zgodna z liczbą cech ( atrybutów ) nadawanych elementowi, a liczba wierszy określa liczbę elementów wyprodukowanych według podanych cech. Cała tabela ma następującą postać.
Projekt
|
Wersja |
Kolor
|
Tapicerka
|
Fotele
|
Zderzak
|
Atrapa
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
2.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
3.00
|
3.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
4.00
|
4.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
5.00
|
1.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
6.00
|
2.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
7.00
|
3.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
8.00
|
4.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
9.00
|
1.00
|
1.00
|
1.00
|
2.00
|
2.00
|
1.00
|
10.00
|
2.00
|
1.00
|
1.00
|
2.00
|
2.00
|
1.00
|
11.00
|
3.00
|
1.00
|
1.00
|
2.00
|
2.00
|
1.00
|
12.00
|
4.00
|
1.00
|
1.00
|
2.00
|
2.00
|
1.00
|
13.00
|
1.00
|
2.00
|
1.00
|
2.00
|
2.00
|
1.00
|
14.00
|
2.00
|
2.00
|
1.00
|
2.00
|
2.00
|
1.00
|
15.00
|
3.00
|
2.00
|
1.00
|
2.00
|
2.00
|
1.00
|
16.00
|
4.00
|
2.00
|
1.00
|
2.00
|
2.00
|
1.00
|
17.00
|
1.00
|
1.00
|
2.00
|
2.00
|
3.00
|
1.00
|
18.00
|
2.00
|
1.00
|
2.00
|
2.00
|
3.00
|
1.00
|
19.00
|
3.00
|
1.00
|
2.00
|
2.00
|
3.00
|
1.00
|
20.00
|
4.00
|
1.00
|
2.00
|
2.00
|
3.00
|
1.00
|
21.00
|
1.00
|
2.00
|
2.00
|
2.00
|
3.00
|
1.00
|
22.00
|
2.00
|
2.00
|
2.00
|
2.00
|
3.00
|
1.00
|
23.00
|
3.00
|
2.00
|
2.00
|
2.00
|
3.00
|
1.00
|
24.00
|
4.00
|
2.00
|
2.00
|
2.00
|
3.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
1.00
|
2.00
|
2.00
|
2.00
|
1.00
|
1.00
|
1.00
|
1.00
|
2.00
|
3.00
|
1.00
|
2.00
|
1.00
|
1.00
|
1.00
|
2.00
|
4.00
|
4.00
|
1.00
|
1.00
|
2.00
|
2.00
|
2.00
|
5.00
|
3.00
|
2.00
|
1.00
|
2.00
|
2.00
|
2.00
|
6.00
|
2.00
|
1.00
|
2.00
|
2.00
|
3.00
|
2.00
|
7.00
|
1.00
|
2.00
|
2.00
|
2.00
|
3.00
|
Tabela przedstawiająca cechy elementów produkowanych w projekcie pierwszym i drugim.
Jak widać z powyższej tabeli, kolor ( trzecia kolumna ) będzie się zmieniał, dla pierwszych dwudziestu czterech elementów, regularnie od białego poprzez czerwony i zielony do pomarańczowego, dla pozostałych siedmiu według określonej kolejności przedstawionej w tabeli.
Po nadaniu odpowiednich atrybutów produkt zostaje przesłany do bufora znajdującego się przed linią lakierowania nadwozia. Stąd produkt, którym jest nadwozie, zostaje wysłany na pierwszą z maszyn, na której odbywa się mycie nadwozia.
Każda z maszyn, w długim procesie technologicznym lakierowania nadwozia, jest określona odpowiednimi parametrami, takimi jak parametry elementu, parametry pracy i parametry stanowiska. Parametry te zostały wprowadzone przy pomocy okna dialogowego elementu.
Okno dialogowe elementu
– Parametry elementu.
Powyższe okno dialogowe przedstawia parametry pierwszej maszyny, na której odbywa się mycie samochodu .Pierwszymi parametrami zdefiniowanymi są parametry elementu ( Element parameters ) . Są to takie parametry jak :
– pojemność ( Capacity )
– warunki wejściowe ( Entry condition )
– warunki wyjściowe ( Exit condition )
– produkt do wysłania ( Product to send )
– średni czas pomiędzy awariami ( Mtbf )
– średni czas na naprawę ( Mttr )
– pomoc przy naprawie ( Repair aid )
Z powyższego okna można wyczytać, że zostały wprowadzone następujące parametry elementu :
- Pojemność – pojemność jest równa jeden, czyli na maszynie numer 41 może przebywać tylko jeden element.
- Warunki wejścia – warunkiem wejścia jest aby aktualna liczba wyrobów ( elementów ) dostępnych na maszynie była równa zero, czyli aby maszyna była pusta. Jest to uzyskane przez wpisanie polecenia „elqueue[E]=0” . Warunek ten został podany dla wszystkich maszyn linii lakierowania nadwozia.
- Warunki wyjścia – warunkiem wyjścia jest aby zmienna 421 była równa 1 ( polecenie var[421]=1 ) . Zmienna 421 oznacza stan w jakim się znajduje maszyny, w tym przypadku są brane pod uwagę dwa stany, pierwszy to stan czynnej maszyny, a drugi to stan uszkodzonej maszyny . Warunkiem aby zmienna 421 była równa jeden jest to aby wszystkie maszyny były sprawne. Wynika z tego, że aby element mógł opuścić maszynę wszystkie maszyny muszą być sprawne. Jest to zastosowane dla wszystkich maszyn i skutkiem tego jest, że w przypadku uszkodzenia jakiejkolwiek maszyny cała linia lakierowania nadwozia zatrzymuje się . Sprawdzanie stanu maszyn pod względem sprawności odbywa się poprzez procedurę przedstawioną poniżej .
var[421]:=1
if status[0:1:e41]=4 then var[421]:=0
if status[0:1:e42]=4 then var[421]:=0
if status[0:1:1:e43]=4 then var[421]:=0
if status[0:1:e44]=4 then var[421]:=0
if status[0:1:e45]=4 then var[421]:=0
if status[0:1:e46]=4 then var[421]:=0
if status[0:1:1:e47]=4 then var[421]:=0
if status[0:1:e48]=4 then var[421]:=0
if status[0:1:e49]=4 then var[421]:=0
if status[0:1:e410]=4 then var[421]:=0
if status[0:1:e411]=4 then var[421]:=0
if status[0:1:e412]=4 then var[421]:=0
Jak można zauważyć sprawdzanie rozpoczynamy przez założenie, że zmienna var[421] jest równa jeden . W późniejszym etapie sprawdzamy po kolei każdą z maszyn, czy jej stan ( sprawdzany poleceniem „status”, które zwraca bieżący stan elementu ) nie jest równy cztery, czyli czy maszyna nie jest uszkodzona . Jeśli maszyna jest uszkodzona to zmienna przyjmuje wartość zero i cała linia zatrzymuje się. Cała powyższa procedura zawarta jest w pliku „var421.tli” i uruchamiana jest co pięć sekund poprzez okno definiowania zmiennych.
Procedura uruchamiania pliku „tli” jest przedstawiona jako trzecia pozycja.
- Produkt do wysłania – wartość, która jest liczbą lub wyrażeniem TLI, decyduje, który produkt z kolejki do danego elementu ma być odesłany do następnego etapu procesu . Wartość przyjęta to jeden, powoduje to wysłanie po kolei każdego elementu wchodzącego .
- Średni czas pomiędzy awariami – jest to czas po jakim maszyna ulegnie uszkodzeniu po ostatniej awarii . Czas ten w moim przypadku jest generowany losowo . Procedura wprowadzona ma następującą postać :
random[var[412]]*900 + var[411]
Podane w wyrażeniu zmienne, var[412] i var[411], są odpowiedzialne za czas pomiędzy awariami . Pierwsza zmienna, na podstawie której jest losowany czas pomiędzy awariami, przyjmuje wartość 120 . Wartość ta jest dobrana doświadczalnie, w taki sposób aby liczba wyprodukowanych elementów była 20% mniejsza, czyli przy założeniu, że bez awarii wyprodukujemy trzydziestu polakierowanych nadwozi, wprowadzając awarie z tak dobraną wartością zmiennej, spowoduje wyprodukowanie dwudziestu czterech elementów. Można to udowodnić przedstawiając wyrażeniem :
120*15min = 1800min = 30godz
30godz / 12 stanowisk = 2,5godz
0,5godz / 2,5godz = 20%
gdzie :
15min – czas taktu
12 stanowisk – liczba stanowisk na linii produkcyjnej
0,5godz – średni czas awarii
Wylosowana liczba poleceniem „random” z przedziału od 0 do 120 jest mnożona jest przez 900 czyli przez 15 minut i uzyskany czas jest czasem po którym maszyna ulegnie uszkodzeniu po naprawie. Czas ten w przypadku wylosowania zera jest równy zero minut czyli maszyna może się od razu po naprawie uszkodzić . Aby czas pomiędzy naprawą a uszkodzeniem był różny od zera jest wprowadzona zmienna „var[411]” . Zmienna ta może przyjmować dowolną wartość, a wartość ta określa czas przez który, po naprawie, maszyna nie może ulec uszkodzeniu. Na wydziale lakierni zmienna ta dla wszystkich dwunastu maszyn, dla których zostały wprowadzone awarie, jest równa zero, czyli każda maszyna od razu po naprawie może ulec awarii.
- Średni czas na naprawę – jest to czas potrzebny na naprawę maszyny. Został określony jako wyrażenie :
random[2]*900+900
Jak widać czas ten jest dobierany losowo . Losowane są liczby 0,1 lub 2 . Czas usunięcia awarii, w zależności od wyniku losowania może być równy 15 minut, 30 minut lub 45 minut.
- Pomoc przy naprawie – określa czy do naprawy maszyny wymagana jest pomoc drugiego elementu. Parametr ten jest niewykorzystywany w moim przypadku.
Oprócz podstawowych parametrów elementu są również parametry dodatkowe ( Extra element parameters), takie jak nazwa, numer, reguły priorytetu, strategia wyjściowa itp., jednak w moim przypadku są one w większości niewykorzystywane.
Parametry dodatkowe maszyny
– Parametry pracy
Parametrami, bez których ustalenia czynność na danej maszynie nie mogłaby się odbyć są parametry pracy ( Parameters job ). Są to takie parametry jak :
– Czas ( Time )
– ustawienie na wejściu ( Trigger on exit )
– partia ( Batch )
– partia wyjściowa ( Output batch )
– pomocnik ( Aid )
Do symulacji wydziału lakierni zostały wprowadzone następujące parametry
- Czas – parametr ten jest odpowiedzialny za długość wykonywania czynności na maszynie. Na wydziale lakierni dla wszystkich maszyn jest on taki sam, równy dwie minuty, ponieważ linia produkcyjna jest taśmowa i wszystkie elementy znajdujące się na linii przesuwają się równocześnie.
- Ustawienia na wejściu – w momencie wejścia elementu na maszynę zostaje wykonane polecenie TLI
- Ustawienia na wyjściu – w momencie wyjścia elementu z maszyny zostaje wykonane polecenie TLI
- Partia – jest to liczba produktów, na których odbywa się czynność. Na wydziale lakierni partia na jakiej odbywają się wszystkie operacje jest równa jeden, procesowi lakierowania są poddawane pojedynczo kolejne nadwozia.
- Partia wyjściowa – jest to liczba produktów, które są wysyłane kiedy czynność na maszynie zakończy się . Na linii lakierowania nadwozia partia ta jest równa jeden, czyli nadwozia pomiędzy maszynami przesuwają się pojedynczo.
- Pomocnik – parametr ten jest podawany w przypadku kiedy do wykonania operacji ( czynności ) jest potrzebny pomocnik . Jest on określony jako numer lub numery Aid’ów wykorzystywanych do operacji.
Podobnie jak w przypadku parametrów elementu, parametry pracy również posiadają dodatkowe parametry takie jak priorytet, wybraki, losowe generowanie czasu i partii, ale i w tym przypadku są one większości niewykorzystywane .
Dodatkowe parametry pracy
– Parametry etapu procesu
Parametrami, które są odpowiedzialne za przesyłanie i odbiór produktu są parametry etapu procesu ( Stage parameters ). Są to parametry takie jak :
– Wysłać do ( Send to )
– Odebrać
Oraz parametry dodatkowe :
– Zapas ( Stock amount )
– Kod produktu ( Product code )
– Nazwa etapu procesu (Stage name )
– Numer etapu procesu ( Stage number )
Dodatkowe parametry etapu procesu
Parametry dodatkowe są przede wszystkim wykorzystywane w pierwszym elemencie symulacji jakim jest bufor ( magazyn ) przed linią lakierowania nadwozia i w buforach znajdujących się przy stanowiskach malowania i lakierowania nadwozia. Są tu wprowadzone liczby produktów, jako zapas (Stock amount ) wykorzystywany w ośmiogodzinnej symulacji i kody tych produktów. Parametry etapu procesu podstawowe „wysłanie do”, „odbiór z”, są wprowadzane dla każdego elementu ( maszyny ) . W przypadku maszyny numer 41 ( mycia nadwozia ), jest podany tylko parametr „wysłać do”, gdzie został wprowadzony numer następnej maszyny, 42 ( suszenie nadwozia ), co oznacza, że po wykonaniu operacji na produkcie, produkt zostanie przesłany do tej maszyny.
Po wykonaniu operacji mycia, zgodnie z wprowadzonymi parametrami, produkt, jakim jest nadwozie, zostaje przesłane do następnej maszyny, na której zostaje poddany procesowi suszenia . Maszyna ta, w symulacji pod programem Taylor II, nie różni się od wcześniejszej maszyny. Większość parametrów jest taka sama. Po wykonaniu tej operacji, produkt zostaje przesłany do pierwszego klastra znajdującego się na linii lakierowania nadwozia . Polecenie wysłania produktu z maszyny do klastru, wprowadzone jako parametr etapu procesu „ wyślij do”, ma następującą postać : 0:1:1:s43 .Oznacza to, że produkt został wysłany do maszyny numer 43 znajdującej się w klastrze zawartym wewnątrz jeszcze jednego klastru. Ilość liczb przed numerem maszyny oznacza poziom w klastru, a same liczby numer klastru . W tym przypadku maszyna znajduje się wewnątrz klastru obejmującego stanowisko malowania nadwozia, o numerze jeden, który znajduje się w klastrze linii lakierowania nadwozia, również o numerze jeden. Maszyna z której został wysłany produkt ( maszyna 42 ) i klaster obejmujący stanowisko malowania nadwozia, znajduje się w klastrze linii lakierowania nadwozia, co powoduje, że polecenie przesłania produktu można uprościć do postaci „1:s43” .
Klaster malowania nadwozia farbą podkładową oprócz maszyny obejmuje również inne elementy niezbędne do tej operacji . Są to dwa elementy typu „Aid”, które służą jako pomoc w operacji malowania i jeden bufor z którego jest pobierana
farba podkładowa .
Okno dialogowe dla maszyny malowania nadwozia.
Elementy te, aid i bufor, zostały wykorzystane w parametrach pracy i parametrach etapu procesu. Element typu aid, wykorzystany w parametrach pracy, jest wprowadzony jako parametr „pomocnik” przez polecenie „select 2 from 1,2”. Polecenie to oznacza, że do wykonania operacji są wykorzystywani dwaj pomocnicy z elementów typu aid, o numerach 1,2. Z elementu typu bufor, wykorzystywanym w parametrach etapu procesu, jest pobierany produkt, jakim jest farba podkładowa, przez polecenie wprowadzone do parametru „pobierz z”, w postaci „ select 1 from 998”, co powoduje pobranie, w trakcie wykonywania operacji, jednego produktu z elementu o numerze 998.
Sama symulacja, którą widzi użytkownik ma następujący przebieg. Produkt wpływa do maszyny na której odbywa się malowanie . Równocześnie zostają pobrani, z elementów typu aid, dwaj pomocnicy i z bufora wpływa farba podkładowa . Operacja z użyciem wszystkich tych elementów trwa przez dwie minuty i po tym czasie pomocnicy odchodzą od maszyny malującej nadwozie, a z maszyny wychodzi pomalowany produkt. Taki produkt zostaje przesłany do pierwszego etapu suszenia. Polecenie, które zostało wprowadzone jako parametr „wyślij do”, w postaci „select 1 from 0:1:s44”, oznacza, że jeden produkt zostaje wysłany do maszyny numer 44, znajdującej się w klastrze linii lakierowania nadwozia.
Po wejściu na maszynę, na której odbywa się pierwszy etap suszenia i pobycie tam przez dwie minuty, nadwozie trafia do maszyny, na której odbywa się drugi proces suszenia i przebywa tam przez kolejne trzy minuty. Proces suszenia po malowaniu kończy się na trzecim etapie, który odbywa się na maszynie numer 46. Z tej maszyny nadwozie trafia do klastru na którym jest wykonywana najważniejsza operacja na całej linii produkcyjnej, operacja lakierowania nadwozia.
Klaster ten składa się z jednej maszyny, z dwóch aid’ów i z czterech buforów, w których znajdują się cztery kolory lakierów. Symulacja przebiega w sposób bardzo podobny do klastru malowania nadwozia, a różnica polega na tym, że kolor jest dobierany jako jeden z czterech. Dobór koloru dla kolejnych nadwozi nie jest przypadkowy, ponieważ każde nadwozie ma przyporządkowane odpowiednie atrybuty . Jednym z tych atrybutów jest kolor. Atrybut ten, po wejściu produktu na maszynę jest sprawdzany i zgodnie z nim jest pobierany lakier o kolorze na który wskazuje atrybut. Jest to uzyskane przez wprowadzenie odpowiedniej procedury, jako parametr etapu procesu ( Receive from ). Procedura ta ma następującą postać :
select 1 from (if kolor[0:1:e46,1]=1 then 989 else (if kolor[0:1:e46,1]=2 then 990 else (if kolor[0:1:e46,1]=3 then 991 else 992)))
Działanie powyższej procedury polega na kolejnym sprawdzaniu numeru atrybutu koloru. Wynikiem czego jest pobranie lakieru z tego bufora do którego przypisany numer jest zgodny z numerem atrybutu koloru. Na przykład wchodzący produkt ( nadwozie ) ma przypisany atrybut koloru równy cztery, po wejściu na maszynę numer 46 ( lakierowania nadwozia ) jest on z czytywany i sprawdzany czy jest równy jeden . Jeżeli nie to następnie odbywa się porównywanie do dwójki i później do trójki . Nasz atrybut nie jest równy żadnej z tych liczb, więc lakier jest pobierany z bufora numer 992 gdzie znajduje się lakier pomarańczowy . W przypadku gdyby był równy którejś z kolejnych liczb sprawdzanie zostaje przerwane na tej liczbie i lakier jest pobierany z tego bufora, który jest przyporządkowany tej liczbie.
Po wykonaniu operacji lakierowania nasze nadwozie zostaje przesłane do następnej maszyny, znajdującej się poza klastrem obejmującym stanowisko lakierowania, na którym rozpoczyna się pierwsza faza z pięciofazowego proces suszenia nadwozia. Każda faza procesu suszenia odbywa się na innej maszynie, trwa oczywiście taki sam okres czasu i jest ostatnim procesem na linii lakierowania nadwozia . Po wykonaniu piątej fazy suszenia nadwozie zostaje wysłane do bufora, który jest ostatnim elementem na linii lakierowania nadwozia. Z tego bufora produkt trafia do maszyny 413 odpowiedzialnej za transport.
Transport, odbywający się na jednej maszynie, jest procesem trzyetapowym .Pierwszy etap to załadunek, odbywa się on przy wykorzystaniu pomocnika, który jest wykorzystywany również do dwóch pozostałych etapów . Etap drugi to sam transport a trzeci to wyładunek przed wydziałem montażu samochodu. Cały proces transportu trwa dwie minuty, ponieważ jest to konieczne do zachowania ciągłości procesu. Na wykonanie wszystkich trzech czynności na jednej maszynie pozwalają nam funkcje programu Taylor II takie jak „ Multiple job” i „ Mulltiple stages”, definiowane jako model .
Okno dialogowe modelu
Po zdefiniowaniu tych funkcji można wprowadzić na maszynę kilka czynności. Wykonuje się to w oknie dialogowym elementu poprzez przycisk „ Ins” . W ten sposób, na maszynę numer 413, zostały wprowadzone trzy czynności . Każda z czynności ma osobne parametry pracy i parametry etapu procesu . Czynności te zostają wykonywane kolejno. Aby można było zaobserwować która czynność w danym momencie jest wykorzystywana, przy maszynie został umieszczony element jakim jest ikona dynamiczna ( Dynamic Icons ) .
Ikona dynamiczna
Element ten wykorzystujemy do wyświetlania informacji o numerze czynności, czyli typ ikony jest wybrany jako „Text:value”, co pozwala na wyświetlenie tekstu opisującego i zmiennej. Przez polecenie „curjob[413]” z czytujemy numer operacji wykonywanej na maszynie 413. Wartość 1000, wprowadzona w pole „Highest value”, oznacza, że zmienna może przyjmować największą wartość 1000. Wartość najmniejszą wprowadza się w pole „Lowest value”, w naszym przypadku wynosi ona zero. W pole o nazwie „Icon text” jest wprowadzony opis wyświetlanej zmiennej. Po tak wprowadzonych danych na ekranie podczas symulacji obserwujemy niebieską ikonę z wyświetlanym numerem operacji, która jest wykonywana przez maszynę odpowiedzialną za transport.
Po wykonaniu ostatniej czynności transportu, czyli wyładunku, nasz produkt trafia na końcowy bufor obrazujący wydział montażu samochodów. Symulacja kończy się po ośmiu godzinach . Przez ten czas, przy średniej produkcji dwudziestu czterech nadwozi na godzinę, zostaje polakierowane około 192 nadwozi ,a liczba ta jest zależna od liczby awarii na linii produkcyjnej.
3. Wyniki symulacji.
Wyniki z przeprowadzonej symulacji można przedstawić w dwóch formach : raportów i wykresów. Raporty są przedstawiane w postaci tabel, natomiast wykresy można otrzymywać w dowolnej formie.
- a. Przedstawienie danych w programie Taylor II
Taylor II Model Documentation Date: 06-09-1999 Time: 12:32
=================================================================
GENERAL REMARKS
—————
lakiersk.SIM consists of 27 elements, 29 jobs and 29 stages.
Time representation is as follows: 60 units make 1 minute,
60 minutes make 1 hour, 8 hours make 1 day.
At request usertli will be executed.
TABLE 1: Element parameters
—————————
ELEM NAME T CAP ENTRY ENTR EXIT
NR COND LIST COND COND
_____________ _________ _ ____ ___________ ____ ____
0:e3 Aid_4 A 1
0:e41 Wejście B 1000 arrv fl rep
0:e42 Wyjście B 1000
0:e413 Transport M 1
0:1:e1 Buff_2 B 1
0:1:e2 Buff_14 B 3
0:1:e41 Mycie M 1 * *
0:1:e42 Suszenie M 1 * *
0:1:e44 faza1 M 1 * *
0:1:e45 faza2 M 1 * *
0:1:e46 faza3 M 1 * *
0:1:e48 faza1 M 1 * *
0:1:e49 faza2 M 1 * *
0:1:e410 faza3 M 1 * *
0:1:e411 faza4 M 1 * *
0:1:e412 faza5 M 1 * *
0:1:1:e1 Aid_18 A 1
0:1:1:e2 Aid_19 A 1
0:1:1:e43 Malowanie M 1 * *
0:1:1:e998 Podkład B 1000
0:1:2:e1 Aid_24 A 1
0:1:2:e2 Aid_26 A 1
0:1:2:e47 Lakiernia M 2 * *
0:1:2:e989 Biały B 1000
0:1:2:e990 Czerwony B 1000
0:1:2:e991 zielen B 1000
0:1:2:e992 pomarancz B 1000
Gdzie :
– ELEM NR – numer elementu
– NAME – nazwa
– T – typ elementu
– CAP – pojemność
– ENTRY COND – warunek wejścia
– EXIT COND – warunek wyjścia
TABLE 2: Element parameters
—————————
ELEM NAME T CAP MTBF MTTR
NR par1 dis par2 par1 dis par2
_____________ _________ _ ____ _____ ___ ____ _____ ___ ____
0:e3 Aid_4 A 1
0:e41 Wejście B 1000
0:e42 Wyjście B 1000
0:e413 Transport M 1
0:1:e1 Buff_2 B 1
0:1:e2 Buff_14 B 3
0:1:e41 Mycie M 1 TLI TLI
0:1:e42 Suszenie M 1 TLI TLI
0:1:e44 faza1 M 1 TLI TLI
0:1:e45 faza2 M 1 TLI TLI
0:1:e46 faza3 M 1 TLI TLI
0:1:e48 faza1 M 1 TLI TLI
0:1:e49 faza2 M 1 TLI TLI
0:1:e410 faza3 M 1 TLI TLI
0:1:e411 faza4 M 1 TLI TLI
0:1:e412 faza5 M 1 TLI TLI
0:1:1:e1 Aid_18 A 1
0:1:1:e2 Aid_19 A 1
0:1:1:e43 Malowanie M 1 TLI TLI
0:1:1:e998 Podkład B 1000
0:1:2:e1 Aid_24 A 1
0:1:2:e2 Aid_26 A 1
0:1:2:e47 Lakiernia M 2 TLI TLI
0:1:2:e989 Biały B 1000
0:1:2:e990 Czerwony B 1000
0:1:2:e991 zielen B 1000
0:1:2:e992 pomarancz B 1000
Gdzie :
– ELEM NR – numer elementu
– NAME – nazwa
– T – typ elementu
– CAP – pojemność
– MTBF – awarie
– MTTR – usuwanie awarii
TABLE 5: Job parameters
———————–
JOB NAME ELEM JOBTIME TRIG AID
NR par1 dis par2 EXIT
_____________ ______ _____________ ______ ___ ____ ____ ___
0:j1 E1:J1 0:e41 *
0:j2 E2:J2 0:e42
0:j3 E4:J2 0:e3
0:j413 E3:J2 0:e413 40.00 *
0:j414 E3:J2 0:e413 40.00 *
0:j415 E3:J3 0:e413 40.00 *
0:1:j1 E2:J1 0:1:e1
0:1:j2 E14:J3 0:1:e2
0:1:j41 E3:J1 0:1:e41 120.00
0:1:j42 E4:J1 0:1:e42 120.00
0:1:j44 E5:J2 0:1:e44 120.00
0:1:j45 E7:J3 0:1:e45 120.00
0:1:j46 E8:J3 0:1:e46 120.00
0:1:j48 E9:J3 0:1:e48 120.00
0:1:j49 E10:J3 0:1:e49 120.00
0:1:j410 E11:J3 0:1:e410 120.00
0:1:j411 E12:J3 0:1:e411 120.00
0:1:j412 E13:J3 0:1:e412 120.00
0:1:1:j1 E18:J3 0:1:1:e1
0:1:1:j2 E19:J3 0:1:1:e2
0:1:1:j431 E5:J1 0:1:1:e43 120.00 *
0:1:1:j998 E6:J1 0:1:1:e998
0:1:2:j1 E24:J1 0:1:2:e1
0:1:2:j2 E26:J1 0:1:2:e2
0:1:2:j471 E11:J1 0:1:2:e47 120.00 *
0:1:2:j989 E17:J1 0:1:2:e989
0:1:2:j990 E18:J1 0:1:2:e990
0:1:2:j991 E19:J1 0:1:2:e991
0:1:2:j992 E20:J1 0:1:2:e992
Gdzie :
– JOB NR – numer czynności
– NAME – nazwa
– ELEM – element
– JOBTIME – czas wykonania czynności
– TRIG EXIT – wykonanie funkcji TLI w momencie wyjścia
– AID – wykorzystanie aid
ROUTE LISTING
————-
ROUTE STAGE NAME USES SEND RECV
NR NR JOBNR TO FROM
____________ ______________ _____ _____ _____________________ ____
0:r1 0:s1 R1:1 1 1:s1
0:r1 0:s3 R1:6 3 0
0:r1 0:s42 R1:2 2 0
0:r1 0:s413 R1:4 413 414
0:r1 0:s414 R1:4 414 415
0:r1 0:s415 R1:5 415 42
0:1:r1 0:1:s1 R2:2 1 41
0:1:r1 0:1:s2 R2:14 2 select 1 from 0:e413
0:1:r1 0:1:s41 R2:3 41 42
0:1:r1 0:1:s42 R2:4 42 1:s43
0:1:r1 0:1:s44 R2:5 44 select 1 from 45
0:1:r1 0:1:s45 R2:7 45 46
0:1:r1 0:1:s46 R2:8 46 2:s47
0:1:r1 0:1:s48 R2:9 48 49
0:1:r1 0:1:s49 R2:10 49 410
0:1:r1 0:1:s410 R2:11 410 411
0:1:r1 0:1:s411 R2:12 411 412
0:1:r1 0:1:s412 R2:13 412 2
0:1:1:r1 0:1:1:s2 R3:21 1 3
0:1:1:r1 0:1:1:s3 R3:22 2 0
0:1:1:r1 0:1:1:s43 R3:5 431 select 1 from 0:1:s44 *
0:1:1:r1 0:1:1:s998 R3:6 998 0
0:1:2:r1 0:1:2:s1 R4:28 1 0
0:1:2:r1 0:1:2:s2 R4:30 2 0
0:1:2:r1 0:1:2:s47 R4:12 471 select 1 from 0:1:s48 *
0:1:2:r1 0:1:2:s989 R4:18 989 0
0:1:2:r1 0:1:2:s990 R4:19 990 0
0:1:2:r1 0:1:2:s991 R4:20 991 0
0:1:2:r1 0:1:2:s992 R4:21 992 0
EVENT LIST
———-
1. Time= 0.00
Tli = var[411]:=0
2. Time= 0.00
Tli = var[412]:=120
3. Time= 0.00 (repeated every 5.00 units)
Tli = #exec var421.tli
PRODUCT PARAMETERS
——————
All Product parameters default (size=1 and weight=1).
STOCK LISTING
————-
(0:s1) (R1:1)–> 1000 products (code=401)
(0:1:1:s998) (R3:6)–> 1000 products (code=998)
(0:1:2:s989) (R4:18)–> 1000 products (code=989)
(0:1:2:s990) (R4:19)–> 1000 products (code=990)
(0:1:2:s991) (R4:20)–> 1000 products (code=991)
(0:1:2:s992) (R4:21)–> 1000 products (code=992)
TLI SYNTAX LISTING
——————
(0:1:e41) Entry condition = elqueue[E]=0
(0:1:e42) Entry condition = elqueue[E]=0
(0:1:e44) Entry condition = elqueue[E]=0
(0:1:e45) Entry condition = elqueue[E]=0
(0:1:e46) Entry condition = elqueue[E]=0
(0:1:e48) Entry condition = elqueue[E]=0
(0:1:e49) Entry condition = elqueue[E]=0
(0:1:e410) Entry condition = elqueue[E]=0
(0:1:e411) Entry condition = elqueue[E]=0
(0:1:e412) Entry condition = elqueue[E]=0
(0:1:1:e43) Entry condition = elqueue[E]=0
(0:1:2:e47) Entry condition = elqueue[E]=0
(0:1:e41) Exit condition = var[421]=1
(0:1:e42) Exit condition = var[421]=1
(0:1:e44) Exit condition = var[421]=1
(0:1:e45) Exit condition = var[421]=1
(0:1:e46) Exit condition = var[421]=1
(0:1:e48) Exit condition = var[421]=1
(0:1:e49) Exit condition = var[421]=1
(0:1:e410) Exit condition = var[421]=1
(0:1:e411) Exit condition = var[421]=1
(0:1:e412) Exit condition = var[421]=1
(0:1:1:e43) Exit condition = var[421]=1
(0:1:2:e47) Exit condition = var[421]=1
(0:1:e41) MTBF = random[var[412]]*900+var[411]
(0:1:e42) MTBF = random[var[412]]*900+var[411]
(0:1:e44) MTBF = random[var[412]]*900+var[411]
(0:1:e45) MTBF = random[var[412]]*900+var[411]
(0:1:e46) MTBF = random[var[412]]*900+var[411]
(0:1:e48) MTBF = random[var[412]]*900+var[411]
(0:1:e49) MTBF = random[var[412]]*900+var[411]
(0:1:e410) MTBF = random[var[412]]*900+var[411]
(0:1:e411) MTBF = random[var[412]]*900+var[411]
(0:1:e412) MTBF = random[var[412]]*900+var[411]
(0:1:1:e43) MTBF = random[var[412]]*900+var[411]
(0:1:2:e47) MTBF = random[var[412]]*900+var[411]
(0:1:e41) MTTR = random[2]*900+900
(0:1:e42) MTTR = random[2]*900+900
(0:1:e44) MTTR = random[2]*900+900
(0:1:e45) MTTR = random[2]*900+900
(0:1:e46) MTTR = random[2]*900+900
(0:1:e48) MTTR = random[2]*900+900
(0:1:e49) MTTR = random[2]*900+900
(0:1:e410) MTTR = random[2]*900+900
(0:1:e411) MTTR = random[2]*900+900
(0:1:e412) MTTR = random[2]*900+900
(0:1:1:e43) MTTR = random[2]*900+900
(0:1:2:e47) MTTR = random[2]*900+900
(0:j1) Trig. on Exit = #exec opcje.tli
(0:j413) Aid = select 1 from 3
(0:j414) Aid = select 1 from 3
(0:j415) Aid = select 1 from 3
(0:1:1:j431) Aid = select 2 from 1,2
(0:1:2:j471) Aid = select 2 from 1,2
(0:s1) Send to = 1:s1
(0:1:s2) Send to = select 1 from 0:e413
(0:1:s42) Send to = 1:s43
(0:1:s44) Send to = select 1 from 45
(0:1:s46) Send to = 2:s47
(0:1:1:s43) Send to = select 1 from 0:1:s44
(0:1:1:s43) Receive from = select 1 from 998
(0:1:2:s47) Send to = select 1 from 0:1:s48
(0:1:2:s47) Receive from = select 1 from (if kolor[0:1:e46,1]=1 then 989 e
lse (if kolor[0:1:e46,1]=2 then 990 else (if kolor[0:1:
e46,1]=3 then 991 else 992)))
EXECUTE FUNCTION AT REQUEST: usertli
#EXEC FILE (J1-EXIT TRIGGER ) <opcje.tli>
if produced[0:j1]<31 then projekt[C]:=projekty[produced[J]+1,1]
if produced[0:j1]<31 then wersja[C]:=projekty[produced[J]+1,2]
if produced[0:j1]<31 then kolor[C]:=projekty[produced[J]+1,3]
if produced[0:j1]<31 then tapicerka[C]:=projekty[produced[J]+1,4]
if produced[0:j1]<31 then fotele[C]:=projekty[produced[J]+1,5]
if produced[0:j1]<31 then zderzaki[C]:=projekty[produced[J]+1,6]
if produced[0:j1]<31 then atrapa[C]:=projekty[produced[J]+1,7]
if produced[0:j1]>30 then projekt[C]:=3
if produced[0:j1]>30 then wersja[C]:=produced[0:j1]-30
if produced[0:j1]>30 then kolor[C]:=random[3]+1
if produced[0:j1]>30 then tapicerka[C]:=random[1]+1
if produced[0:j1]>30 then fotele[C]:=random[1]+1
if produced[0:j1]>30 then zderzaki[C]:=random[1]+1
if produced[0:j1]>30 then atrapa[C]:=random[2]+1
DATABASE NAMES:
_______________
Database 1 = projekty
ATTRIBUTE NAMES:
________________
Attribute 10 = projekt
Attribute 11 = wersja
Attribute 12 = kolor
Attribute 13 = tapicerka
Attribute 14 = zderzaki
Attribute 15 = fotele
Attribute 16 = atrapa
End of document
- b. Przedstawienie raportów z programu Taylor II
Przestawione poniżej raporty są raportami przykładowymi, z powodu losowego powstawania awarii, większość danych zmienia się w zależności od ilości i czasu awarii.
– raport elementów
Taylor II Element report Date: 14-09-1999 Time: 14:04
=================================================================
Cluster Elnr Elname Produced AvgQueue Util Down
——– —- ——– ——– ——– —— ——
0 41 Wejście 182 915.13
0:1 1 Buff_2 181 1.00
0:1 41 Mycie 180 1.00 75.42 9.38
0:1 42 Suszenie 179 0.99 74.58 6.25
0:1:1 43 Malowani 178 0.99 74.58
0:1 44 faza1 177 0.98 74.17
0:1 45 faza2 176 0.98 73.75
0:1 46 faza3 175 0.98 73.33
0:1:2 47 Lakierni 174 0.97 72.92
0:1 48 faza1 173 0.97 72.50
0:1 49 faza2 172 0.96 72.08
0:1 410 faza3 171 0.96 71.67 9.38
0:1 411 faza4 170 0.95 71.25
0:1 412 faza5 169 0.95 70.83
0:1 2 Buff_14 169
0 413 Transpor 507 0.70 70.42
0 42 Wyjście 89.50
0:1:1 998 Podkład 900.12
0:1:2 989 Biały 978.39
0:1:2 990 Czerwony 970.45
0:1:2 991 zielen 979.14
0:1:2 992 pomaranc 976.06
gdzie :
– Cluster – numer grupy
– Elnr – numer elementu
– Elname – nazwa elementu
– Produced – liczba produktów
– AvgQueue – średnia kolejka
– Util – wykorzystanie urządzeń
– Down – przerwy w pracy spowodowane uszkodzeniem
– raport czynności
Taylor II Job report Date: 14-09-1999 Time: 14:27
=================================================================
Cluster J_nr Jobname Produced Proces AvgQueue AvgWait
——– —- ——– ——– ——– ——– ——–
0 41 E1:J1 182 182 915.13 25439.8
0:1 1 E2:J1 181 181 1.00 158.2
0:1 41 E3:J1 180 180 1.00 159.1
0:1 42 E4:J1 179 179 0.99 158.7
0:1:1 43 E5:J1 178 178 0.99 158.9
0:1 44 E5:J2 177 177 0.98 159.1
0:1 45 E7:J3 176 176 0.98 159.3
0:1 46 E8:J3 175 175 0.98 159.6
0:1:2 47 E11:J1 174 174 0.97 159.8
0:1 48 E9:J3 173 173 0.97 160.0
0:1 49 E10:J3 172 172 0.96 160.2
0:1 410 E11:J3 171 171 0.96 160.5
0:1 411 E12:J3 170 170 0.95 160.0
0:1 412 E13:J3 169 169 0.95 160.2
0:1 2 E14:J3 169 169
0 413 E3:J2 169 169 0.23 40.0
0:1:1 998 E6:J1 179 900.12 25923.4
0:1:2 989 E17:J1 37 978.39 28177.7
0:1:2 990 E18:J1 55 970.45 27949.0
0:1:2 991 E19:J1 41 979.14 28199.3
0:1:2 992 E20:J1 42 976.06 28110.4
gdzie :
– Cluster – numer grupy
– J_nr – numer pracy
– Jobname – nazwa pracy
– Produced – liczba produktów
– Proces – liczba przetworzonych produktów
– AgvQueue – średnia kolejność
– AgvWait – średni czas oczekiwania
- c. Przedstawienie wyników symulacji w postaci graficznej
Jedną z metod graficznego przedstawienia wyników jest diagram symulowanego modelu.
Diagram ten pozwala na dokładne zorientowanie się, w jakim stanie znajdują się poszczególne elementy podczas trwania symulacji. Na wykresie oś pozioma jest reprezentowana przez czas, natomiast oś pionowa reprezentuje elementy modelu.
Opis wykresy :
– busy – zajęty
– idle – nie obciążony
– block – element nie może przyjąć nowego produktu
– pause – postój
– down – element uszkodzony
Stan danego elementu i kolejkę do tego elementu można przedstawić na wykresie przedstawiającym tylko ten element . Wykresami takimi są wykresy wykorzystania elementu ( Utilization Pie ) i wykresy kolejki do elementu ( Queue graph )
Wykorzystanie maszyny 43
Gdzie :
– busy – zajęty
– idle – przerwa w pracy
– down – element uszkodzony
Wykorzystanie maszyny 47
Wykorzystanie maszyny 42
Kolejka do maszyny 43
Na powyższym wykresie oś pozioma przedstawia czas symulacji, oś pionowa ilość elementów w kolejce.