Tartály töltés

Ez egy újabb szimulátoros példafeladat.
A korábbiakhoz hasonlóan ez is S7-300/400-as PLC-re készült és a Simatic szoftver csomagjaival használható.
A példaprogramok és a szimuláció programja a Simatic STEP7 V5.4-el készültek, PLCSIM V5.4 programmal futtathatók.
A project szimulációhoz tartozó vizualizációt kétféle HMI szoftverre is tartalmazza, így lehetőség van ProTool Pro V6.0 SP2 és Simatic WinCC Flexible 2008 SP2 használatára is. (e két HMI szoftver közül csak az egyikre van szükség).
A megjelenítéshez szükséges az adott HMI szoftver futtató programja is (Runtime). Tehát ProTool RT 6.0 vagy WinCC Flexible 2008 Runtime SP2.

A project két, egymástól függetlenül működő példafeladatot tartalmaz.
Az első egy nagyon egyszerű tartály töltés, amiben egy víztartályt egy szeleppel kell tölteni két szintkapcsoló segítségével.
Amikor a szint az alsó szintkapcsoló szintje alá csökken, kinyit a szelep. így a tartályba folyó víz növeli a szintet. A felső szintkapcsoló a szelepet elzárja.

A második példa az első továbbfejlesztése. Ebben a fentin kívül egy szivattyú és egy másik, nyomástartó tartály is van. A szivattyú a víztartályból szívott vizet a nyomás alatt lévő tartályba nyomja, fokozva ezzel az abban lévő nyomást. A megfelelő nyomás elérését egy nyomáskapcsoló érzékeli, ami kikapcsolja a szivattyút.
A tartályból elmenő víz nyomáscsökkenést okoz, a nyomáskapcsoló kapcsolási szintje alá eső nyomás újra elindítja a szivattyút.

A szimuláció lehetővé teszi hogy a szelepeket és a szivattyút letiltsuk és engedélyezzük. Az elmenő víz elzárására és kinyitására is van lehetőség.
Az első példában az alsó szintkapcsoló, a másodikban az alsó szintkapcsoló és a nyomáskapcsoló kiiktatható (ekkor nem kapcsol be).
Így tesztelhető, hogy az általunk írt vezérlő program hogyan viselkedik a tartály kiürülésekor, vagy a szintkapcsoló, nyomáskapcsoló hibája esetén.

Az S7 project



Mint látható az elmaradhatatlan OB1-en kívül 4 blokkot tartalmaz.
FB255:   A szimulációt végző program ebben fut. Az OB1 első sorában kell meghívni
DB255:  A szimulációt végző program adatait tartalmazza
FC1:      Az 1-es pálda megoldása
FC2:      Az 1-es pálda megoldása

Ha a példát lelkiismeretesen akarjuk megoldani, akkor az FB255-öt és a hozzá tartozó DB255-öt ne módosítsuk. Vállalkozó szelleműek, akik esetleg magát a szimulációt szeretnék fejleszteni ezt biztosan átírják majd.
Mivel azonban a project kezdőknek szól, akik a szimulációhoz, mint adott környezethez írnak programot, ennek a leírásnak nem célja a környezet megteremtését végző program ismertetése.
A project a két feladat megoldását is tartalmazza, amit az FC1 és FC2 blokkok rejtegetnek.

A szimuláció futtatása

A ZIP filet bontsuk ki valahova, majd indítsuk el a Simatic managert, és töltsük be a projectet (File/Open). Ha nincs WinCC Flexible szoftverünk, egy figyelmeztető üzenetet kapunk, miszerint a betölteni kívánt project olyan részeket is tartalmaz, amihez nincs telepített szoftverünk (meg is nevezi melyik hiányzik). Ha a fent említett ProTool-al rendelkezünk, akkor semmi gond.
Indítsuk el a PLCSIM-et és állítsuk be MPI2-es címre:



A Simatic managerben jelöljük ki a DB255, FB255, FC1, FC2 blokkokat és töltsük le a PLCSIM-re (Download).
Ezután a PLCSIM-et kapcsoljuk RUN-P üzemmódba:



Térjünk vissza a Simatic managerre és nyissuk ki a project fában a SIMATIC HMI Station(1) elemet, majd abban kattintsunk a Screens elemre és kattintsunk duplán a jobb oldalon megjelenő lista 010_1.Pelda objektumra.



Ekkor ha minden jól megy, elindul a WinCC Flexible és betöltődik a project.
Ha régebbi verziójú Flexible van telepítve (Pl. SP1, vagy SP nélküli, esetleg 2007-es) akkor kapunk egy hibaüzenetet, és a project nem tölthető be.

Ha ProTool-al rendelkezünk, lépjünk a project fa tetejére és kattintsunk duplán az OP1 objektumra.



Elindul a ProTool Pro és betölti a projectet.
Előfordulhat, hogy kapunk egy ilyen hibaüzenetet:



Az üzenet oka az, hogy a ProTool nem "integrált módban" van.
Ha ez történik indítsuk el a ProTool CS programot a start menüből és válasszk a File menüből a ProTool Integration in STEP7 pontot, majd zárjuk be a ProToolt és próbáljuk megnyitni újra a szimulátoros projectet.



Ha a HMI project rendben megnyílt, indítsuk el a runtime-ot a megfelelő toolbar ikonnal vagy a menü használatával

WinCC Flexible:

Menüből ugyanez:  Project / Compiler / Start runtime

ProTool:

Menüből ugyanez: File / Test / Start Runtime

Miután elindul a runtime, a menüt látjuk, alul egy üzenet ablakkal.
Ebbe az ablakba írja be a runtime program a rendszerüzeneteit. Azért fontos, mert ebben látjuk, hogy a runtime sikeresen felépítette-e a kapcsolatot a PLCSM-mel, vagy nem.
A szimuláció természetesen csak akkor fog működni (illetve azt látni csak akkor fogjuk) ha a kapcsolat sikeresen felépült.
Ha a kapcsolat felépül, a legfelső sorban azt a szöveget látjuk, hogy "Kapcsolat felépítve". Ha a kapcsolódás sikertelen valami miatt, akkor itt a "Kapcsolat leépítve" szöveg jelenik meg.


ProToolban és WinCC Flexben az üzenetek azonosak.

Ha a kapcsolat sikeresen felépült, akkor a szimuláció fut és látható ahogy az FC1 és az FC2 programblokkokban lévő példaprogramok vezérlik a tartály töltést.
A runtime által megjelenített ábra sematikusan ábrázolja a rendszer működését. Láthatjuk a tartályszinteket, a nyomást, az
 érzékelők (szintkapcsolók és a nyomáskapcsoló) pillanatnyi állapotát, a szelepek állapotát és hogy üzemel-e a szivattyú vagy áll.

Feladatok





A project szimbólum táblájában és a sémán is látható melyik bemenetre és kimenetre csatlakoznak a szintkapcsolók és a szelepek.
A szimuláció jelzi az aktuális tartály szintet a be és kimenetek állapotát. A szelepek, a szivattyú, a szintkapcsolók és a nyomáskapcsoló mögöttiterület zöldre vált, amikor aktív (amikor a PLC bemenet TRUE állpotú).

Természetesen arra is módunk van, hogy a vezérlőprogramot működés közben figyeljük meg. A PLCSIM segítségével ezt ugyanúgy tehetejük, ahogyan azt valódi PLC monitorozásakor is végeznénk. Be kell tölteni a blokot és monitor módba helyezni:



Ha az FC1 és FC2 blokkokat töröljük, vagy kiveszsük a hívásukat az OB1-ből, akkor a PLCSIM segítségével ki is próbálhatjuk hogyan működik a szimuláció.
A PLCSIM-ben a megfelelő kimenet bekapcsolásával pl. feltölthetjük a tartályt és ellenőrizhetjük a szintkapcsolók működését, a PLCSIM megfelelő bemeneteinek figyelésével.
(Erre az alább található videóban van is példa)

Az 1-es feladat megoldása

Az 1-es feladat megoldásához tudnunk kell, hogy melyik kimeneten van a szelep és melyiken a két szintkapcsoló. Ezek a sémán is fel vannak tüntetve, de a szimbólum tábla is tartalmaz minden felhasznált be és kimenetet.

Az 1-es példához kapcsolódó szimbólumok listája:


Végtelenül egyszerű dolgunk van, be kell kapcsolni a Q4.0 kimenetet, ha az alsó szintkapcsoló aktív, majd bekapcsolva tartani amíg a felső szintkapcsoló aktívvá nem válik.
A feladat megoldása után a szint az alsó és a felső szintkapcsoló között fog ingadozni.
A szelep kapcsolása egy öntartó kapcsolással vagy RS tároló használatával oldható meg a legegyszerűbben.

Egyszerűen felírjuk a Q4.0 kimenet elé azt a feltételt mikor kapcsoljon be. vagyis amikor az I0.0 szintkapcsoló nem aktív. Ebből egy negált I0.0 lesz:

Ezután meg kell akadályozni, hogy miután a szelep bekapcsolt, az újra megtelő tartály miatt inaktívvá váló I0.0 kikapcsolja azt.
Ezt öntartó kapcsolással tehetjük meg:

Ha ezt kipróbáljuk azt tapasztaljuk, hogy a csökkenő tartályszint inaktívvá teszi az I0.0 szintkapcsolót, ezért annak negált (nyitó) "érintkezője" bekapcsolja a szelepet. A szelep kimenetének egy záró "segéd érintkezője" áthidalja a szintkapcsolót, amint a szelep bekapcsol, így amikor a szint a nyitott szelep miatt újra eléri az I0.0 szintkapcsolót, az már nem tudja kikapcsolni a Q4.0 kimenetet, mert az önmagát bekapcsolva tartja a VAGY kapcsolaton keresztül.
Így a tartály azonban végtelenségig töltődik, ezért gondoskodni kell arról, hogy az öntartást megszakítsuk a felső szinttel. Ehhez egyszerűen be kell rakni a Q4.0 kimenet elé a felső szintkapcsoló szintén nyitó "érintkezőjét" (Mindkét szintkapcsoló akkor ad aktív jelet a bemeneten, amikor folyadékot érzékel).


A feladat SR tárolóval is megoldható:



Az extra feladat megoldása egy újabb network-öt igényel, ahol egy bekapcsolás késleltető (On Delay Timer = S_ODT) időzítővel mérjük a szelep bekapcsolt állapotának idejét és bekapcsoljuk a hibajelző kimenetet ha az idő letelik:


A T1 timer mindannyiszor újraindul, amikor a szelep kikapcsolt állapotból bekapcsolt állapotba vált, ezért az idő csak akkor fog letelni, ha a szelep megszakítás nélkül egy percen át be van kapcsolva (S5T#1M).
Ezzel az időtulfutás figyeléssel jól megválasztott időkorlát mellett megakadályozhatjuk, hogy szintkapcsoló vagy szelep hibája miatt a tartály túltöltődjön illetve időben jelzést lehet adni ha nincs víz és a tartály nem tud feltöltődni egy adott időn belül.
Hiba esetén a hibajelző kimenet bekapcsolása mellett a töltést is le kell állítanunk, ami egy újabb feltétel lesz a Q4.0 szelep kimenete előtt a korábban már elkészített sorban:

SR tárolós megoldásnál a tárolót törölni kell hiba esetén:

Ennek a megoldásnak lesz kellemetlen következménye:
A T1 telik, ha a szelep (Q4.0) be van kapcsolva. Ha a T1 letelik, az bekapcsolja a Q4.1 hibajelzést, ami viszont kikapcsolja a szelepet, ezért megszűnik a T1 előtti Q4.0 feltétel, ami miatt a T1 is kikapcsol és vele együtt a  Q4.1 is. Ha az idő vízhiány miatt telt le, akkor feltehetően a tartály üres és I0.0 meg I0.1 szintkapcsoló bemenete is inaktív, ami miatt a szelep újra bekapcsol és T1 újra telni kezd.
Emiatt a hibajelzés önmagát hatástalanítja így a Q4.1 kimenet csak egyetlen PLC ciklus ideig lesz aktív, ami néhány ms. Ez pedig kevés egy jelzés megszólaltatásához.
Meg kell tehát akadályozni, hogy a hibajelzés önmagát hatástalanítsa, csak nyomógombbal lehessen hatástalanítani.
Tegyük a hibajelzést is öntartó kapcsolásba, amit a hibajelzés nyugtázó gombja szakít meg:


A megoldás feltételezi, hogy a hiba nyugtázó gomb záró érintkezője van a bemenetre kötve, vagyis a bemenet addig aktív, amíg a gombot megnyomják (felengedés után újra inaktív lesz)..

Egy második hibajelzésre is szükség van!
Az alsó vagy felső szintkapcsoló hibáját érzékelhetjük programból úgy, hogy figyeljük a két szintkapcsolóról érkező logikai állapot kombinációját.

Alsó szint (I0.0) Felső szint (I0.1) A kombinációhoz tartozó állapot és parancs
FALSE FALSE A tartály üres, a szintje az alsó szintkapcsoló alatt van (szelep nyitás)
TRUE FALSE A szint valahol az alsó és felső szintkapcsolók között van (szelep állapotát hagyni ahogy volt)
TRUE TRUE A tartály tele van, a szint a felső szintkapcsoló fölött van (szelepet zárni)
FALSE TRUE Az alsó szintkapcsoló megszakadt, amikor a tartály megtelt, vagy a felső szintkapcsoló zárlatos, miközben a tartály üres
Mivel így a tartályszintet a program nem tudja megállapítani, a szelepet el kell zárni és hibát kell jelezni

A programban ezt a hibajelző kimenet elé további feltételek beiktatásával valósíthatjuk meg:

Látható, hogy ha I0.1 felső szintkapcsoló vizet érzékel, de az alsó I0.0 nem, akkor bekapcsolja a hibajelző kimenetet.

Az I0.2 hibanyugtázásra visszatérve egy kicsit:
Látható, hogy az I0.2 nem a Q4.1 elé került közvetlenül, hanem csak az önttartó ágat szakítja meg. Ennek a megoldásnak a lényege az, hogy ha szintkapcsoló hiba miatt van hibajelzés, akkor a nyugtázó gombbal csak akkor lehet nyugtázni és újraindítani a töltést, ha a hiba már nem áll fenn.
Ha az I0.2 nyomógombbal a Q4.1-es kimenetet megszakítjuk, akkor a gomb nyomvatartásáig rossz szintkapcsoló esetén is megszűnik a jelzés. Így a szintkapcsoló hiba miatti jelzés kiiktatható lenne a gomb kitámasztásával. Az időtúlfutás hibát azonban ezzel a megoldással ki lehet iktatni a gomb kitámasztásával. Azt csak úgy kerülhetjük el, ha a hibanyugtázó gombbal létrehozunk egy impulzust és azzal szakítjuk a hibajelzés öntartását.

A 2-es feladat megoldása

A második feladat az előző kiegészítése.
Tartalmaz egy ugyanolyan tartály töltést szintkapcsolókkal és szeleppel, mint az első, ezért ezt külön nem részletezem újra, írjuk meg rá ugyanazt a programot, de figyeljünk oda, hogy más a ki és bemenetek címe!
A két feladat ugyanis képes párhuzamosan, egyszerre, egymástól teljesen függetlenül is működni, ezért térnek el a címek:



Az első feladatban már részletezett tartály töltés kiegészül egy kapcsolóval, mert a második feladatban a szelep bekapcsolását le lehet tiltani! A kapcsoló egyszerűen megszakítja a (sorba van kapcsolva) a Q4.2 szelep kimenettel.
Ami ebben a feladatban teljesen új, a szivattyú vezérlése.
A feladat az, hogy ha a nyomástartó tartályban a nyomás leesik, be kell kapcsolni a szivattyút, amíg a nyomás újra megfelelő lesz.
Nézzük hogyan valósítható ez meg. Újra azt javaslom írjuk fel mikor kell a szivattyúnak üzemelnie és tegyük azt feltétel gyanánt a Q4.3-as kimenet elé. Ez a feltétel a nyomáskapcsoló, ami az I0.5-ös bemenetre akkor ad jelet, amikor a kívánt nyomás van a tartályban. A szivattyút akkor kell bekapcsolni, ha a nyomás ennél kisebb, tehát amikor a nyomáskapcsolóazt jelzi, hogy a nyomás nem megfelelő:


És ezzel kész is. Szerintem ez a sor nem lett bonyolult. :)
Tegyük bele még azt, hogy amikor hibajelzés van álljon meg a szivattyú (Q4.4), és azt a kapcsolót is amivel le lehet tiltani a szivattyú működését (I0.7):

Már csak a feladat extra része maradt, a hibajelzések programozása.
Mint írtam, ez azonos az első feladatban lévővel, de Q4.0 helyett Q4.2, T1 helyett T2, I0.1 helyett I0.4 stb van, a 2-es feladat szimbólum táblájának megfelelően:

A kiegészítést a szivattyú időtúlfutás figyelése jelenti, ami azonos a szelep idő figyelésével és a célja is hasonló. Azt hivatott megakadályozni, hogy ha a tartályban nincs víz, vagy a nyomáskapcsoló meghibásodik, akkor a szivattyú ne üzemeljen végtelen hosszú ideig:



A project letöltése: TartalyToltes7.zip (5MB)

Video file a program elkészítéséről és a szimuláció működéséről: tartalytoltes.avi



Kapcsolódó írások:
Időzítők
Mártogató szimuláció
Tolópad szimuláció S7-300/400-ra
Fúrógép szimuláció
Hogyan futtassuk a Protool projectünket?


Szirty