Plant Simulation: egy darab útjának a követése
Szimulációs modell készítése során többször is szükség lehet arra, hogy egy darab (MU) útját kövessük.
Ilyen esetek lehetnek:
- átfutási idő vizsgálata
- vezérlési logika tesztelése
- modell jobb megértése
A darab útvonal követés egyik megoldása lehet, hogy az érintett gépek kilépési vagy belépési kontrollját módosítva készítünk valamilyen naplófájlt a darab útvonaláról. Ez nem túl elegáns megoldás és nem is túl rugalmas, ha új gépek kerülnek a rendszerbe. A cikkben nézzük meg egy másik megoldást.
Az alap ötlet, hogy a Part objektumhoz készítünk egy figyelőt, observert, ami vizsgálja, hogy hol található éppen az adott darab, és ha változik a darab helye, magyarul átkerül másik gépre, akkor ezt naplózza az adott darabhoz tartozó táblázatba.
A lépések a következők:
- Part objektumra új attribútumok beállítása
- Observer létrehozása és vezérlő logikájának elkészítése
Part objektumra új attribútumok beállítása
Az MU-s mappa Part objektumából készítsünk egy másolatot a helyi menü Duplicate parancsával és a másolatot nevezzük el TracePartnak.

A TracePart objektumot megnyitva hozzuk létre az alábbi felhasználói attribútumokat a megfelelő adattípussal.

Observer létrehozása és vezérlő logikájának elkészítése
A TracePart objektum ablakában a Tools menü Edit Observers… menüpontot választva létre tudunk hozni egy új figyelőt az alábbi paraméterekkel:

Az Executed method mezőben egy új metódust az F4 gombbal vagy a helyi menü Create Control parancsával lehet létrehozni.
A metódus kódja pedig ez lehet:

A kód megnézni, hogy az adott Partra (MU-ra) aktív-e a követés (TraceActive), ha igen, akkor az aktuális szimulációs időt és a darab helyét (Location) beleírja az MU-hoz tartozó TraceTable-be.
Azért, hogy minden futtatásnál üres legyen a követés tábla, az MU reset metódusába még ezt a kódot érdemes beleírni. Megjegyzés, hogy ez komoly túlbiztosítás, hiszen az MU-k, amikor létrejönnek a Source objektumban, akkor úgyis üres táblával indulnak.

Fontos még, hogy a Source objektumban ne feledjük el beállítani, hogy ezt a TracePart objektumot hozza létre az alapértelmezett Part helyett.

A komponenst használva egy modellben, ilyesmi TraceTable jöhet létre.

Nagyon tetszik a megoldás. Tuningolásként javasolnám, hogy nem csak newValue használnám, de oldValue is, így rögtön lehet tudni hogy honnan, hova kerül a darab.
Köszi az ötletet 🙂 Bár az oldValue értéke az előző sorban megtalálható. Olyan meg ugye nincs, hogy egy gyárban egy darab két állomás között eltűnik? 😀