Lift szimuláció

Módosítva: 2012. okt. 30.
Egy újabb gyakorló feladat a "szokásos" PLCSIM-WinCC Flexible RT szimulációs megoldással.

Ezúttal nem az "alapfokon" kategóriába helyeztem, mert most nem fogok működtető programot (megoldást) is mellékelni, csak magát a szimulációt.A működtető program megírása a feladat.
A szimulátor egy lakóház személyfelvonójának működését utánozza meglehetősen leegyszerűsítve. Csak az alapfunkciók vannak benne (ajtó nyit/zár, lift le/fel mozgatás, hívások).

Szeretném megjegyezni, hogy az oktatásban elég gyakori futófény, közlekedési lámpa és ez a lift példa is a valóságtól eléggé elrugaszkodott példa. Sem liftet, sem futófényt sem közlekedési lámpát nem vezérelnek ipari PLC-vel a gyakorlatban. Mind a három feladat eléggé gyakori és meglehetősen egyforma a saját kategóriájában (mármint a liftek hasonlítanak egymáshoz, nem a liftek a futófényekhez vagy jelzőlámpákhoz). Ezért gazdaságosabb olyan speciális vezérlést tervezni és építeni hozzájuk, amik csak arra az adott feladatra valók.
Annak az oka, hogy mégis ide került az, hogy remekül lehet vele "szívni". Aki most ismerkedik a PLC programozással és belevág ennek a feladatnak a megoldásába, tapasztalni fogja, hogy látszólag egyszerű a feladat, de valójában nehéz.

A szimuláció

A liftet egy FC255-ös programblokk és egy DB255-ös adatblokk szimulálja. Ez a két blokk teszi lehetővé, hogy a megfelelő kimenet bekapcsolása a megfelelő mozgást hozza létre és hogy a véghelyzet érzékelő bemenetek (lift helyzete, ajtó nyitva, zárva, stb) megfelelően működjenek. Ha a példát korrekten akarjuk megoldani, akkor ezt a két blokkot ne módosítsuk!
A lift megjelenítését a képernyőn WinCC Flexible runtime biztosítja a rá előre elkészített project segítségével.

A project, ami csak a szimuláció viselkedését szabályozó programot (FC255/DB255) tartalmazza, hasonlóan működik a PLC-ből nézve, mint ahogy a lift viselkedne a valóságban. Ennek bemutatására készítettem egy video-t:


A szimulátor működése vezérlőprogram nélkül (Lift1_250.avi)


A kimeneteket VAT táblából kapcsolgatva mozgathatjuk a motorokat és ki/be kapcsolhatjuk a visszajelző lámpákat és a 7 szegmenses kijelző szegmenseit.
A szimuláció nem figyeli (nem szimulálja) a motor elakadását, motorvédő kapcsolót. Ha a lift kabin már elérte a fizikai mozgástere határát de még mindig be van kapcsolva az irány és sebesség kimenet, nem történik semmi. Ezzel a szimuláció nem foglalkozik.
Ha a feladat programozása során olyan hibát követünk el, hogy a lift (vagy az ajtó) nem áll meg a véghelyzetben, vagy egyszerre akar menni mindkét irányba, a hibát nekünk kell megtalálni és kijavítani.



A program futtatása a PLCSIM programmal történik. Az OB1 meghívja az üres FC1 blokkot. Ebben az FC1-ben kell megírni a vezérlő programot a feladat szerint.





A szimuláció indítása nem más, mint a PLCSIM program elindítása, a program rátöltése, és a WinCC Flexible RRT indítása. Ha az RT létrehozta a kapcsolatot a PLCSIM-el, akkor a szimuláció kész a próbára. Innentől úgy programozhatjuk és tölthetünk rá újabb és újabb program blokkokat, mint egy valódi S7 PLC-re.

A feladat

Az emeletenként elhelyezett hívó gombok és hívás visszajelzők kezelése.
Ha a lift nem azon az emeleten áll, akkor a hívó gomb megnyomása (I0.0-I0.5) után a vezérlés jelezze a hívógomb lámpájának bekapcsolásával (Q5.2-Q5.7), hogy a hívást tudomásul vette. Amikor a  lift megérkezik és az ajtó kinyílik, a vezérlés azon az emeleten törölje a hívás jelzést.

A lift kabinban elhelyezett gombok és a gombok visszajelzőinek kezelése.
Az emeletenként elhelyezett hívógombokhoz hasonlóan a lift kabinban lévő gombok (I2.5-I3.3) megnyomásával is lehessen a liftet egy tetszőleges  emelethez küldeni. Ha a lift nem azon az emeleten tartózkodik, akkor egy emelet gombjával bekapcsoljuk a hívást, amit a gomb lámpája jelez (Q7.0-Q7.5). Az adott emelet hívása mindaddig legyen aktív, amíg a lift azon az emeleten meg nem áll és ott ki nem nyitja az ajtót.

A lift kabinban van egy 7 szegmenses kijelző (Q6.0-Q6.6). Írjuk meg ennek vezérlését is. A kijelző mutassa annak az emeletnek a számát, ahol a lift
 éppen tartózkodik (földszinten "F" betűt jelezzen). A kijelző mindig jelezze ki az emelet számát (két emelet között haladva is), soha ne legyen sötét!


Hívási prioritások
A lift az emeleteken lévő hívógombok szempontjából lefele valósítson meg gyűjtővezérlést. Ez annyit jelent,hogy ha egyszerre több emeleten is van hívás alatta és fölötte is, akkor a tartózkodási helyétől felfele irányba induljon el és először menjen a legmagasabb hívott emeletre, majd onnan lefele menet álljon meg minden olyan emeleten, amelyiken van aktív hívás. Mindezt attól függetlenül ebben a sorrendben teljesítse, hogy a hívógombokat milyen sorrendben nyomták meg. Ha lefele gyűjtés közben kap egy a tartózkodási helyénél magasabb emeleten hívást, akkor azt csak a pillanatnyilag folyamatban lévő teljesítés után teljesítse. Vagyis először végezze el lefele menet az összes alsó hívás teljesítését.

A lift kabinban lévő hívógombok szempontjából a gyűjtés eltérőrn működjön: Mindig az emeletek sorrendje szerint állítson fel fel elsőbbségi sorrendet. Ha a kabinban egymás után több, felsőbb emelet gombját is megnyomták (mert többen is beszállnak a liftbe a földszinten különböző úticéllal) akkor a gombnyomás után induljon el felfele és lentről felfele sorban teljesítse az összes hívást. Ha a lift nem a földszinten áll és a kabinban alsóbb és felsőbb emelet hívását is megnyomták, akkor először abba az irányba induljon el, amelyik irányban az először hívott emelet van. Ha abban az irányban több hívás is van, akkor abban a sorrendben teljesítse amilyen sorrendben az emeletek vannak, majd induljon el a másik irányba szintén az emeleteket útirány szerinti sorrendjében teljesítve a maradék hívásokat.
A liftben kiadott hívási parancsokat a vezérlés tehát felfele menet emelkedő számsorrendben, lefele menet fordított számsorrendben teljesítse (így haladás közben mindig megáll annál az emeletnél amelyiken áthalad és hívás van oda).
Amikor azonban az emeleteken hívják, akkor a hívást mindig a pillanatnyi tartózkodási helyétől lefele menet teljesítse emelkedő számsorrendben. ha a pillanatnyi helyétől számított alsóbb emeleteken nincs hívás csak fölötte, akkor először menjen a legmagasabb hívott emeletre és onnan lefele teljesítsen.

Ha egyszerre van hívás a liftből és az emeletekről is, akkor a liftből kezdeményezett hívást szolgálja ki először, de ha eközben lefele halad és olyan emelet következik amelyiken kintről van hívás, akkor azt szolgálja ki! :)


Egy rövid bemutató a vezérlő programmal ellátott lift működéséről (Lift2_250.avi)


A project ZIP file-ban: Lift_UW.zip

Szükséges szoftverek: Step7 V5.4, PLCSIM V5.4, WinCC Flexible ES 2008 SP2, WinCC Flexible RT 2008 SP2



2012.10.24
Szirty