Dinamikus objektumok (2. rész)

WinCC Flexible
Módosítva 2010 november 10

Az első rész itt olvasható!


Graphic IO field és graphic list

Működése megegyezik a Symbolic IO field működésével, de mint neve is mutatja, ebben grafikus alakzatok vannak a szöveg helyett. Ennek megfelelően a Graphic IO field számára egy grafikus listát kell összeállítani ahhoz hasonlóan, mint ahogy szöveglista kellett a Symbolic IO field-hez.



A grafikus listában értékekhez, bitekhez, tartományokhoz lehet grafikus ábrákat kötni:



A selection oszlopban, ahol az állítható be, hogy a grafika kiválasztása milyen kapcsolatban legyen a változó értékével ugyanaz a 3 lehetőségünk van, mint a szöveges listánál és ugyanazt jelenti: Bit (0, 1), Bit number (0-31), Range (...-...)

A Graphic IO field megjelenése a runtime-ban kissé eltér a Symbolic IO field-től, mert Input és Input/Output módban kiválasztáskor nem jelenik meg lenyíló lista (combobox). Az objektum egy görgető sávot (scroll bar) tartalmaz, természetesen a hozzá tartozó nyilakkal együtt. Ezzel lehet választani a grafikus elemek közül.
A választás menete az, hogy a nyilakkal vagy a görgető sávval kiválasztjuk a kívánt elemet, majd Enter leütésével vagy a grafikára kattintással érvényesítjük a választást (a változóba csak ekkor kerül bele a grafikához rendelt érték). Amikor a grafikát már ellapoztuk, de még nem érvényesítettük, akkor a grafika körül egy dupla keret jelenik meg. Ha ezt látjuk, az azt jelenti, hogy a grafika kiválasztás alatt van és pillanatnyilag nem a változó tartalmának megfelelő ábrát mutatja.
A görgető sáv megjelenését egyébként a Graphic IO field General beállításai között a Display alatt befolyásolhatjuk, amennyiben az objektumunk Input, vagy Input/output beállítású:
A Scroll bar type a görgetősáv típusára van hatással:


No scroll bar
Nem nehéz kitalálni, ezzel a beállítással az objektumnak nem lesz görgetősávja. Ilyenkor a panel vagy PC nyíl billentyűivel lehet váltani a kiválasztható ábrák között. Hogy touch panelen ilyenkor mi a teendő azt nem tudom, sajnos jelenleg ezt kipróbálni sincs módom.
Permanent
A gördítősáv állandóan látható
Visible after clicking
Csak akkor látható a sáv, ha az elemet kiválasztjuk.

A másik beállítás a Scroll bar orientation. Ezzel vagy vízszintes (horizontal) vagy függőleges (vertical) elhelyezkedésű sávot állíthatunk be. Ha vízszintes, akkor alul, ha függüleges, akkor a grafika mellett jobb oldalon jelenik meg. Természetesen No scrollbar beállításnál ennek nincs jelentősége.

Ahogy azt a Symbolic IO field-nél láthattuk, a Graphic IO field-nek is van Two state üzemmódja. Ilyenkor a változóhoz két grafikus ábrát lehet hozzárendelni, amelyek közül a Graphic ON mezőben beállított akkor jelenik meg, amikor a változó értéke felveszi a Value on beállítás értékét. Minden más esetben a Graphic OFF mellett megadott grafika jelenik meg:



Megjegyzés: A Two state mód esetén az objektum csak output jellegű lehet, vagyis a kezelő nem tudja átváltani, csak megjelenítésre használható. A példában látható zöld nyomógombot tehát nem lehet a HMI-ben benyomni vagy felengedni, de benyomódik/kioldódik, ha a hozzá rendelt TAG megváltozik.

Kép a szemléltető példa-projectből:


Arra oda kell figyelni, hogy ha a grafikus listában nem választottunk "Default" ábrát, akkor ha a változó értéke vagy bitje alapján nincs olyan kép, amit felsoroltunk a grafikus listában, vagyis nincs mit megjelenítenie, akkor kaktusz erdőt fog megjeleníteni (lásd a videót). Ha ezt el akarjuk kerülni, rendeljünk grafikát a Default-hoz is!
A példában látható ábrák a WinCC Flexible saját könyvtárából valók. Ezeket a Tools / WinCC Flexible Image Folders alatt lehet elérni:



Természetesen saját grafikákat vagy képeket is beilleszthetünk. A képekkel bánjunk azonban óvatosan, mert egyrészt jelentős a memória igényük, másrészt a 256 szín megjelenítésére képes operátor paneleken esetleg nem úgy fog megjelenni, ahogy azt szeretnénk.

Video file a graphic I/O field működéséről: graphicio.avi (2.7MB)



A switch (kapcsoló) és a button (nyomógomb) objektumok

Megpróbálom bemutatni a WinCC Flexible nyomógomb és kapcsoló objektumait továbbra is a teljesség igénye nélkül.Ezek az objektumok még több beállítási lehetőséggel és tulajdonsággal rendelkeznek. Íme a fontosabbak:

Kapcsolók
A kapcsoló olyan interaktív elem, amelyet megérintve vagy megnyomva egy változó értékét megváltoztatja, majd újra megérintve visszaállítja. A leggyakrabban PLC-ben lévő boolean típusú változók értékét szoktuk vele átváltani a TRUE és FALSE állapot között.
Amikor elhelyezünk egy switch objektumot, az alapértelmezés szerinti megjelenése egy vízszintes elhelyezésű tolókapcsoló lesz. A kapcsoló objektumnak alapvetően három megjelenési formája van:

Switch:
Switch with text: 
és switch with graphic: 

Switch
A tolókapcsolónál megadhatunk egy fix szöveget, ami a kapcsoló fölött lesz látható, valamint szöveggel jelölhető a kapcsoló ki és bekapcsolt állapotához tartozó helyzet is. A Flexible újabb verzióiban (2008-ban már ilyen)ez a szöveg változó is lehet (string, tag érték, vagy text lista választható).
A Layout tulajdonságnál megváltoztatható a kapcsoló elhelyezkedése:

Itt blról-jobbra, jobbról balra, lentről fel, vegy fentről le választási lehetőségeket találunk.

Switch with text
A kapcsoló egy olyan változata, ami egy nyomókapcsolót formáz. Egyszer megnyomjuk bent marad, újra megnyomjuk felenged. A kapcsoló mindkét állapotához egy szöveg tartozik, amit a General properties Text szekciójánál írhatjuk be:

Az újabb Flexible verziókban ez a két szöveg nem csak fix lehet, hanem változó érték, string, vagy text lista is.
Amikor a kapcsoló be van kapcsolva (be van nyomva), akkor a Text ON: melletti szöveg olvasható rajta, amikor ki van kapcsolva (fel van engedve) akkor a Text OFF-nál megadott szöveg jelenik meg rajta.
Arról nekünk kell gondoskodni, hogy a kapcsolót akkorára méretezzük, hogy mindkét szöveg elférjen rajta (ellenkező esetben a szövegnek csak egy része lesz látható).

Swich with graphic
Szitén nyomókapcsoló, de a grafikai megjelenését teljes mértékben mi határozzuk meg olymódon, hogy a kapcsoló mindkét állapotához egy grafikus ábrát rendelünk hozzá a General properties-nél:

A Switch objektumoknak a General beállításoknál meg kell adnunk egy tag-et, amit megváltoztatnak amikor átkapcsoljuk a kapcsolót. Ez rendszerint egy boolean tag, ami 0 (FALSE) értéket kap a kapcsoló kikapcsolása mellett és 1 (TRUE) értéket bekapcsoláskor. De nem csak boolean típusú tag-et lehet neki megadni, integert, dupla integert, word-öt, dupla word-öt stb. is elfogad.
Ilyenkor két lehetséges:
Ha semmilyen további intézkedést nem foganatosítunk, akkor az ilyen változóba a kapcsoló nullát ír amikor kikapcsoljuk és 1-et amikor bekapcsoljuk. A Switch típusnál mást nem is tehetünk, de a és a Switch with text és a és a Switch with graphic típusnál a bekapcsolt állapothoz tetszőleges értéket (természetesen az adott változó ábrázolási tartományán belül) írhatunk be a Value ON mezőbe:


Ilyenkor kikapcsoláskor nullát, bekapcsoláskor a megadott értéket írja a változóba.

A switch objektum input/output típusú, tehát nem csak megváltoztatja a változó értékét ha megnyomjuk vagy felengedjük, hanem folyamatosan olvassa is a változót és a grafikai megjelenése felveszi a változó pillanatnyi értékének megfelelő megjelenést. Tehát tulajdonképpen "benyomódik" ha az adott változót a PLC-ben valami a bekapcsolt állapotnak megfelelő értékre változtatja.

Nyomógombok (Button)

A nyomógombok (button) kicsit máshogy működnek mint a kapcsolók. Úgy tűnik a WinCC Flexible fejlesztői nem arra szánták, hogy PLC változókat billegtessünk velük, mint a kapcsolókkal. De azt is meg lehet oldani természetesen, csak kicsit körülményesebben.
Rögtön szembetűnő lesz, hogy a nyomógomb General beállításai között nem találunk lehetőséget arra, hogy egy változót rendeljük hozzá. Itt jönnek képbe az események (events) és a funkciók (function).

És itt egy kis kitérőt kell tennem, amiben röviden leírom mik ezek:
Minden dinamikus objektum (és néhány rendhagyó esetben egyéb objektum is) eseményeket hoz létre bizonyos esetekben. Ezt láthatjuk is, ha az adott objektum beállításai között az Events-re kattintunk. Az alábbi képen egy nyomógomb eseményeit láthatjuk:



A gomb Click, Press, Release, Activate, Deactivate, Change eseményeket hozhat létre.
Az esemény valamilyen tevékenység vagy változás, ami a gombbal kapcsolatban zajlik le. Ezekhez ún. funkciókat lehet hozzárendelni, amik a képen még üres function list-ben szerepelhetnek. Egy eseményhez több funkció is rendelhető és egyszerre akár több eseményhez is rendelhetünk különböző eseményeket. A funkciók végrehajtásra kerülnek, amikor létrejön az az esemény az adott objektumon, amihez hozzárendeltük őket. Ha az eseményhez nincs funkció hozzárendelve, akkor az esemény bekövetkezésekor nem történik semmilyen tevékenység.

A nyomógomb eseményei:
Click:
A nyomógomb felengedésekor (miután lenyomtuk)
Ha a gombot egérrel nyomjuk meg, az esemény csak akkor következik be, ha a gomb felengedésekor az egérkurzor a gomb fölött volt. Ha a gombot lenyomjuk, majd lenyomva tartva az egeret elmozdítjuk a gombról és felengedjük, akkor nem!
Ha a gombot a panel billentyűzete segítségével az Enter gombbal nyomjuk le, az esemény csak akkor következik be, ha felengedéskor a gomb aktív volt.. Tehát ha kiválasztjuk, enter gomb nyomvatartása mellet TAB gombbal megszöntetjük a gomb kiválasztását, majd ekkor engedjük fel az Enter gombot, akkor nem!

Press:
A nyomógomb lenyomásakor.
Teljesen mindegy, hogy egérrel vagy kiválasztás után Enter gombbal vagy touch screenen a megérintésével nyomtuk-e le, az esemény bekövetkezik a lenyomás pillanatában.

Release:
A nyomógomb felengedésekor (miután lenyomtuk)
A "Click" eseménnyel ellentétben ez akkor is bekövetkezik, ha a gombról lehúzva engedjük fel az egér gombját, de nem a lehúzás pillanatában történik meg, hanem amikor az egér gombját felengedtük.
Ha billentyűvel nyomtuk le és Enter nyomvatartása mellet TAB-ot nyomunk, akkor ez az esemény azonnal bekövetkezik, ahogy a TAB-ot megnyomtuk, vagyis amikor a gomb kiválasztása megszűnik.

Activate:
Amikor a nyomógombot kiválasztjuk. Nem szükséges megnyomni hozzá a gombot. A gomb kiválasztható funkcióval vagy a TAB nyomógombbal (fókusz). A gomb kiválasztását egy keret jelzi (amennyiben annak méretét nem állítottuk nullára, vagy a színét háttérszínűre)..
Figyelem! A gomb akkor is kiválasztásra kerülhet, amikor a gombot tartalmazó képernyő a kijelzőn megjelenik egy képernyőváltás funkció következtében!

Deactivate:
Amikor a nyomógomb kiválasztását megszüntetjük. Amikor a gomb ki van választva és a kiválasztó keretet elmozdítjuk a gombról. Pl. megnyomunk egy másik gombot, kiválasztunk egy másik objektumot, léptetjük a kiválasztó keretet (TAB).
Érdekes azonban, hogy a Deactivate esemény nem jön létre abban az esetben, ha képernyő váltás történik, amikor a gomb aktív!

Change:
A gomb lenyomásakor és felengedésekor is lefut egyszer

Mi az a funkció? Valamilyen tevékenység, ami az események bekövetkezésekor kell elvégezni. Rengeteg beépített funkció van, amelyek közül szabadon választhatunk. Érték skálázás, képernyő váltás, bit bebillentése, törlése, értékadás, nyomtatás, beállítások módosítása stb, stb. További funkciókat magunk is írhatunk VB scriptek formájában, ha épp nincs olyan amire szükségünk lenne.

De térjünk vissza a nyomógombokhoz.
A nyomógombnak három megjelenési módja van: Text, Graphic, Invisible.

Text
A nyomógombon egy szöveg van, ami lehet fix, vagy egy változó által meghatározott szöveg vagy szám.
A Text ON opció bekapcsolása után külön szöveget lehet írni a nyomógomb felengedett és lenyomott állapotához. Ilyenkor ha a gombot lenyomva tartjuk, a rajta látható szöveg átvált a Text ON mellett megadott szövegre.



A gomb szövegét változón keresztül szöveglistával (text list) is befolyásolhatjuk. Ebben az esetben a szöveg nem a gomb lenyomott vagy felengedett állapotától fog függni, hanem annak a változónak a tartalmától, amelyik a szöveglistából választ:


Graphic
Lényegében azonos a text beállítással, de itt szövegek helyett grafikus ábrákról van szó.
Itt azonban nincs lehetőségünk arra, hogy az OFF és ON állapothoz hozzárendelt grafikát változótól tegyük függővé, az csak fix lehet. Változó grafika csak grafikus listával jeleníthető meg.




Invisible
Láthatatlan gomb. A gomb nem jelenik meg,  Elhelyezésekor csak egy területet kell kijelölnünk, ami a gomb lesz. Arra használható, hogy a képernyőn elhelyezve tetszőleges területet nyomógombbá tehetünk. A hatás olyan lesz, mint ha az alatt elhelyezkedő objektum lenne a nyomógomb.
Az invisible button is kap egy kijelölő keretet, ami akkor lesz látható, ha a gomb aktív. Ha nem akarjuk hogy ez a keret látható legyen (mert pl. elrontja az összképet), akkor a Properties/Focus width értéket állítsuk nullára.
Nagyon fontos, hogy ha invisible button-t helyezünk el más objektumok fölött, akkor azt mindenképpen az előtérbe helyezzük. Ha ugyanis a gombot más objektum "takarja" akkor nem tudunk majd rákattintani, mert a háttérben lévő gomb helyett az előtérben lévő objektumot fogjuk nyomkodni, azt viszont nem biztos hogy fogja ez érdekelni! :)
Szintén fontos, hogy a láthatatlan gombot ne helyezzük más aktív (dinamikus) objektum fölé. Pl. másik gomb, vagy input field, vagy switch, stb. Ugyanis ha így teszünk és a láthatatlan gomb van az előtérben, az "lenyúlja" majd az összes eventet az alatta lévő objektumok elől, így azokhoz nem tudunk hozzáférni (vagyis nem tudjuk majd átkapcsolni pl. az alatta lévő kapcsolót).

Funkciógombok a panelen (vagy PC billentyűzeten) (Softkey)

A fent leírt nyomógombok grafikus objektumok, amelyeket a képernyőn helyezhetünk el. Az operátor paneleknek, (amelyiknek nem csak érintőképernyője van) és a PC-nek vannak funkciógombjai is. Ezeket a nyomógombokat is ugyanúgy tudjuk használni, mint a képernyőn elhelyezett gombokat, ezek is létrehoznak eseményeket.
Ha a projectet PC runtime-ra készítjük, akkor 24 funkciógombot használhatunk:



Ha valamilyen OP-ra fejlesztünk, akkor a gombok száma az adott típustól függ. Alább az OP277 gombjai láthatók:



A Softkey természetesen nélkülöz minden olyan beállítást, ami a gomb megjelenésére vonatkozik (színek, grafikai vagy szöveges megjelenítés, animáció, méret, szöveg, színek, stb). Csak az alábbi beállításokkal rendelkezik:



Mivel a Softkey nem képernyőn jelenik meg, hanem fizikai nyomógomb, a képernyőn látható tartalomtól függetlenül bármikor meg lehet nyomni. Ezért az Use global assignment (globális hozzárendelés használata) opcióval eldönthető, hogy az a funkció amit hozzárendelünk globális legyen-e (ilyenkor bármilyen képernyő is van megjelenítve a funkciója hatásos lesz) vagy csak akkor legyen hatásos a funkció, ha az a kép van megjelenítve, amelyik akkor volt látható, amikor a hozzárendelést elvégeztük. Az utóbbi beállítással minden képernyőn lehet más és más funkciója a gombnak (illetve lehet hogy csak bizonyos képernyőkön van valamilyen funkciója).
A Runtiem authorization beállítással korlátozható a gombhoz rendelt funkció végrehajtása, hogy csak bizonyos felhasználói csoportba tartozó kezelők tudják használni (jelszavas védelem). Ilyen korlátozás egyébként a képernyőn elhelyezett gombokhoz és kapcsolókhoz is társítható a Properties / Security beállításnál.

Mivel a Softkey nem a képernyőn van, csak két eseménye van: Press (lenyomás) és Release (felengedés), hiszen nem lehet egérrel rákattintani (click) vagy a tab gombbal kiválasztani (activate / deactivate).

Példa



A példa az alábbi táblázattal és egy videó felvétellel mutatja be a nyomógomb és kapcsoló elem számos változatát.

Tolókapcsoló, kétféle elhelyezéssel. Ha bekapcsoljuk, az M1.0 bit TRUE lesz, ha kikapcsoljuk, akkor FALSE. Átkapcsolni húzással, vagy dupla kattintással lehet.
Nyomókapcsoló. A kapcsolón látható szöbeg "Be" amikor be van kapcsolva és "Ki" amikor ki van kapcsolva. A kapcsoló az MW3 egész típusú merker word-öt írja. AMikor bekapcsoljuk, 53-at ír bele, amikor ki, akkor 0-t.
Nyomókapcsoló. A kapcsolón látható szöbeg "Bekapcsolva" amikor be van kapcsolva és "Kikapcsolva" amikor ki van kapcsolva. Az M1.1 merker bitet írja.
Kapcsoló, grafikával. A kapcsoló megjelenésének két fázisa van. Egy grafika tartozik a kikapcsolt és egy a bekapcsolt állapothoz. Az M1.2-es merker bitet írja.
Nyomógomb szöveggel. A gombon látható szöveg statikus (nem változik). A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M1.3-as merker bitet írja. Az M1.3 FALSE amikor a gomb nincs megnyomva és TRUE lesz, amíg a gomb meg van nyomva. Ha a gombot felengedjük, ismét FALSE-re vált.
Olyan nyomógomb, aminek a szövege benyomáskor "Bekapcsolva" felengedéskor "Kikapcsolva". A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M1.4-es merker bitet írja. Az M1.4 FALSE amikor a gomb nincs megnyomva és TRUE lesz, amíg a gomb meg van nyomva. Ha a gombot felengedjük, ismét FALSE-re vált.
Olyan nyomógomb, aminek a felirata egy text lista elemtől és egy változótól függ, ami a listából választ. Jelen példában a lista két eleme a "Bekapcsolva" és a "Kikapcsolva".szöveg, amit az M1.5-ös merker bit választ ki.
A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M1.5-ös merker bitet írja. Mivel a funkció által írt bit és a gomb szövegét meghatározó bit is M1.5, a példában a gomb szövege a megnyomott/felengedett állapotától fog függeni. Természetesen a két változónak nem kell azonosnak lenni, így a gomb megnyomása által változtatott bit és a rajta megjelenő szöveg függetleníthető egymástól.
Nyomógomb grafikával. A gombon nem szöveg, hanem egy állandó grafikus ábra látható. A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M1.6-os merker bitet írja. Az M1.6 FALSE amikor a gomb nincs megnyomva és TRUE lesz, amíg a gomb meg van nyomva. Ha a gombot felengedjük, ismét FALSE-re vált.
Nyomógomb grafikával, amit grafikus lista határoz meg egy változó segítségével. Működése azonos a 7-es példával (Button (test list)). A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M1.7-es merker bitet írja. Az M1.7 FALSE amikor a gomb nincs megnyomva és TRUE lesz, amíg a gomb meg van nyomva.
Nem látható gomb, ami lefedi a szöveget és egy részt az alatta lévő területből. A gomb a "Press" eseménnyel meghívja a "SetBitWhileKeyPressed" funkciót, ami az M2.0-ás merker bitet írja. Az M2.0 FALSE amikor a gomb nincs megnyomva és TRUE lesz, amíg a gomb meg van nyomva.

Video file a nyomógombok és kapcsolók működéséről: sw_button.avi (7.7MB)


A videón az elemeket működés közben láthatjuk WinCC Flexible runtime alatt, ami a PLCSIM PLC szimulátorhoz kapcsolódik.

A 3. rész itt olvasható!




Szirty