Példák OP7-re

Töbször merült már fel a kérdés a Siemens operátorpanelekkel és a ProTool programmal kapcsolatban, hogyan is kell az OP-t "programozni". Egy teljes körű, részletekbe menő leírás elkészítése nagy munka lenne.
Azonban rövid és lényegre törő gyakorlati példákból is sokat lehet tanulni. Így most részletes leírás helyett pár példán keresztül próbálom meg leírni a lényeget.
A példák Siemens OP7 panelre vonatkoznak, ami egy 4x20 karakter kijelzésére alkalmas szöveges OP.
A példaprogramok Step7-ben készültek.



Időtag értékének kijelzése és módosítása

Gyakori feladat egy berendezés vezérlésénél, hogy időtag végértékét üzem közben módosítani kell, vagy az időtag pillanatnyi értékét ki kell jelezni.
Az alábbi példa OP7-el mutatja be ennek egyik lehetséges megoldását.
Egy időzítőnek (időtagnak, vagy időrelének) van egy végértéke és egy pillanatnyi értéke (tartalma).
Amikor az időzítő aktív, az időtag pillanatnyi értéke a végértéktől indulva csökken nulláig. Az időtagok végértéke általában konstansként van megadva a PLC programjában, ahogy az alábbi ábrán látható.



A T127-es időtagnak konstans időzítés van megadva (S5T#2S10MS=2 másodperc, 10 ezredmásodperc). Ha az a cél, hogy az időtag időzítési értékét állítani lehessen, akkor a PLC programba betonozott konstans helyett egy változót kell megadni, amit az OP-ról módosíthat a kezelő.
A változó többféle memóriaterületen is lehet. Célszerű a beállításokat tartalmazó változókat egy helyre tenni, így a példában az időtag időalapját adatblokkban fogjuk tárolni, aminek a címe legyen DB1.DBW0. Az állítani kívánt időtag száma pedig legyen T127 (az hogy milyen típusú az időtag, vagyis ki vagy bekapcsolásra késleltető, stb, az ügy szempontjából lényegtelen).
A programban az időtagot tartalmazó részt az alábbi módon kell módosítani:


Ezután gondoskodni kell róla, hogy az OP-n a DB1-es adatblokk DBW0 címén lévő word-be lehessen beírni a kívánt időértéket egy beviteli mező segítségével.
Hozzunk tehát létre egy megfelelő címkét:

Az adattípus (Type) Timer legyen, hogy megfeleljen az S7 időtag formátumának.
A címkét természetesen a DB1-es adatblokk DBW0 word-jére kell beállítani:



A megjelenítés formátuma Decimal, hogy az időt 10-es számrendszerben lehessen beírni.
Tags objektumlistában megjelenik a létrehozott “kesleltetes” nevű címke:



Váltsunk át a  Screens objektumlistára, vagyis a képernyőket tartalmazó listára, amely egyelőre üres. Hozzunk létre egy screen objektumot az üres listában. Ezt többféleképpen is megtehetjük. Dupla kattintással a lista üres részére, vagy az üres lista területén jobb egérgombbal előbukkanó menüből a “Screen insert...” pont kiválasztásával, de a főmenü Insert pontjának Screen almenüjével is.
Amennyiben ezt az időtag módosítás példát ki akarjuk próbálni anélkül, hogy egyéb funkciókat és készítenénk az OP projectbe, a most létrehozott képernyőt állítsuk be start screen-nek, hogy a project áttöltésekor és később OP indítások alkalmával ez a képernyő jelenjen meg alapképként (mivel jelenleg csak ez az egy képernyő lesz).
A képernyőszerkesztő egy üres részén kattintsunk jobb gombbal és válasszuk ki az előbukkanó menüből (vagy az Edit főmenüből) a Properties pontot. Az alábbi ablak nyílik ki:



A Name mezőben nevet adhatunk a képernyőnek. Amennyiben több képernyő van (márpedig egy projectben mindig több van) érdemes élni ezzel a lehetőséggel, mert a projecten belül más képernyőre történő hivatkozásnál (pl. képernyőváltás funkció paraméterénél) mindig a képernyő neve alapján kell választani.
A Number mezőben megváltoztatható a képernyő száma. Ez bármi lehet a 1 és a maximum között, de két egyforma számú képernyő nem létezhet. A Start Screen kapcsolót kell bekapcsolni hogy indításkor ez a képernyő jelenjen meg.

Visszatérve a képenyő szerkesztéséhez, rakjunk le a legelső szekcióba egy “Időzítés” szöveget, utána egy ki és beviteli mezőt: Egyszerűen írjuk be az első szekció első sorába, hogy “Időzítés”, majd kattintsunk jobb egérgombbal a szöveg végénél és a felbukkanó menüből válasszuk az insert Input/Outpit field... pontot.
Ezzel leraktunk egy ki és/vagy beviteli mezőt. A hozzá tartozó beállításokat azonnal megadhatjuk a kinyiló jegyzettömb ablakban:



A Tag mezőben állítsuk be a “kesleltetes” nevű címkét, amelyiket korábban hoztuk létre az időtag értékének tárolására.
Amennyiben a Field type mezőben Output-ot állítunk be, akkor az időtag értéke csak megjelenik, de módosítani nem lehet, ha Input/Output beállítást válsztunk, akkor kijelzés mellett az érték módosítható lesz.
Ha az időtag állítását korlátozni kell, akkor az Enable fülre átváltva, a password level mezőben beállítható az a jelszó szint, amelyik érvénybe lépése után az időtag módosítható lesz. Alapbeállítása 0, ilyenkor jelszavas védelem nélkül bármikor átállítható az idő.
Field Length korlátozza a mező hosszát a kijelzőn. Az itt beállított számú számjegy jelenik meg maximum. Ha ez túl kicsi, akkor előfordulhat, hogy az OP a címke tartalmát nem tudja megjeleníteni, mert a megadott korlátnál több számjegy megjelenítésére lenne szükség (a tizedes vessző is beleszámít). Ebben az esetben az érték helyett a mezőt kettőskeresztekkel tölti ki, így az érték nem lesz látható a mezőben.
A Help text fül lehetőséget ad, hogy a beviteli mezőhöz magyarázó szöveget írjunk, amit a felhasználó az OP Help gombjával tud megjeleníteni, amikor a kurzor ezen a mezőn áll.
Miután a statikus szöveget és a ki és beviteli mezőt elhelyeztük, a képernyőszerkesztő kb. ezt a képet mutatja:



A kapcsos zárójelek közötti rész a címke nevével, maga az in/out field objektum. Ha ezen később változtatni kell, akkor kattintsunk bele a jobb egérgombbal és válasszuk a properties...-t, vagy kattintsuk bal gombbal duplán a mezőt jelző részre. A Shift-F9 gombokkal a nézet átváltható representation-re. Ebben a módban az objektumok helyén nem az általuk hivatkozott címke neve jelenik meg, hanem annyi négyzet, amennyi helyet a kijelzőn a mező elfoglal majd.

Ha ezt a projectet most rátöltjük egy OP7-re, ami megfelelően össze van kötve egy S7 PLC-vel, amire természetesen megírtuk az időtaghoz tartozó programrészt és létrehoztuk a DB1-et, és abban a DBW1-et, szóval abban az esetben ha mindent jól csináltunk az OP-n módosítható lesz a T127 időtag értéke.
Az időzítő az itt megadott értéket mindig az újraindítás (reset) alkalmával veszi fel. Ez azt jelenti, hogy ha az értéket akkor módosítjuk, amikor az időzítőben az idő már telik, az éppen letelőben lévő időre a módosítás nem lesz hatással. Az idő letelésének indításakor aktualizálódik az új érték.

Ha a futó időtag pillanatnyi értékét akarjuk módosítani, akkor nem az időtag Preset time Value (TV) értékét kell megváltoztatni, hanem magának az időtagnak a tartalmát. Ennek módjáról a fenti példa kibővítésével alább található leírás.
Készíteni kell egy másik címkét, ami magára az időtagra mutat:



Ennek neve legyen T127.
Tegyünk az 1-es képernyőre még egy input/output mezőt:
Az első képernyőszekció ezután az alábbi képet mutatja a szerkesztőben:



Futás közben a második sorban látható lesz, ahogy a T127 időzítő ideje telik. A kijelzett szám csökken.
Ha rövid időzítés lett megadva, akkor az időtagnak nagy lesz a felbontása így pöröghet akár századmásodpercenként is. Ez nem lesz látható az OP kijelzőjén, mert az csak egy másodpercenként írja ki az időzítő tartalmát a kijelzőre (pontosabban a címkénél az acquistion cycle beállításnál megadott időközönként).
Ezzel a megoldással az időtag értékét át is lehet írni, így az időzítő még hátralevő idejét megváltoztathatjuk az időzítő futása közben. Az időzítő újraindulásakor azonban mindig a TV értéke, vagyis az első sorban megadott (DB1.DBW0) tartalma lesz a kiindulási alap és az idő az ott megadottól kezd újra csökkenni.

Szöveges állapotjelzés

Tegyük fel, hogy egy S7-300 PLC-vel vezérelt berendezésünknek van olyan mozgó része, ami nem látható (nehezen hozzáférhető, zárt helyen van, vagy nagy távolságban).
Ha egy ilyen hajtás helyzetéről akarunk meggyőződni, akkor a PLC ki és bemeneteinek visszajelző LED-jei adnak támpontot.
Kihasználva azt a lehetőséget, hogy az OP7 operátorpanelen egy PLC-változó tartalma alapján szöveget is meg lehet jeleníteni, a hajtások, részegységek stb. állapotát megjeleníthetjük a panelen is.
Ez a példa erről szól.
Legyen a mozgó rész egy tolómű, aminek két véghelyzete van, amit a bemenetre végálláskapcsoló érzékel : elöl és hátul, két irányban képes mozogni, előre és hátra. Ennek a helyzetét jelezze ki az OP7 szövegesen.
A tolómű helyzetéről csak két információ áll rendelkezésre, a két véghelyzetkapcsoló állapota. Ennek figyelembevételével a tolómű három különböző helyzetben lehet: elöl, hátul, vagy a két véghelyzet között, közbenső helyzetben. Van egy negyedik állapot is, amikor mindkét véghelyzet érzékelője (végállása) egyszerre aktív, ami egy hibás állapot. Ezt is kijelezzük.

A kézenfekvő megoldás talán az, hogy a kijelzőre kiírjuk statikus szöveggel hogy “Tolómű:” majd a következő sort két részre osztjuk.
A sor elején kijelezzük a végállások állapotából következő helyzetet, ami négyféle lehet (elöl, hátul, közbenső helyzetben, végállás hiba). A második részben kijelezzük a tolómű mozgását szöveggel (előre, hátra, áll). Ebből összeáll egy szöveg, ami alapján a tolómű pillanatnyi működési állapota és helyzete könnyen áttekinthető:



A megvalósításához szükség lesz két text list objektumra, amiket a ProTool Text/Graphic list listájában kell létrehozni.
Az egyik text list a szöveg a tolómű helyzetét irja ki:



A másik text list a szöveg harmadik részét, a tolómű mozgását jelzi vissza:



A text lista (ahogy arról a text lista leírásánál már volt szó) lényege az, hogy számokhoz szövegeket rendelünk hozzá, majd egy erre alkalmas képernyő objektum egy konkrét változó (címke) tartalma alapján a megfelelő szöveget a kijelzőn megjeleníti.
Hozzuk létre azt a két címkét, amelyek a tolómű helyzetének és mozgásának megfelelően tartalmazzák majd azokat az értékeket, amelyekhez a fenti listában szövegeket rendeltünk hozzá.
A visszajelzés két integer típusú PLC változó alapján történik majd. Mindkettőt adatblokkban tároljuk, adattípusuk integer:
DB1.DBW2 – A tolómű helyzete, a címke neve: “Tolomu_H”
DB1.DBW4 – A tolómű mozgása, a címke neve: “Tolomu_M”

A képernyőszerkesztőben egy új képernyőre vagy egy meglévő képernyő üres szekciójába most helyezzünk el két output field-et egy “tolómű:” szöveg mögé, melyek beállítása az alábbi:



A Display mezőt át kell állítani Text-re. Ez jelenti azt a kijelzési módot, amikor szöveget kell megjeleníteni, amit egy szöveglistából választ ki a Tag mezőben beállított címke tartalmának megfelelően.
Text beállításakor az ablak aljában megjelenik a Text list mező, ahol be kell állítani a szöveglistát amelyikből majd a címke választ. Ez a példa szerint az egyik output field esetén a “Tolomu_helyzet”, a másiknál pedig a “Tolomu_mozgas”.
A képernyőszerkesztőben ez kb. az alábbi lesz:



A munka következő része a PLC programjának elkészítése lesz.
Ez abból fog állni, hogy az OP rendelkezésére kell bocsátani a kijelzendő információkat a DB1.DBW2-ben és a DB1.DBW4-ben.
Először is létre kell hozni a DB1-ben ezt a két integer típusú elemet, majd elő kell állítani a véghelyzetnek és a mozgásnak megfelelő számot ebben a két változóban:




Ennek a módszernek sajnos az a hátránya, hogy nincs mese, a két végálláskapcsoló mind a négy állapot-variációjára egy külön értéket kell a DB1.DBW2-be helyezni. A fenti programrész ezt teszi MOVE utasításokkal.
A tolómű mozgatásának visszajelzése azonos módon történik, de ott csak háromféle szöveg kijelzésére van szükség.




Két állapotú beállítás szöveges kiválasztással

A fenti példában szereplő szöveglistával nem csak szöveges állapotjelzést lehet megvalósítani, hanem olyan változtatható beállítást is, ahol a kezelő egy szöveges listából választja ki a megfelelőt.
Ezt mutatja be a következő példa.
A beállítás két állapotú, amihez egy merker bitet használunk fel, aminek a 0 és 1 állapotához a “kikapcsolva” és a “bekapcsolva” szöveget rendeljük hozzá. Amikor a kezelő a “bekapcsolva” szöveget választja ki az operátorpanelen, akkor a merker 1 állapotú lesz, ha a “kikapcsolva” szöveget, akkor 0 állapotú lesz.

Szükség lesz egy text listára, ami tartalmazza a beállítás állapotaihoz rendelt szöveget, amelyek közül a kezelő majd választhat. Kell egy címke is, ami egy boolean (logikai) típusú változót deklarál:



A text lista neve “Ki_Be” a címke pedig M10.0 nevet videli és az M10.0 merker bitre hivatkozik.
Az utolsó teendő egy input/output filed elhelyezése valamelyik képernyőn a képernyőszerkesztőben:



Ne felejtsük el a Field Type Input/Output beállítását, ami alapértelmezés szerint Output. Különben a mező csak kijelzést fog végezni, állítani nem lehet.
Az OP7-en ez a mező kiválasztható lesz a nyíl gombokkal (ha az adott képernyőn több beviteli mező is van).
Amikor egy ilyen text listával létrehozott beviteli mező aktív, a kurzor villog a szöveg elején.
Megváltoztatni úgy lehet, hogy megnyomjuk a SHIFT gombot (a SHIFT jelzés világítani kezd), majd a le és fel nyilakkal változtatjuk a beállítás szövegét mindaddig, amíg a kívánt beállítás szövege lesz látható, ami ekkor a kijelzőn villog. A villogás jelzi, hogy előválasztás van érvényben, vagyis az új beállítás szövege látható a kijelzőn
de még nem érvényes. A megfelelő szöveg kiválasztása után az ENTER gombbal lehet aváltoztatást érvényer juttatni. Ekkor a villogás abbamarad és a mezőben az új beállításnak megfelelő szöveg lesz látható.

A text listával készíthetünk olyan szövegkiválasztásos beviteli mezőt is, ahol nem csak két választási lehetőség van. Ilyenkor a text listához rendelt címke nem logikai típusú, hanem pl. integer. Ilyenkor azonban a PLC programjában kell a text lista által beállított érték alapján eldönteni, hogy a kezelő által eszközölt választásnak milyen hatása legyen.
Nagyon sok szöveges elemet tartalmazó lista is létrehozható, de körülményessé teheti a beállítás elvégzését.


Szirty