Taylor II for Windows szimulátor
OKTATÁSI SEGÉDLET
a Termelési folyamatok modellezése, a Számítógépes gyártásirányítás
és a Számítógépes termelésirányítás c. tantárgyakhoz.
Készítették:
Dr. Erdélyi Ferenc
Szabó Gábor
Miskolci Egyetem
Gépészmérnöki Kar
Informatikai Intézet
Alkalmazott Informatikai Tanszék
Miskolc, 1997. március
1. BEVEZETÉS A SZIMULÁCIÓS MODELLEZÉSHEZ
2. A TAYLOR II FOR WINDOWS SZIMULÁTOR
A fontosabb TLI változók áttekintése
TLI utasítások
A TAYLOR II input stratégiái
A gyártósor modell (demo3s) dokumentációja lista formátumban
A gyártócella modell (demo4s) dokumentációja táblázatos formátumban
1. BEVEZETÉS A SZIMULÁCIÓS MODELLEZÉSHEZ
A szimuláció gyakran használt módszer olyan modellek vizsgálatára, melyek nagyszámú és idôben változató determinisztikus és sztochasztikus állapotváltozókkal irhatók le. A szimuláció részletes információkat tartalmazhat a rendszer összetevôirôl, hozzá idomulhat pl. egy gyártórendszer egyedi jellegzetességeihez, értékelheti az állapotváltozók idôbeli viselkedéseket, és rendszerspecifikus mennyiségeket szolgáltathat a szimulált rendszer jóságának méréséhez.
A szimuláció akkor elônyös, ha egy rendszermodell analítikus kezelése nem valósítható meg. Sok gyártórendszer rendelkezik például olyan egyedi sajátosságokkal, melyek matematikai modellekkel zárt alakban nem kezelhetôk. Az analitikus sorbanállási hálózati modellek alkalmazása például sokszor nehézségbe ütközik, ha a vizsgálandó rendszer tartalmaz olyan közös objektumokat mint ugyanannak a robotnak a használata több munkahelyen vagy több munkahelyhez rendelt véges puffer kapacitás, stb. Egy gyártórendszer alkalmazhat komplex, dinamikus irányítási stratégiát, mely a rendszer összetevők előző állapotbeli viselkedésén és aktuális állapotán alapulhat. Ha az irányítási stratégia szabály alapú, az analitikus modellezés nagyon bonyolult lehet.
Legtöbb analítikus modell a rendszer állapotváltozóinak csak állandósult állapotát értékeli ki és így méri a rendszer viselkedését. Nem veszi viszont figyelembe a működés közben a rendszer struktúrájában beállt változásokat. Például kieshetnek egyes aktív kapacitások, vagy megváltozhatnak a rendszerrel szemben támasztott követelmények. Számos esetben különleges feltételek vagy váratlan események tranziens hatását is le kell kezelnie a modellnek. Például tanulmányozni kell a gépek meghibásodása és az ezzel járó javítások tranziens hatását a folyamatban levő munkákra. Megjelenhetnek új prioritások és ütemezési döntések, valamint az átfutási idôt befolyásoló technológiai események. A dolgozók viselkedése is fontos tényezô lehet az ütemezés és az irányítási stratégia szempontjából. A modellezés célja nagyon sokszor éppen a rendszer időben változó, dinamikus viselkedésének grafikus megjelenítése és megértése.
A szimulációs modellek többféle entitás osztályt tartalmaznak, mint pl. munkahelyeket, eszközöket, tranzakciókat és várakozó sorokat. A munkahely és az eszköz a gyártórendszer egy-egy alkotóeleme, mely végrehajt vagy segít egy operációt. Az entitás attribútumai jelentik a jelen vagy a múltbeli állapotot, mint pl. egy gép üzemel, várakozik, elromlott vagy javítás alatt van. A tranzakció egy alkatrész, információ, vagy valami más alkotóelem feldolgozását jelenti, mely felhasználja a gyártórendszer eszközeit. A tranzakció attribútumai értéket, melyek megkülönböztetik más tranzakcióktól, mint pl. műveleti idő kezdete, termék kód, esedékesség dátuma, stb.. Egy várakozó sor vagy puffer az a hely, ahol egy tranzakció várakozik egy eszközre. A sorbanálló tarnzakciók száma a várakozó sor jellegzetes attribútuma. A rendszer-modell maga is egy entitásnak tekinthető, amely rendelkezik attribútumokkal, mint pl. az aktuális szimulációs idő, a munkában lévô munkák száma, stb.
A modell állapota egy adathalmaz, vagy rekord, amely az aktuális viszonyokat mutatja a modellben. Értékét általában az entitások attribútumainak értékei határozzák meg. A rendszer állapota valamely esemény hatására változik meg. Az esemény időben meghatározott pillanatban következik be, rendszerint egy reláció teljesülése hatására. Mivel az állapotváltozások diszkrét időpontokban lépnek fel, ezért az ilyen modellezést diszkrét esemény szimulációnak nevezik.
Egy eseményt azonosítójával, bekövetkezése feltételeinek relációjával, ezek idôpontjával, és az esemény által feldolgozott entitásokkal írhatunk le. A soronkövetkező eseményeket a megelőző események ütemezik. Az események között eltelt idő lehet konstans, a modell bemenô adata, vagy valamilyen eloszlásfüggvény szerint véletlenszerűen változó értékek. Az ütemezett események halmaza, a bekövetkezés időbeli sorrendjébe rendezve alkotja az eseménylistát. A jósági indexeknek két típusa létezik. Azok az indexek, amelyek a szimulációs idő minden pontjában rendelkeznek értékekkel, mint pl. egy várakozó sor hossza vagy egy eszköz állapota, időben változó indexek. Azokat az indexeket, amelyek csak események idején mérhetők, mint pl. az az időtartam, amelyet egy alkatrész a gyártásban eltölt, megfigyelhetô indexeknek nevezzük.
A szimulációs nyelv olyan speciális célú számítógépes nyelv, mely tartalmazza a modell felépítéséhez szükséges adat-szerkezeteket és képességeket valamint beépített eszközöket a modellek tapasztalati elemzéséhez és a szimuláció eredményeinek megjelenítéséhez.
A szimulációs rendszer a szimulációs nyelvet integrálja más szoftver eszközökkel, mint pl. grafikus modell szerkesztőkkel, statisztikai elemzőképességekkel, animációfejlesztőkkel, valamint jegyzőkönyv és állapotdiagramm generálási lehetőségekkel.
2. A Taylor II for Windows szimulátor
A TAYLOR II for Windows szimulátor (a késôbbiekben egyszerűen: TAYLOR II) az F&H Simulations B.V. holland cég terméke. A TAYLOR II olyan programcsomag, amely alkalmas a valós világ diszkrét, esemény-vezérelt rendszereinek modellezésére, különösen a gyártó-, logisztikai- és szolgáltató rendszerek modellezésére.
A TAYLOR II egy vizuális interaktív szoftvercsomag, mely lehetôvé teszi a szimulációs modellek grafikus fejlesztését, a szimulált rendszer dinamikus megjelenítését, valamint a felhasználó beavatkozását a futó alkalmazásba. Beavatkozás alatt azt értjük, hogy a szimuláció megállítható és információt kérhet a felhasználótól, vagy a felhasználó is leállíthatja a szimulációt és beavatkozhat, pl. új paraméterekkel folytathatja a szimulációt.
A szoftver fejlesztési változata csak hardver-kulccsal védett állapotban futtatható. A run-time változat futtatásához az alkalmazáson kívül csak a DOS 6.x és Windows 3.x vagy a Windows95 operációs rendszer szükséges.
A TAYLOR II alapvetô modellezô entitásai:
Az elemek a modell erôforrásai. Egy modell felépítése mindig az elemek elrendezési rajzával, a lay-out-tal kezdôdik.
Elemtípusok:
Gépek | (Machine): | Erôforrások általános megjelenítési formája. | |
Segédeszköz | (Aid): | Gépekhez hozzárendelt, adott operációhoz szükséges eszköz pl. szerszám, operátor, stb. |
Passzív anyagtároló | (Buffer): | Általánosan használt tároló eszköz (puffer). | |
Forrás-nyelô | (InOut): | A termékek rendszerbe léptetésére (generálására) ill. eltávolítására ("megevésére") szolgáló eszköz. | |
Tartály | (Reservoir): | Ömlesztett, folyékony anyagok szimulációjára használt tároló eszköz. (pl. tartály amely nyitva/zárva áll.) | |
Raktár | (Warehouse): | Termékek pozícionálálása is alkalmas puffer. |
Aktív anyagmozgató | (Transporter): | Általános célú szállítóeszköz egyedi termékek vagy sorozatok (batch) szállítására. Ha szállítási nyomvonalat (path) használunk, külön idôt rendelhetünk hozzá, és várakozó sorok is modellezhetôk. | |
Szállítószalag | (Conveyor): | Tárolásra és folyamatos szállításra alkalmas eszköz, különösen ha a termékeket késleltetni akarjuk a puffer elhagyásakor. | |
Szállítási nyomvonal | (Path): | Különleges elem, amely nem terméket, hanem pl. aktív anyagmozgató nyomvonalát, viselkedését határozza meg. |
Általános megjegyzés: A modell megtervezésekor elsô lépésben használjuk a gép és puffer elemeket. Speciális elemeket csak akkor alkalmazzuk ha valamilyen részletre vagyunk kíváncsiak (Pl. segédeszköz kezelés, beállítás (setup) idôk) vagy vizualizációs célokra (szállítási nyomvonal - távolságok figyelembe vétele, stb.) .
Az elemek entitás osztályokhoz tartoznak. Az elemek egyedei különbözô attribútumokat tartalmaznak:
Az elemek csoportokba (cluster) szervezhetők. A csoport a modell egy "almodelljét" jelenti, az elemek olyan csoportját, mely tartalmazza az elemek közötti útvonalat (routing). A modell maga az alapcsoport (root cluster), mely egy vagy több alcsoportot is tartalmazhat és ilyen módon hierarchikus modellt építhetünk fel.
Fontos megjegyzés: A TAYLOR II szimulátor a művelettervet (a Taylor rendszerben angolul - job), amely a valóságban a termék objektum attribútuma, elsődlegesen a munkahely elemhez rendeli. Ennek az a következménye, hogy a több különböző terméket és alternatív műveleti sorrendterveket kívánó modellek csak körültekintő modellezéssel, változó tömbök, mátrixok bevezetésével valósíthatók meg. A TAYLOR II terminológiájában használt "job" fogalom a munkahely elemhez rendelt operációt (pl. esztergálás, marás, mérés, minőségvizsgálat, pénztári kifizetés, stb...) jelenti.
A TAYLOR II fő menüpontjai és opciói:
1. File
2. Modell
3. Szimuláció
4. Eredmények
5. Vizualizációs paraméterek beállítása
6. Modellezési paraméterek beállítása
7. Eszközök
Statisztikai eloszlásminták elemzése: történeti adatok illesztése elméleti vagy tapasztalati eloszlásmintákra
Dinamikus ikonok megjelenítése külön monitoring ablakban
TLI interpreter: TLI utasítások szerkesztése, végrehajtása, eredményüzenet kiiratása
Felhasználói diagrammok: meghatározása, típusa, adatábrázolási tartomány, magyarázó szövegek
Szövegszerkesztő
Háttárszerkesztő: bittérképes háttér, segédábrák, magyarázó szövegek, stb.
2 D-s ikonszerkesztő
3 D-s ikonok beolvasása ikonkönyvtárból ('*.il3' file-okból)
Ütemezés generálása: termékek érkezésének ütemezése statisztikai eloszlásokkal - paraméterei: ütemezések sorszáma, érkezések száma, termékek száma/érkezés, ütemezett idő, ismétlési tényező, ismétlési időköz, váletlenszám generátor
8. Ablakok kezelése
9. Súgó
2.2 A TAYLOR II for Windows szimulátorról konkrétan...
Két egyszerű példamodellen szeretnénk bemutatni a szimulátor fô tulajdonságait, képességeit.
A modell megalkotása során az elsô lépés az elemek elrendezése, az aktív anyagmozgatók szállítási nyomvonalának megadása a cellában (lásd. a 2.1. ábrán).
2.1. ábra A gyártósor elrendezési vázlata
Az 1. tárolórón érkeznek a nyersdarabok a cellába, majd a 2. pufferen várakoznak a 3. fúró-maró központra. A művelet elvégzése után a 4. pufferen keresztül a félkész darabok az 5. hôkezelô kemencébe kerülnek csomagok formájában. Ezután a termékek a 6. pufferen várakoznak a 7. mérôállomásra, mely megvizsgálja és szétválogatja a jó munkadarabokat a 15. pufferbe, a selejtes munkadarabokat (kb. a darabok 20%-a selejtes) a 14. pufferbe. Aktív anyagmozgató kocsik (12., ill. 10.) szállítják a kész munkadarabokat a 11. raktárba, a selejtes termékeket pedig a 8. gyűjtôpufferbe.
Megjegyzés: A példában azért nem forrás-nyelô elemet választottunk a termékek cellába irányításánál, mert mint majd késôbb látni fogjuk, a termékek ütemezett sorrendben és darabszámban érkeznek és ekkor puffer elemként kell megadnunk a forrást. A selejtes termékek tárolása a 8. pufferen szemléltetési célokat szolgál.
A tervezés második lépése a termékek útvonalának (routing) meghatározása a gyártósoron belül. Erre szolgál a Model | Layout menüpontból elérhetô ikon + . Lenyomása után az elrendezési vázlaton grafikusan megjelennek az elemekhez rendelt Stage | Send to, Receive from paraméterekben megadott bejárási útvonalak (lásd 2.2. ábra).
2.2. ábra A termékek lehetséges bejárási útvonolai
Megjegyzés: Alapértelmezésben a modell elemek létrehozásakor a Stage | Send to paraméterhez a program automatikusan hozzárendeli a sorszám szerint soron következô elem Stage számát. Ezáltal azt feltételezi, hogy a technológia szerint is az lesz a következô operáció helyszíne. Ez azonban mind grafikusan, mind a paraméterek átírásával módosítható.
A gyártósor modellben a termékek kötött logisztikai sorrendet követnek, ebbôl következôen a műveleti sorrendeknek nincsenek változatai. A példában ugyan a 7. mérôállomásról a termékek két irányban haladhatnak tovább a raktárba ill. a gyűjtôpufferre, ez azonban nem befolyásolja az alapmodell lényegét. Hasonló a helyzet az egymást helyettesítô gépek beiktatása esetén is, amikor bizonyos technológiai műveletek párhuzamosan, egyidôben végezhetôk. Ekkor csökken a job-ok átfutási ideje (Makespan), ezenkívül feloldható az esetleges "szűk keresztmetszet" problémája.
A harmadik lépés a modell elem, operáció, bejárási útvonal és egyéb paramétereinek meghatározása, azaz a konkrét feladat részleteinek "beidomítása" TLI változók, TLI utasítások, függvények, paraméterek, táblázatok, stb. segítségével.
A szimuláció általában a változók kezdeti értékének beállításával kezdôdik. A Settings | Simulate | Parameters menüpontban az alábbi beforefunc függvény megadásával inicializálható, illetve a Popup "3 "állapotában a 2.3. ábrán található üzenetablak jelenik meg:
function beforefunc
init[1,1]:=1
init[1,2]:=0
ahol init[1,1]: a hôkezelô kemencébe érkezô csomagkapcsolt termékek száma
init[1,2]: a selejtes termékek száma
A következô lépés a termékek darabszámának és érkezési sorrendjének meghatározása, egy ütemterv táblázat kitöltése. A példában négy különbözô kóddal ellátott termék (nyersdarab) érkezik a cellába 1-4-3-2 sorrendben. A táblázat elsô oszlopában a termék érkezési ideje, a második oszlopban a termék kódja, a harmadikban az útvonal helyszíne, ahonnan a termék érkezik, a negyedik oszlopban a termék darabszáma látható a 2.4. ábrán. Egy adott modellhez több érkezési ütemtervet is rendelhetünk, így összehasonlító elemzések is végezhetôk.
Az 1. tároló elem Elements | Element parameters | More alpontjában a bemeneti stratégiák közül választottuk ki az ütemezett érkezéseket (Scheduled arrivals).
2.4. ábra Termékek érkezésének ütemterv táblázata
A következô lépésben a megmunkálási folyamatban szereplô elemek (fúró-maró központ, hôkezelô kemence és mérôállomás) műveleti ciklusidôit adjuk meg a négyféle terméktípusra a ctime táblázatban (2.5. ábra). A táblázatban a sorok a termékkódokat, az oszlopok a gépeket jelentik. A 7. mérôállomás műveleti ciklusideje 400 [s] átlagérték körül, 100 [s] átlagos eltéréssel normális eloszlás szerint váltakozik. Az Elements | Job parameters | Time alpontjában rendelhetjük hozzá a táblázat elemeit az aktuális operációhoz a következô TLI változóval:
pl. Elem 3, Operáció 3: ctime[product[E,1],1].
Elem 5, Operáció 5: ctime[product[E,1],2]
Jelentése: ctime[az aktuális E elemen levô termék kódja, a gép sorszáma a táblázatban]
Elsô példánkban minden egyes elemhez egyetlen operáció és egyetlen bejárási útvonal helyszín tartozik, ezért a sorszámok egyszerűen azonosíthatók.
2.5. ábra
Az 1. tároló elem Elements | Job parameters | Trigger on Exit alpontjában a következô TLI állítás szerepel:
if lastprodout[1]<>curprod[1] then init[1,1]:=init[1,1]+1.
Jelentése: Ha az 1. elemet utoljára elhagyó termék kódja különbözik az aktuális termékkódtól, akkor növelje eggyel az init[1,1] értékét (1, 2, 3, 4).
Értelme: Az 5. hôkezelô kemence csomagkapcsolt operációja megköveteli, hogy ha a új terméktípus következik a gyártósoron be tudjuk állítani az Elements | Job parameters | Batch in ill. out megfelelô értékét az alábbi módon:
Batch in: schedquant[1,init[1,1]]
Batch out: schedquant[1,init[1,1]]
Jelentése: Az 1. érkezési ütemterv aktuális termékéhez rendelt összdarabszám beállítása a termékcsomagok hôkezeléséhez. A csomagok mérete és műveleti ciklusideje terméktípusonként változik a ctime táblázat 2. oszlopa szerint (2.5. ábra).
A triggerek olyan TLI állítások, melyek egy esemény (Pl. termék belépése vagy kilépése egy operációból) bekövetkezésekor értékelôdnek ki. Fontos megjegyezni, hogy az att1[x,y]...att16[x,y] attribútumok csak triggerek használatával aktualizálódnak. A 7. mérôállomás att1[C]:=random[99] belépési triggere azt jelenti, hogy az éppen az elemre belépett termékhez rendeljünk hozzá egy 0..99 közé esô véletlen számot. Ezt az Elements | Stage parameters | Send to alpontjában használjuk fel olyan módon, hogy ha az att1[C]<20, akkor selejtes lesz a termék, ha nem, akkor jó és a raktárba továbbítjuk:
select 1 from (if att1[7,1]<20 then 14 else 15).
A szimuláció során folyamatosan figyelemmel követhetjük a szimulációs idôt, a gépek kihasználtságát, pufferek blokkolt összidejét, gépek várakozó állapotának százalékos alakulását a szimulációs idô arányában, stb. E célra szolgálnak a dinamikus ikonok, melyek közül 4 külön kis ún. monitoring ablakban jeleníthetô meg (2.6. ábra), a többi a modell ablakon belül kis téglalapokban.
Monitor ablak | TLI változó vagy állítás |
1 |
100*(totidletime[3]/time) |
2 |
utilization[5] |
3 |
time/60 |
4 |
totblockedtime[6]/60 |
2.1. táblázat
2.6. ábra
Megjegyzés: A 2.1. táblázatban ill. a 2.6. ábrán látható eredmények perc-ben értendôk, míg a szimulációs idôt kijelzô óra másodpercben mutatja az eltelt idôt.
A dinamikus ikonok megjelenítési formái: hisztogramm, vonal-, oszlop és tortadiagrammok, szöveg, érték, ikon, stb.
A szimuláció egyik legfontosabb célja annak vizsgálata, hogy a vizsgálni kívánt minôségi indexek pl. átfutási idô, kihasználtsági mutatók, várakozó 2.7. ábra
sorok, gépek leterheltsége ill. szabad kapacitásai hogyan változnak meg különbözô kezdeti feltétetek és elem paraméterek módosítása során. A szimulációs eredmények grafikus megjelenítése a Result | Element Graphs és Status Diagram menüpontokban történik. A 2.7. ábrán a 9. kocsi kihasználtsági tortadiagrammja látható, mely az állapotok százalékos arányát ábrázolja (jelentésüket lásd Függelék A status[x] változó magyarázatánál).
Az erôforrások job leterheltségét és állapotait szemléltetô ún. Gantt diagrammot a Result | Status Diagram alatt találjuk (2.8. ábra). A gyakorlatban ismert a job-ok szerint ábrázolt Gantt diagram is, a Taylor II alapértelmezésben nem tartalmazza ezt a szemléltetési módot. A Tools | User Defined Graph alpontban a felhasználó megadhat olyan TLI állításokat, melyeket 14 féle diagramm típuson ábrázolhat.
2.8. ábra Gantt diagramm (erôforrások szerint)
A cella struktúrájú rendszerre jellemzô, hogy zárt termelési csoportot képez. Egy gyártócella technológiailag meghatározott feladatok elvégzésére képes, azonban tartalmazhat egymást helyettesítô gépkapacitásokat is. A cella gépein a termékek a job-ok ütemezett sorrendjében kerülnek megmunkálásra ill. feldolgozásra. A job-ok az egyes termékekhez tartozó operációk (technológiailag kötött!) sorrendjét és ciklusidejét írják le. A job-ok sorrendje általában nem kötött, sok esetben azonban a prioritás, az elkészülés határideje, a beérkezés idôpontja, stb vagy optimálandó célfüggvények korlátozhatják a job-ok felszabadításának (release) sorrendjét, azaz indítását.
A következô példában egy egyszerű, két gépes gyártócella modelljét elemeztük a TAYLOR II-val. A cella két NC-esztergából (2., 3.) és egy mérôállomásból áll (4.) (2.9. ábra).
2.9. ábra A gyártócella elrendezési vázlata
A négy szállítószalag (5., 6., 7., 8.) a valóságban egy lóversenypálya alakú, végtelenített szállítószalagot modellez. A 9. pufferrôl érkeznek a termékek a 8. majd a 7. szállítószalagra. Az 1. elem (Machine) egy két-megfogópofás 2.10. ábra
RTT típusú hengerkoordinátás robotot modellez. Ez azt jelenti, hogy feltételezzük, a robot egyidôben maximum két terméket tud mozgatni, ezért a kapacitása 2. Ilyen esetben további megfontolást igényel a robot lineáris- és szögsebessége, melyet idôegységre átszámolva kell megadni a ctime táblázatban műveleti ciklusidôként. A modell megalkotásában figyelembe kell venni, hogy a gépek között nincsenek ideiglenes tároló elemek (pufferek), ezért korlátozni kell a robot által a gépekhez továbbított termékek számát:
1. Robot:
Entry trig. - prodin[1,1]:=prodin[1,1]+1
Exit trig. - prodin[1,1]:=prodin[1,1]-1
7. Szállítószalag
Exit cond. - prodin[1,1]<=1
Megjegyzés: Egy új termék csak akkor hagyhatja el a 7. szállítószalagot és léphet be a robot munkaterébe, ha a gépek ill a robot munkaterében összesen maximum 1 termék tartózkodik.
A megmunkált termékek az 5.-6.-8. szállítószalagokon továbbítódnak a 10. pufferre.
A 2.10. ábrán a modell 3D-s elrendezése látható. Nagyobb, komplex gyártórendszerek modellezésénél a 3D-s, perspektívikus szemléltetési mód (3d wire, 3D solid) áttekinthetôvé és valósághűbbé teszi a modellt.
A modellre jellemzô a több operáció és a többszörös bejárási útvonal (helyszín), melyet a Settings | Model alpontban állíthatunk be. Ez azt jelenti, hogy egy elemen több különbözô operáció is elvégezhetô ill. a termék többször érinthet útja során különbözô helyszínként egy elemet.
Példánkban összesen 10 darab, 1. típusú és 2. típusú termék érkezik felváltva, megfelelô idôközönként a gyártócellába (lásd 2.11. ábra).
2.11. ábra
Amint láthattuk az elôzô gyártósor példában, a bejárási útvonalat egyszerűen a gépek ill. munkahelyek grafikus összekötésével (Model | Layout) határoztuk meg. A gyártócella modellben a termékek a job-oknak megfelelôen különbözô utakat járnak be, ezért ezt egy táblázatban kell megadnunk. A 2.2. táblázat sorai a terméktípusokat, oszlopai a bejárási útvonal helyszíneket, a mezôk az aktuális helyszínhez tartozó Stage | Send to paramétert tartalmazzák:
1 |
2 |
3 |
4 |
... |
11 |
12 |
13 |
14 |
... |
21 |
... |
31 |
|
1 |
2 |
11 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
13 |
0 |
21 |
2 |
3 |
0 |
11 |
21 |
0 |
0 |
0 |
14 |
0 |
0 |
0 |
0 |
Táblázat 2.2.
Az alábbi, 2.3. táblázat sorai a terméktípusokat, oszlopai a bejárási útvonal helyszíneket, a mezôk az aktuális helyszínhez tartozó Job | Time paramétert tartalmazzák:
1 |
2 |
3 |
4 |
... |
11 |
12 |
13 |
14 |
... |
21 |
... |
31 |
|
1 |
100 |
1000 |
0 |
0 |
0 |
100 |
0 |
500 |
1500 |
4 |
300 |
0 |
300 |
2 |
100 |
0 |
500 |
1500 |
0 |
300 |
1000 |
0 |
0 |
0 |
300 |
100 |
Táblázat 2.3.
A Settings | Model alpontban állítható be, ha egy elemhez több operációt és egy operációhoz több útvonal helyszínt akarunk rendelni.
Operációk jelölései:
Robot (E1): J1, J11, J21, J31
NC_eszterga_1 (E2): J2, J12
NC_eszterga_2 (E3): J3, J13
Mérôállomás (E4): J4, J14
Természetesen az operációk sorszámozása J1...J10 tartományban is lehetséges, esetünkben az érthetôség kedvéért a gépek sorszáma szerint adtuk meg.
A két táblázat együttesen határozza meg az adott termékre vonatkozó műveleti terveket. A job, azaz a termékek gyártására adott rendelések modellezéséhez még szükségünk van a fent említett ütemterv táblázatra is.
Néhány szót kell ejtenünk még a robot különleges szerepérôl a modellben. A robot mozgása nem szimulálható és animálható a modellben, egyszerűen gépként írható le. Ebbôl következik, hogy a kiszolgálási idôket (ellentétben az aktív anyagmozgatóval pl. AGV), nem tudjuk valós idôben modellezni. A 2.2. táblázatban a robotmozgásokhoz tartozó idôket a termék által megtett úttal arányosan adtuk meg konkrét értékekkel. Egy szerelô robot modellezése esetén nem csupán a szerelési idôket kell tekintetbe venni, hanem a megfogó pofák cseréjét is külön idôként.
A szimuláció végén a 10. Puffer-re érkezô termékek számlálásával
Entry trig.: if elqueue[10]>=9 then message["Szimuláció vége!"]
kijelezhetjük a "Szimuláció vége" üzenetet egy külön ablakban (2.12. ábra).
2.12 ábra Üzenet ablak
A TAYLOR II lehetôvé teszi a TLI parancsok és változók felhasználásával a szimuláció csomagkapcsolt (batch) futtatását. Az alábbiakban bemutatjuk a modell demo4s.bch batch run file-ját, a kapott eredmények képernyô kimenete a 2.13. ábrán látható:
#tpos 35,11 /*szöveges képernyô kimenet pozíciója*/
#font 2,4,8 /*font típusának, méretének és színének beállítása*/
#circ 45,14,10,11 /*színnel telített kör rajzolása megadott pozícióban*/
#info /*Információ sorainak megjelenítése*/
Gyártócella modellezése
#info
#wait 1 /*várakozás 1 másodpercig*/
#butt Presentation,2,2,29,21,7,0 /*Ablak adott felirattal, méretekkel és színnel*/
#butt 3,3,27,18,15,1
#tpos 4,4
#font 1,4,8
#info
A gyártócella két NC esztergából és
egy mérôállomásból áll.
#info
#wait 1
#anim 1 /*Animáció gyors teszteléshez*/
#X[1..4] /*A demo táblázat elemeinek kinullázása*/
#Y[1..8]
demo[X,Y]:=0
prodin[1,3]:=0.8 /*Sebesség override:=80%*/
#simu 30000 /*Szimuláció futtatása 30000 idôegységig*/
demo[1,1]:=utilization[1] /*A demo táblázat elemeinek feltöltése*/
demo[2,1]:=totblockedtime[1]/60
demo[3,1]:=time/60
demo[4,1]:=prodin[1,3]
prodin[1,3]:=0.9
#simu 30000
demo[1,2]:=utilization[1]
demo[2,2]:=totblockedtime[1]/60
demo[3,2]:=time/60
demo[4,2]:=prodin[1,3]
prodin[1,3]:=1
#simu 30000
demo[1,3]:=utilization[1]
demo[2,3]:=totblockedtime[1]/60
demo[3,3]:=time/60
demo[4,3]:=prodin[1,3]
prodin[1,3]:=1.1
#simu 30000
demo[1,4]:=utilization[1]
demo[2,4]:=totblockedtime[1]/60
demo[3,4]:=time/60
demo[4,4]:=prodin[1,3]
prodin[1,3]:=1.2
#simu 30000
demo[1,5]:=utilization[1]
demo[2,5]:=totblockedtime[1]/60
demo[3,5]:=time/60
demo[4,5]:=prodin[1,3]
prodin[1,3]:=1.3
#simu 30000
demo[1,6]:=utilization[1]
demo[2,6]:=totblockedtime[1]/60
demo[3,6]:=time/60
demo[4,6]:=prodin[1,3]
prodin[1,3]:=1.4
#simu 30000
demo[1,7]:=utilization[1]
demo[2,7]:=totblockedtime[1]/60
demo[3,7]:=time/60
demo[4,7]:=prodin[1,3]
prodin[1,3]:=1.5
#simu 30000
demo[1,8]:=utilization[1]
demo[2,8]:=totblockedtime[1]/60
demo[3,8]:=time/60
demo[4,8]:=prodin[1,3]
#butt Results,10,2,44,37,7,0
#butt 11,3,42,35,15,1
#tpos 12,4
#info /* Eredmények kiértékelésének megjelenítése*/
Sebesség override optimumkeresés>>
Robot maximális kihasználtsága esetén:
A robot kihasználtsága: TLI>demo[1,demo@ima[1..1,1..8]]<TLI %.
A robot blokkolt összideje:TLI>demo[2,demo@ima[1..1,1..8]]<TLI min.
Az átfutási idő: TLI>demo[3,demo@ima[1..1,1..8]]<TLI min.
A robot sebesség override:TLI>demo[4,demo@ima[1..1,1..8]]<TLI %.
Robot minimális blokkolt ideje esetén:
A robot kihasználtsága: TLI>demo[1,demo@imi[2..2,1..8]]<TLI %.
A robot blokkolt összideje:TLI>demo[2,demo@imi[2..2,1..8]]<TLI min.
Az átfutási idő: TLI>demo[3,demo@imi[2..2,1..8]]<TLI min.
A robot sebesség override:TLI>demo[4,demo@imi[2..2,1..8]]<TLI %.
Cella minimális átfutási ideje esetén:
A robot kihasználtsága: TLI>demo[1,demo@imi[3..3,1..8]]<TLI %.
A robot blokkolt összideje:TLI>demo[2,demo@imi[3..3,1..8]]<TLI min.
Az átfutási idő: TLI>demo[3,demo@imi[3..3,1..8]]<TLI min.
A robot sebesség override:TLI>demo[4,demo@imi[3..3,1..8]]<TLI %.
#info
#wait 30
Megjegyzés: A TAYLOR II 4.1. verziója még nem teszi lehetôvé a szimulációs parancsok (#simu, #warm, #goto) ciklusba szervezését, így a sebesség override-ok 0.8...1.5 tartományban csak külön lépésekben változtathatók meg és futattható újra a modell szimulációja.
2.13. ábra Az eredmény kimenete a képernyôn
A felhasználó jelentéseket készíthet a Result | Reports | Select és Columns menüpontban, mely egy szöveges file-t ad eredményül a meghatározott TLI változók aktuális értékeivel (2.14. ábra).
Megjegyzés:
A szimulációs program- csomag támogatja a jelentések felhasználó által meghatárott formátumú file-ba való kiiratását a #file filenév, #line TLI parancsokkal. Az overide értelmezése itt operációs idôkre és nem sebességre vonatkozik!!
demo4s Taylor II demo4s Date: 13-03-1997 Time: 12:09
=====================================================================
Robot kihasznaltság Robot blokkolt ideje Átfutási idô [min] Sebesség override %
-------------------- -------------------- -------------------- --------------------
40.51 63.00 411.43 0.80
44.53 61.50 421.10 0.90
48.36 60.00 430.77 1.00
51.74 57.67 442.93 1.10
54.69 56.33 457.10 1.20
55.87 62.00 484.77 1.30
57.87 61.00 500.00 1.40
61.77 60.00 500.00 1.50
[1] Askin, Ronald G., Standridge, Charles R.: MODELING AND ANALYSIS OF MANUFACTURING SYSTEMS (1993 - John Wiley & Sons)
[2] F&H Simulations B.V. (1996): TAYLOR II for Windows TUTORIAL
[3] F&H Simulations B.V. (1996): TAYLOR II for Windows USER’S GUIDE
[4] F&H Simulations B.V. (1996): TAYLOR II for Windows TLI
[5] F&H Simulations B.V. (1996): TAYLOR II for Windows EXAMPLES, APPENDICIES
Köszönetnyilvánítás
Ez az oktatási segédlet A számítógépes termelésirányítás, gyártásirányítás és szimuláció eredményeinek bevezetése az oktatásba című, AMFK-685/95. jelű projekt támogatásával készült.
address[x] (útvonal) | Bejárási útvonal címe, ahová a termékek kerülnek az x helyrôl. Ez a változó csak akkor használható, ha a cím nem kifejezés. |
att1[x,y] .. att16[x,y] (elem, termék pozíció) |
Az y. termék
attribútumának értéke a sorban az x. elemen. pl. att4[12,240] a 240. termék 4. attribútuma a 12. elemen. (csak trigger esetén aktualizálódik) |
avgqueue[x] (operáció) | A termékek számának átlaga az x operáción a szimuláció idején. |
avgwait[x] (operáció) | A termékek x operáción töltött átlagos ideje (idôegységben). |
curcycle[x] (operáció) | Az aktuális ciklusidô értéke az x operáción. |
curjob[x] (elem) | Az aktuálisan választott operáció az x elemen. |
curprod[x] (elem) | Az aktuálisan választott termék az x elemen. |
curstage[x] (elem) | Az aktuálisan választott bejárási útvonal helye az x elemen. |
elqueue[x] (elem) | Az aktuálisan az x elemen található termékek száma. |
fixcost[x] (elem) | Az x elem fix költsége (ár/idôintervallum). |
intcost[x] (elem) | Az x elem kamat költsége. |
location[x,y] (elem) | Csak szállítószalagok és
raktárak esetén alkalmazható. Szállítószalag: Az y. termék helyzete az x. szállítószalagon. Raktár: Az y. termék helyzete az x. raktárban. |
matrix[x,y] | A mátrix x. sorának y. oszlopának eleme. |
maxqueue[x] (elem) | Az x. elemen egyidôben tartózkozó termékek maximális száma. Csak passzív tárolók esetén alkalmazható. |
message["üzenet"] | Üzenetablakot jelenít meg és mindig 0 a visszatérési értéke. |
minqueue[x] (elem) | Az x. elemen egyidôben tartózkozó termékek minimális száma. Csak passzív tárolók esetén alkalmazható. |
mtbf[x] (elem) | Meghibásodások között eltelt idô az x. elemen. |
mttr[x] (elem) | Az x. elem hibaelhárításával eltelt idô, más szóval az üzemzavar idôtartama. |
processed[x] (operáció) | Az x. operáció által feldolgozott termékek száma. Összevetve a produced[x]-el: Általában a kettô azonos, kivéve, amikor selejt keletkezik vagy különbözô bemeneti és kimeneti csomagok vannak. |
prodqueue[x,y] (elem, termék) |
Az y. termékkóddal rendelkezô termékek aktuális száma az x. elemen. |
produced[x] (operáció) | Az x. operáció által legyártott termékek száma. Összevetve a processed[x]-el: Általában a kettô azonos, kivéve, amikor selejt keletkezik vagy különbözô bemeneti és kimeneti csomagok vannak. |
product[x,y] (termék, termék pozíció) |
Az x. elem sorában
található y. termék termékkódja. (csak trigger esetén aktualizálódik) |
random[x] | Diszkrét véletlen értékkel tér vissza a 0..x tartományban. |
schedat1[x,y]... schedat4[x,y] |
Az x. ütemterv y. rekordjának 1. ... 4. attribútuma. |
schedprod[x,y] | Az x. ütemterv y. rekordjának termékkódja. |
schedquant[x,y] | Az x. ütemterv y. rekordjának mennyisége (darabszáma). |
schedstage[x,y] | Az x. ütemterv y. rekordjának bejárási útvonalhelye. |
schedtime[x,y] | Az x. ütemterv y. rekordjának ütemezett ideje. |
status[x] (elem) | Az x. elem aktuális
állapotával tér vissza. Állapotok: 1=működik, 2=várakozik, 3=blokkolt, 4=üzemzavar miatt leállt, 5=üzemszünet, 6=kikapcsolva, 7=feltöltés/kitárolás alatt, 8=semmi, 9=tele mozog (pl. AGV), 10=üresen mozog (pl. AGV) |
time | Az aktuális szimulációs idô. |
timespent[x] (operáció) | Az aktuális termék x. operáción eltöltött ideje. |
totblockedtime[x] (elem) | Az x. elem blokkolt állapotban eltöltött összes ideje (idôegységben). |
totbusytime[x] (elem) | Az x. elem működô
állapotban eltöltött összes ideje (idôegységben). Megjegyzés: 100*(totbusytime[x]/time)=utilization[x] |
totidletime[x] (elem) | Az x. elem várakozó állapotban eltöltött összes ideje (idôegységben). |
utilization[x] (elem) | Az x. elem kihasználtsága a teljes idô százalékában. |
Fô csoportjai:
#anim | Animációs szint
változtatása (csomagkapcsolt futtatás esetén) 1: Nincs információ 2: Statisztikai 3: Egyszerű 4: Teljes |
#area | Szöveges vagy illusztrációs terület megjelenítése a képernyôn. |
#butt | ‘Nyomógomb’ vagy ablak megjelenítése. |
#circ | Kör rajzolása a képernyô egy meghatározott pontjában. |
#clus | Csoport nevének szövegét kiteszi a jelentésbe. |
#cont | Szimuláció folytatás a szimulációs idôig. |
#decm | Decimális számjegyek számának beállítása a TLI eredményekhez. |
#enme | Elem nevének szövegét kiteszi a jelentésbe |
#exec | TLI utasítás végrehajtása a megadott szöveges file-ban. |
#expl | TLI magyarázó szöveg kiiratásának be- ill. kikapcsolása. |
#file | Név szerint kiírja a megfelelô file-t a kimenetre, on/off elindítja/leállítja. |
#font | Font típusának, méretének és színének beállítása. |
#freq | Képernyô frissítési idôköz idôegységekben. |
#goto | Szimuláció folytatása a megadott idô paraméterig. |
#info | Információs szövegek kiiratása a képernyôre. |
#jnme | Operáció nevének kiiratása a jelentésbe (Results | Reports). |
#line | Üres vagy tartalommal töltött sorok kiiratása szöveges file-ba. |
#mess | Interaktív üzenet megjelenítése értékadás céljából. |
#name | Az aktuális modell nevét adja vissza. |
#open | Szimulációs modell megnyitása. |
#pict | Bittérképes (.bmp) file adott pozícióba helyezése a képernyôn. |
#save | Aktuális modell elmentése. |
#simu | Szimuláció a megadott idô paraméterig |
#snme | Útvonal helyszín nevének kiiratása a jelentésbe (Results | Reports). |
#text | Megjegyzés szöveg a TLI parancsfile-ban. |
#tpos | Szövegkiiratás x,y pozíciója a képernyôn. |
#ttex | Szöveg kiiratása meghatározott ideig a képernyô egy adott pozíciójába. |
#velo | Animáció sebességének beállítása. |
#view | Nézôpont beállítása megadott file-ból és a modell frissítése. |
#wait | Várakozás meghatározott ideig vagy egy billentyű lenyomására. |
#warm | Szimuláció meleg-indítása (Simulate | Single run | Warmstart). |
FÜGGELÉK B
None | Az elem minden esetben fogadja a terméket (alapértelmezés). |
Not blocked | Addig nem fogadja a terméket, amíg az útvonalon soron következô puffer nem szabad. Tipikus JIT modellekben: |
Available | Az elem rendelkezésre áll. Nincs kikapcsolva, üzemzavar miatt leállítva ill. nincs üzemszünet alatt. |
Empty element | Termékcsomagok megmunkálása esetén csak akkor fogad újabb termékeket, ha az összes terméket már megmunkálta |
Empty job | Csak akkor fogadja a terméket, ha más terméken nincs ugyanaz az operáió. |
Empty stage | Csak akkor fogadja a terméket, ha más termék nincs ugyanazon az útvonal helyszínen. |
Empty product | Csak akkor fogadja a terméket, ha nincs másik, ugyanolyan kódú termék az elemen. |
One job | Csak akkor fogadja a terméket, ha üres az elem vagy ugyanazt az operációt kell végrehajtani. |
One stage | Csak akkor fogadja a terméket, ha üres az elem vagy ugyanazt az operációt kell ismételten végrehajtani. |
One product | Csak akkor fogadja a terméket, ha üres az elem vagy ugyanolyan kódú termék érkezik az elemre. |
Entry from one location | Csak akkor fogadja a terméket, ha üres az elem vagy ugyanarról az elemrôl érkezik, mint az aktuális termék. |
Entry at one moment | Csak akkor fogadja a terméket, ha üres az elem vagy ugyanabban a pillanatban érkezett a termék az elemre, mint az aktuális termék. |
Scheduled arrivals | Ütemtervben (Schedule nr.) meghatározott idôben érkeznek a termékek az elemre. Az elem várakozik a termékre addig, amíg a hozzátartozó idô eléri a szimulációs idôt. |
Scheduled arrivals (repeat) | Ütemtervben (Schedule nr.) meghatározott idôben érkeznek a termékek az elemre. Az elem várakozik a termékre addig, amíg a hozzátartozó idô eléri a szimulációs idôt, majd újra kezdi a ciklust. |
Scheduled planning | Ha az ütemtervnek (Schedule nr.) megfelelôen érkezik a termék az elemre, akkor fogadja és a következô rekord bejegyzése szerint vár a következô termékre. |
Scheduled planning (repeat) | Ha az ütemtervnek (Schedule nr.) megfelelôen érkezik a termék az elemre, akkor fogadja és a következô rekord bejegyzése szerint vár a következô termékre. Az ütemterv végén újrakezdi a folyamatot. |
demo3s Taylor II Model Documentation Date: 16-01-1997 Time: 13:40
=========================================================================
GENERAL REMARKS
-------------------------------
demo3s.SIM consists of 15 elements, 15 jobs and 15 stages.
Time representation is as follows: 60 units make 1 minute, 60 minutes make 1 hour, 8 hours make 1 day. Before simulation beforefunc will be executed. At request usertli will be executed.
LISTING OF ELEMENTS
----------------------------------
(1) Tároló is a Buffer with a capacity of 10
entry list = Scheduled Arrivals
path pos. = 500
job number = 1
Used by Job 1 (E1:J1) with a jobtime of 800.00 Normal dev. 100.00
exit trig. = if lastprodout[1]<>curprod[1] then init[1,1]:=init[1,1]+1
Done at stage 1 from which it is sent to stage 2
Stage 1 has a stock of 0 products (1)
(2) Puffer is a Buffer with a capacity of 10
path pos. = 0
job number = 2
Used by Job 2 (E2:J1) with a jobtime of 0.00
entry trig. = if init[1,1]>4 then init[1,1]:=4
Done at stage 2 from which it is sent to stage 3
(3) Furo-maro kozp. is a Machine with a capacity of 1
job number = 3
Used by Job 3 (E3:J1) with a jobtime of TLI
Done at stage 3 from which it is sent to stage 4
(4) Puffer is a Buffer with a capacity of 10
queue disc. = Max product
job number = 4
Used by Job 4 (E4:J1) with a jobtime of 0.00
Done at stage 4 from which it is sent to stage 5
(5) Hokezelo kemenc is a Machine with a capacity of 10
job number = 5
Used by Job 5 (E5:J1) with a jobtime of TLI
batch = schedquant[1,init[1,1]]
batch out = schedquant[1,init[1,1]]
Done at stage 5 from which it is sent to stage 7
(6) Puffer is a Buffer with a capacity of 10
path pos. = 0
job number = 6
Used by Job 7 (E8:J2) with a jobtime of 0.00
Done at stage 7 from which it is sent to stage 6
(7) Mérőállomás is a Aid with a capacity of 1
path pos. = 0
job number = 7
Used by Job 6 (E7:J1) with a jobtime of 400.00 Normal dev. 100.00
entry trig. = att1[C]:=random[99]
Done at stage 6 from which it is sent to: select 1 from (if att1[7,1]<20 then 14 else 15)
(8) Puffer is a Buffer with a capacity of 20
path pos. = 500
job number = 8
Used by Job 13 (E13:J2) with a jobtime of 0.00
entry trig. = init[1,2]:=init[1,2]+1
Done at stage 13 from which it is sent to stage 0
PRODUCT PARAMETERS
-----------------------------------
All Product parameters default (size=1 and weight=1).
STOCK LISTING
------------------------
(1) (R1:1) --> 0 products (code=1)
TLI SYNTAX LISTING
-------------------------------
(1) Trig. on Exit = if lastprodout[1]<>curprod[1] then init[1,1]:=init[1,1]+1
(2) Trig. on Entry = if init[1,1]>4 then init[1,1]:=4
(3) Jobtime = ctime[product[E,1],1]
(5) Jobtime = ctime[product[E,1],2]
(5) Batch in = schedquant[1,init[1,1]]
(5) Batch out = schedquant[1,init[1,1]]
(7) Trig. on Entry = att1[C]:=random[99]
(8) Trig. on Entry = init[1,2]:=init[1,2]+1
(7) Send to = select 1 from (if att1[7,1]<20 then 14 else 15)
EXECUTE FUNCTION BEFORE SIMULATION: beforefunc
EXECUTE FU-NCTION AT REQUEST: usertli
DATABASE NAMES:
____________________
Database 1 = ctime
Database 2 = init
TLI FUNCTIONS
-----------------------
function beforefunc
init[1,1]:=1
init[1,2]:=0
End of document
demo4s Taylor II Model Documentation Date: 13-03-1997 Time: 12:26
=========================================================================
GENERAL REMARKS
------------------------------
demo4s.SIM consists of 10 elements, 16 jobs and 17 stages.
Time representation is as follows: 60 units make 1 minute,
60 minutes make 1 hour, 8 hours make 1 day.
Before simulation beforefunc will be executed.
At request usertli will be executed.
TABLE 1: Element parameters
--------------------------------------
ELEM NAME T CAP ENTRY EXIT QUEU REP
NR COND LIST COND DISC AID
_____ _____________ _ ____ ___________ ____ ________ ___
1 Robot M 2 Fifo
2 NC_eszterga_1 M 1 Fifo*
3 NC_eszterga_2 M 1 Fifo
4 Mérőállomás M 1 Fifo
5 Conv_5 C 10 Location
6 Conv_6 C 3 Location
7 Conv_7 C 3 * Location
8 Conv_8 C 8 Location
9 Buff_9 B 10 arrv file 1 Fifo
10 Buff_10 B 10 Fifo
TABLE 2: Element parameters (various) --> CONVEYOR/WAREHOUSE/RESERVOIR
--------------------------------------------------------------------------------------------------------------
ELEM NAME T CAP PROD ACM SPEED LNGTH
NR SPAC
_____ ______ _ ____ ____ ___ _____ _____
5 Conv_5 C 10 Y 1.00 10.00
6 Conv_6 C 3 Y 1.00 10.00
7 Conv_7 C 3 Y 1.00 10.00
8 Conv_8 C 8 Y 1.00 8.00
TABLE 3: Job parameters
---------------------------------
JOB NAME ELEM JOBTIME TRIG TRIG
NR par1 dis par2 ENTR EXIT
_____ ______ _____ _____ ___ ____ ____ ____
1 E1:J1 1 TLI *
2 E2:J1 2 TLI
3 E3:J1 3 TLI
4 E4:J1 4 TLI
5 E5:J1 5 *
6 E6:J1 6
7 E7:J1 7
8 E8:J1 8
9 E9:J1 9 *
10 E10:J1 10
11 E1:J2 1 TLI
12 E2:J3 2 TLI
13 E3:J2 3 TLI
14 E4:J2 4 TLI
21 E1:J12 1 TLI
31 E1:J19 1 TLI *
ROUTE LISTING
-----------------------
ROUTE STAGE NAME USES SEND
NR NR JOBNR TO
_____ ______ _____ _____ _____________________________________________
1 1 R1:1 1 select 1 from routing[curprod[1],1]
1 2 R1:2 2 select 1 from routing[curprod[2],2]
1 3 R1:3 3 15
1 4 R1:4 4 select 1 from routing[curprod[4],4]
1 5 R1:5 5 6
1 6 R1:6 6 8
1 7 R1:7 7 1
1 8 R1:8 8 select 1 from (if att1[8,1]>0 then 10 else 7
1 9 R1:9 9 8
1 10 R1:10 10 0
1 11 R1:11 11 select 1 from routing[curprod[1],11]
1 12 R1:14 12 select 1 from routing[curprod[2],12]
1 13 R1:14 13 select 1 from routing[curprod[3],13]
1 14 R1:15 14 select 1 from routing[curprod[4],14]
1 15 R1:17 3 select 1 from routing[curprod[3],3]
1 21 R1:21 21 select 1 from routing[curprod[1],21]
1 31 R1:31 31 select 1 from routing[curprod[1],31]
PRODUCT PARAMETERS
-----------------------------------
All Product parameters default (size=1 and weight=1).
STOCK LISTING
----------------------
(1) (R1:1) --> 0 products (code=0)
TLI SYNTAX LISTING
-------------------------------
(7) Exit condition = prodin[1,1]<=1
(2) Repair aid = select 1 from 3
(1) Trig. on Entry = prodin[1,1]:=prodin[1,1]+1
(1) Jobtime = ctime[curprod[1],1]*prodin[1,3]
(2) Jobtime = ctime[curprod[2],2]
(3) Jobtime = ctime[curprod[3],3]
(4) Jobtime = prodin[1,2]
(5) Trig. on Exit = att1[C]:=1
(9) Trig. on Entry = if time<100 then prodin[1,2]:=1500
(11) Jobtime = ctime[curprod[1],11]*prodin[1,3]
(12) Jobtime = ctime[curprod[2],12]
(13) Jobtime = ctime[curprod[3],13]
(14) Jobtime = ctime[curprod[4],14]
(21) Jobtime = ctime[curprod[1],21]*prodin[1,3]
(31) Trigger on Exit = prodin[1,1]:=prodin[1,1]-1
(31) Jobtime = ctime[curprod[1],31]*prodin[1,3]
(1) Send to = select 1 from routing[curprod[1],1]
(2) Send to = select 1 from routing[curprod[2],2]
(4) Send to = select 1 from routing[curprod[4],4]
(8) Send to = select 1 from (if att1[8,1]>0 then 10 else 7)
(11) Send to = select 1 from routing[curprod[1],11]
(12) Send to = select 1 from routing[curprod[2],12]
(13) Send to = select 1 from routing[curprod[3],13]
(14) Send to = select 1 from routing[curprod[4],14]
(15) Send to = select 1 from routing[curprod[3],3]
(21) Send to = select 1 from routing[curprod[1],21]
(31) Send to = select 1 from routing[curprod[1],31]
EXECUTE FUNCTION BEFORE SIMULATION: beforefunc
EXECUTE FUNCTION AT REQUEST: usertli
DATABASE NAMES:
__________________
Database 2 = ctime
Database 3 = routing
Database 4 = prodin
Database 5 = demo
TLI FUNCTIONS
-----------------------
function beforefunc
prodin[1,1]:=0
End of document
T H E E N D