Tolópad szimuláció S7-300/400-ra


Ez az írás egy gyakorló feladat. Egy egyszerű gép PLC programjának megírásán vezet végig, lépésről lépésre. A PLC programozás gyakorlása sokszor nem egyszerű dolog. Ennek az az oka, hogy otthon általában az ember nem rendelkezik olyan készre szerelt gépsorokkal, aminek a programját megírhatná, próbálgathatná. Egy valós berendezés programozását viszont csak gyorsan és hatékonyan dolgozó, sokat tapasztalt szakemberre bízzák rá. Éles helyzetben sem idő, sem lehetőség nincs a szárnypróbálgatásra. Mindez érthető, ha belegondolunk, hogy olyankor fokozottan fennáll a veszélye annak, hogy egy nem megfelelően megírt program kárt tesz a gépben. Továbbá a munkát mindig annyi idő alatt kell elvégezni ami eleve lehetetlen.
Tanulás közben hamar túllép az ember a LED-ek és közlekedési lámpák villogtatását végző programokon. A következő lépés megtételében segít remélhetőleg ez a cikk.
Készítettem egy Step7 projectet ami egy tolópad működését utánozza ProTool-ban.
Ez a szimuláció ugyanazon az elven működik mint a korábban már bemutatott fúrógép szimuláció.
Egy gép működését utánozza, amire programot lehet írni és azzal működtetni. A virtuális gép működését, mozgását, a véghelyzet kapcsolók állapotát látni lehet, stb.
Amire szükség lesz:

A gép

Amikor egy berendezést, gépet, gépsort vezérlő PLC-re programot kell írnunk a legfontosabb, hogy tudjuk a PLC milyen információkat kap a gép és a kezelőszervek állapotáról és milyen beavatkozásokat vagy jelzéseket tud elvégezni. Szükségünk lesz tehát egy ki és bemeneti listára, ami pontosan leírja hogy a PLC melyik bemenetére milyen funkciójú jel érkezik és melyik kimenete pontosan mit csinál.
Szintén nagyon fontos "és legtöbbször ez a nehezebb dolog) hogy a legapróbb részletig ismernünk kell a gép kívánt működését, és magát a gépet is. Tisztában kell lennünk minden munkafolyamattal és azok minden körülményével, a folyamatok közben felmerülő esetleges zavaró tényezőkkel, azok hatásaival és veszélyeivel.
Ezek ismerete nélkül nem lehetséges a vezérlőprogram megírása. Ezek részleges ismerete pedig legjobb esetben is csak egy félig (úgy-ahogy)  működő gépet eredményezhet.
De ha mindent tudunk a gépről, akkor is előfordulhat, hogy nem gondolunk valamilyen kivételre és előfordul a körülményeknek olyan konstellációja, ami nem kívánt eredményt hoz (a gépkezelők szinte ösztönösen megtanulják az ilyeneket kihasználni). Úgyhogy résen kell lenni. :)

No de most egy egyszerű gépet fogunk modellezni, a fenti feltételek megteremtése ezért nem nehéz.
A gépet nevezzük tolópadnak. Ennek a sematikus ábrája jelenik majd meg a ProTool szimulációban.
A gépen két motor van, és 12 végállás kapcsoló. A tolópad egy bejövő sínpáron (0. csatorna) síneken guruló kocsikat fogad, és másik 4 kimenő csatornára (1-4) továbbítja.
A tolópad a bejövő és kimenő vágányokra merőleges, süllyesztett pályán mozog, és magán a tolópadon is van egy sínpár, amire a kocsikat "felhúzza", A felhúzást egy lánc végzi, ami előre és hátra tud mozogni két véghelyzet között.  A kocsi és a lánc egy "köröm" segítségével (azok kialakítása miatt) "összeakadnak". A tolópad oldal irányban képes mozogni (ami neki előre és hátra irány), egy két sebességű motor hajtja.

A séma:


A fekete kerettel szimbolizált tolópad a rajta lévő lánccal és végállásokkal együtt jobbra-balra tud mozogni a számára kijelölt vízszintes pályán. A türkiz színben pompázó kocsik (amiből kettő van) a függőleges pályákon tudnak mozogni fel le, illetve amennyiben a tolópad fölött vannak, akkor azzal együtt vízszintesen (ilyenkor a pad viszi a kocsit).
A végálláskapcsolók megnyomott állapotát a sémán a kapcsolónál piros jelzés mutatja.

A szimulátor
A szimulációt egy FC100-as blokk működteti. Ez kapcsolja be és ki a végálláskapcsolókhoz rendelt merker biteket (amiket a programunkban majd bemenetekként fogunk felhasználni). Ez a blokk figyeli a kimenetként funkcionáló biteket (lánc előre hátra, tolópad előre hátra, gyors, lassú)  és a ProTool RT-ben ez a blokk mozgatja a tolópad és a kocsik sematikus ábráját. Van még egy FC101 is, amit az FC100 hív, a szimulációhoz ez is szükséges.
Az FC101-et, FC100-at és a hozzá tartozó DB100 adatblokkot tehát módosítás nélkül be kell töltenünk a PLC-be (vagy a PLCsim-be), többet nem is kell törődnünk a jelenlétükkel vagy a tartalmukkal.

Ha minden szoftveres feltétel adott, töltsük le ezt az Step7 projectet: TPSzim1.zip
Bontsuk ki a ZIP-ben lévő könyvtárat valahova. Indítsuk el a Simatic Managert és töltsük be vele ezt a projectet. Indítsuk el a PLCSim szimulátort, töltsük rá az OB1, FC1, FC100 és DB100 blokkokat, kapcsoljuk futás üzemmódba a PLCSim-et (RUN-P). A Simatic managerből nyissuk meg a "PC" nevű ProTool projectet, majd az elindított ProTool-ban kattintsunk a Start ProTool/Pro RT ikonra (vagy válasszuk a File menü Test pontjának Start Runtime menüpontját). Ekkor el kell indulnia a ProTool RT runtime szoftvernek a tolópadszimulációval és fel kell vennie a kapcsolatot a már futó PLCSim szimulátorral, amiben jelenleg már fut a tolópad szimuláció S7 programja.
Amikor ez megtörténik, a fenti ábrához hasonló képet kapjuk. Töltsük be a Simatic Managerből a "VAT_KiBe" nevű változótáblát (a blokkok között találjuk). Betöltődés után helyezzük el úgy a VAT tábla ablakát és a ProTool RT ablakot, amiben a tolópad séma van, hogy mindkettő egyszerre látható legyen. A VAT táblát tegyük monitor módba (Ctrl-F7, vagy Variable menü, Monitor pont).
A TPSzim1.zip projectben még nincs működtető program (az majd a jelenleg még üres FC-ben lesz), de a VAT tábla segítségével kipróbálhatjuk a szimulátor működését. Ehhez csak annyit kell tenni, hogy a negfelelő "kimeneti" merker bitet bekapcsoljuk, és közben figyeljük mi történik a ProTool RT ablakában. ha felül a motorvédő ki van oldva (piros) akkor kapcsoljuk be (dupla katt rá).
Ezután a VAT táblában kapcsoljuk be egymás után a tolópad előre (M110.0) és a tolópad lassú (M110.3) biteket (Ctrl-1, vagy jobb katt rajta, majd a menüben Modify Address to 1). A ProTool ablakban a tolópad sémája elindul jobbra.


A tolópad szimulációját végző blokk azon kívül, hogy mozgatja a tolópadot, a láncot és a kocsikat, a motorvédő kapcsoló funkcióit is ellátja.
Amikor olyan helyzet alakul ki, ami a valóságban a motorvédő kikapcsolását eredményezné, akkor a "motorvédő ok" bit kikapcsolásra kerül (M101.7). Ilyen helyzet amikor pl. egyszerre két irány kimenetet kapcsolunk be, vagy ha pl. a lánc már véghelyzetben van, de nem állítottuk meg a motort. A szimulátor azonban arra nem figyel, ha a félig felhúzott kocsi alatt elindítjuk a tolópadot.
A kikapcsolódott motorvédőt kézzel az RT képernyőjén lehet visszakapcsolni.
Az FC100 blokk figyeli a mozgó objektumok helyzetét és ki illetve bekapcsolja a végálláskapcsolóknak kikiáltott merkereket.
A szimuláció rendelkezik kézi kezelő szervekkel is, ami az RT képernyőjének tetején látható. Ezek a TPSzim1-es projectben még nem gyakorolnak hatást a tolópadra (mivel az FC1 még üres), de ha beletesszük a hozzájuk tartozó merkereket a VAT táblába, akkor látható a megfelelő bit állapotának változása amikor az egérrel működtetjük őket.
Minden, a szimulátorban ki és bemenet gyanánt felkínált merker bit egyébként benne van a szimbólum táblában a hozzájuk tartozó magyarázattal együtt. Az M2.0-M2.7 bitek kivételével M100-ig szabadon felhasználhatjuk bármelyik merkert a tolópadot vezérlő programunkban.

Egy pár szót kell még szólnom a tolópad helyzetét érzékelő végálláskapcsolókról.
A pad összesen öt különböző helyen tud megállni, melyek mindegyike előtt (amennyiben ott akar megállni) le kell hogy lassítson. Nincs minden TP pozíciónak külön végállás kapcsolója. Van egy STOP véghelyzet (M101.2), ami az összes megállási pontban aktív, egy lassítás kapcsoló (M101.3), ami minden állomásnál történő lassításakor aktív, és van további három pozíció érzékelő végállás (M101.4, M101.5, M101.6). Ezek kombinációiból kell a programnak kihámoznia hogy hol van éppen a tolópad.

A program
Kézenfekvő, hogy először valamiféle kézi üzemmódot alkossunk az FC1-ben. Nos a legegyszerűbb kézi üzemmód (amilyet a gyakorlatban nem szabad csinálni, de a szimulátorban nem görbül el a váz és nem szakad a lánc) az, ha egy-egy gombhoz egyszerűen feltétel nélkül hozzárendeljük a gép egyes részeinek mozgatását,vagyis a kimenet bekapcsolását.
Lássuk :

Ha ezt beírjuk az FC1-be és betöltjük a PLCSim-be, azonnal ki is próbálhatjuk. Ez a két sor a lánc mozgatását teszi lehetővé az RT ablak tetején lévő kézi kezelőgombok segítségével.
Mivel a kimenetek elé csak a nyomógombot tettük feltétel gyanánt, a lánc ütközéstől ütközésig mozgatható, vagyis nem veszi figyelembe a végálláskapcsolók jelzéseit. Ha ütközésig és még tovább akarjuk mozgatni, akkor a motorvédő néhány másodperc múlva kiold. Akkor is kioldana, ha egyszerre nyomnánk meg a lánc két irány gombját, amit a ProTool szimuláció nem tesz lehetővé, de a valóságban megtehetnénk. A két irány egyszerre kapcsolása zárlatot okoz, ami úgynevezett keresztbe reteszeléssel elkerülhető.


Ilyen keresztbe reteszelést mágneskapcsolóknál a huzalozott kapcsolásban is szoktak alkalmazni.
Mivel egy gép motorral hajtott mozgó részeit általában nem egészséges koppanásig hajtani, használjuk fel a lánc végállás kapcsolóit. A dolog végtelenül egyszerű, a nyomógombbal sorba kötjük az iránynak megfelelő végálláskapcsoló "nyitó érintkezőjét", így:


Ha pl. a lánc már a elöl véghelyzetben van és nyomjuk a "lánc letol" gombot, akkor a végállás megakadályozza a motort abban hogy a láncot még előrébb mozgassa, illetve a lánc a gomb nyomva tartása ellenére is megáll.

Mivel van egy kézi/automata kapcsolónk is, amivel majd választani lehet a kézi és automata működtetés között, építsük be azt is a lánc programjába. Automata módban az M100.5 merker 1 állapotú. tegyük tehát ezt is a sorba negált és kapcsolattal (mivel kézi üzemmódban inaktív).
Ha meg akarjuk akadályozni, hogy a láncot a tolópad tetszőleges helyzetében mozgatni lehessen amikor kézi üzemmódot használunk, akkor még egy feltételre szükség lesz. Tegyük be a sorba az M101.2-t, a tolópad STOP végállást. Az M101.2 akkor aktív, amikor a tolópad valamelyik csatorna sín pozíciójában áll. Ezzel elkerülhető az a baleset, hogy kéziben a kezelő a tolópadról véletlenül lelökje a kocsit amikor az nem sín irányban áll, hanem valahol két állomás között van.



A lánc kézi üzemmódja kész, jöhet a tolópad mozgatása, ami egy kicsit összetettebb lesz.
Először is, mert nem csak két véghelyzete van, továbbá mert két sebességű, végül pedig azért, mert biztosítani kell, hogy a tolópad kézi üzemmódban is pontosan pozícióra állítható legyen. Ugyanakkor azt is meg kell oldani, hogy a közbenső állomások fölött át lehessen vinni ha arra van szükség.
A pozícióra állásnak az nem megoldása, hogy a kezelőre bízzuk: addig vacakoljon, amíg végül sikerül neki rövid előre hátra lökdöséssel belőni a megfelelő pozíciót. A stop végállással kell megállítani minden vágánynál. De úgy, hogy ha nem akarjuk ott megállítani, akkor át tudjon haladni fölötte.
Ez úgy oldható meg, hogy ha az állomás előtt kézzel lelassítjuk, akkor a stop véghelyzeten megáll, de ha gyors sebességgel visszük át, akkor nem. Ez alól kivételt kell hogy képezzen a 0. és a 4. csatorna, ahol bekapcsolt gyors menetben sem mehet tovább, és nem csak hogy meg kell állnia, de le is kell lassítania anélkül hogy a lassításra kézzel átváltanánk.
Mivel eltérő módon kell viselkedni a 0. és 4. csatornánál, mint az 1, 2, 3-nál, célszerű egy programrészt készíteni, ami a kombinációkból kihámozza a csatorna számát ahol a tolópad éppen tartózkodik.
Ez a programrész hasznos lesz majd az automata üzemmód megírásakor is.



A fenti pár sor tehát előállít öt jelzést öt belső változóban (M1.0-M1.4) amelyek a tolópad helyzetéről adnak információt. Ezeket felhasználhatjuk a programunkban. Ez azzal az előnnyel jár, hogy nem kell minden olyan feltételsorba beilleszteni egy egész végállás kombinációt, ahol a tolópad helyzetét vizsgálnunk kell. Elég ha a fentiek közül (M1.0-M1.4) a megfelelőre hivatkozunk.
Így már egyszerűen megakadályozhatjuk, hogy a 0. és 4. csatorna pozícióján túlmenjen:



A pozíció jelző M1.0-M1.4 merkerek már a lassítás pillanatában aktívak, ezért a stop végállással kerülő ágat kell létesíteni ha azt akarjuk, hogy a tolópad ne a lassítás véghelyzetnél, hanem a stop véghelyzetnél álljon meg.
A stop végállást azonban érvényre kell juttatni, lassú menet esetén akkor is, ha nem a 0. vagy a 4.- csatornánál van a tolópad. Ezért a stop végállást megkerülő ágat, ami előre iránynál a 4. csat. pozíció, hátra iránynál a 0. csatorna pozíció, hatástalanítani kell a gyors menet nyomógombjával. Így biztosítani tudjuk, hogy a tolópad minden csatorna stop pozíciójában megálljon, de csak e 0. és a 4. csatorna stop pozíciójában álljon meg akkor, ha a gyosmenet be van kapcsolva.
Ennek megfelelően a TP előre és TP hátra kimenet programsora az alábbiak szerint módosul:



Még hátra van a gyors-lassú átkapcsolás.
A legegyszerűbb az lenne, ha kézi üzemmódban közvetlenül a gyors nyomógomb kapcsolná a gyors és lassú kimeneteket. Ha a tolópad mozog, azaz be van kapcsolva valamelyik irány kapcsolója, akkor mindenképpen be kell mellé kapcsolni vagy a gyors, vagy a lassú kimenetet, különben a motor nem mozdul. Továbbá amikor a tolópad áll, akkor célszerű kikapcsolni a gyors és a lassú kimeneteket. Két  legyet ütünk egy csapásra, ha a lassú kimenetet mindig bekapcsoljuk, ha a gyors nincs bekapcsolva, de valamelyik irány kimenet be van kapcsolva:

Ezzel elintéztük, hogy ha a tolópad valamerre menni akar, de a gyors kimenet nincs bekapcsolva, akkor lassúban fog menni. Innentől a lassú kimenettel nem kell többet foglalkozni, majd a gyors kimenet feltételeivel döntjük el a kívánt sebességfokozatot.
Alap esetben a gyors kimenetet be kell kapcsolni, ha a tolópad mozog előre vagy hátra és közben nyomjuk a gyors menet gombját. Azonban így nem fog lelassítani a két szélső csatornánál! Jobb esetben megáll gyors menetből, rosszabb esetben túlszalad a stop pozíción és neki megy a falnak.
Ezért ha előremenet közben a tolópad eléri a 4. csatornát, le kell lassítania, amit úgy érünk el, ha ekkor kikapcsoljuk a gyors kimenetet függetlenül attól, hogy nyomva van-e a gyors menet nyomógombja.
Hátramenetben ugyanígy kell tennünk a 0. csatorna elérésekor.



Gondoskodni kell még arról is, hogy a tolópad csak a lánc valamelyik véghelyzetében legyen mozgatható. Ennél mi sem egyszerűbb, a tolópad előre és hátra kiment sorába be kell raknunk soros kapcsolatba a lánc két végállását párhuzamosan:

Ezzel 6 network-ben megalkottuk a berendezés kézi üzemmódját működtető programot. A "csodálatos" szimuláció révén ezt ki is lehet próbálni.
Az alábbi képre kattintva átlapozhatjuk a teljes programot létradiagram formájában.



A kézi üzemmódot is tartalmazó project letölthető innen: TPSzim2.zip (kb. 350k)
Ha lesz időm (és kedvem) a második felvonásban elkészül az automata üzemmód, amelyik a kocsikat automatikusan átpakolja a 0. csatornáról az 1-4-re, növekvő sorrendben (először az 1.-re, a következőt 2.-ra, és így tovább).
Addig esetleg ezt csinálja meg mindenki saját maga a letölthető project file-okból kiindulva. Szerintem jó játék :)
A 2. rész elkészült. Itt olvasható



Szirty