A faceplate-ek
(2)


General
faceplate configuration ablak General fülénél néhány alap tulajdonságot állíthatunk be, mint pl. a faceplate neve. Ez a név jelenik meg a library-ban is, ahonnan később elővehetjük.



A Sizing behaviour beállítás a faceplate (mint grafikus egység) méretézhetőségének megkötéseit határozza meg.

Itt lehetőség van még a faceplate-ben lévő szövegek CSV (excel számára is ehető) file-ba mentésére és file-ból való beolvasására.

Event Interface

A faceplate-ben lévő objektumok eseményeit "kivezethetjük" az event interface segítségével.
Természetesen csak amelyikre szükségünk van a faceplate működéséhez.A property interface-hez hasonlóan jobb oldalon itt is a faceplate-ben már elhelyezett összes objektum látható.



Amelyik objektum képes esemény létrehozására, annak neve előtt + vagy - jel van. Ha a szükséges esemény nevét az adott objektum alól egérrel egyszerűen áthúzzuk a bal oldalra, akkor létrehozunk egy kapcsolatot az adott belső objektum egy eseménye és a faceplate interface-e között.
Később a faceplate felhasználásakor minden ilyen kapcsolat meg fog jelenni a faceplate beállításai között:



Természetesen ez egyben azt is jelenti, hogy ha itt egy eseményhez funkciót rendelünk, és a faceplate adott objektuma létrehozza az eseményt, akkor a hozzárendelt funkció végrehajtásra kerül (lásd később a példában).

Script

A script-ek sem maradhatnak ki, a faceplate-be írhatunk script-eket. A script-ek szintén lokális hatókörrel rendelkeznek, kizárólag a faceplate-en belül lehet meghívni őket. A faceplate-ben megírt script megjelenik ugyan a WinCC Flexible Scripts listájában, de nem lehet meghívni egy faceplate-en kívüli objektum event-jével. Ez fordítva is igaz, a faceplate-en belülről nem lehet külső scrip-et futtatni.




Készítsünk faceplate-et

Megpróbálom egy példával is bemutatni a faceplate létrehozását és működését. A példa sokszor beszédesebb ezer sornál.
A faceplate két stattikus szöveget tartalmaz (text field), két beviteli mezőt (input field) és egy nyomógombot (button), valamint egy scriptet.


A faceplate visszaadja azt az értéket, amit a Property_2 szöveg melletti input mezőbe beírunk. A nyomógomb lefuttatja a "Script_1" nevű scriptet, ami a Property_2 értékét elosztja kettővel és az eredményt egy belső tag-be teszi, aminek a neve Tag_1. A Tag_1 felirat melletti input mező ezt meg is jeleníti, mert ahhoz a Tag_1 nevű belső változó van hozzárendelve, így a gomb megnyomásakor itt megjelenik a Property_2-nek megadott érték fele.

Lépjünk be a faceplate szerkesztőbe és hozzunk létre egy újat a Faceplate/Create faceplate menü használatával.
Helyezzünk el egy fehér téglalapot a faceplate-ben, tegyük rá a Tag_1: és Property_2 szöveget, majd a két input mezőt, végül a nyomógombot.
Ezek a műveletek eddig teljesen megegyeznek azzal, mint amikor közönséges screen-re helyezzük el ezeket az objektumokat.

Most a Faceplate configuration ablak Property interface fülén a MyProperties bejegyzés alatt hozzunk létre egy új tulajdonságot.
Ez megtehetjük úgy, hogy jobb gombbal kattintva előbukkanó menüből válasszuk az Add Property pontot, majd Edit Property menüvel átírjuk a nevét "Tag_1_neve" szövegre, string-re állítjuk az adattípust, majd az ablak jobb oldalán a Text Field_1 objektum General/Text tulajdonságát áthúzzuk és rádobjuk a most készült property bejegyzésre.
Vagy a property-t nem hozzuk létre előtte, csak a Text tulajdonságot húzzuk át. Ekkor az adattípus magától beáll string-re (örökli az eredeti objektumtól).
A Property_2 szöveggel is végezzük el ezt a műveletet, vagyis annak is hozzunk létre egy property bejegyzést, a Text Field_2/General/Text tulajdonsághoz rendeljük hozzá és nevezzük el "Property_2_neve"-nek. Tegyük ezt meg a nyomógombbal is, ahol a propertyt a Button_1/General/Text OFF tulajdonsághoz kell kötni. Adjuk neki a "Gomb_neve" nevet.
Hozzunk létre egy int típusú tag-et a tags listában és rendeljük hozzá az IO Field_1/General/Process value objektum tulajdonságot (IO Field_1 a "Tag_1" szöveg melletti beviteli mező.
Végül készítsünk egy integer típusú propertyt a másik input mezőnek, majd rendeljük hozzá az IO Field_2/General/Process value objektum tulajdonsághoz. (Ez a beviteli mező van a Property_2 szöveg mellett.) A jobb gomb: "Edit Property" menü használatával kapcsoljuk be a property-ben a pipát, ami dinamikussá teszi a tulajdonságot.
Ez annyit jelent, hogy ennek a tulajdonságnak tadhatunk majd kívülről globális WinCC Flexible Tag-et. A példában ezen keresztül fogja a faceplate egy változóba írni azt az értéket, amit a faceplate Property_2input mezőjébe beírunk.



Amikor ezzel készen vagyunk, akkor a Property interface a következő bejegyzéseket és hozzárendeléseket kell hogy tartalmazza:



Hozzuk létre a scriptet. Váltsunk át a Faceplate configuration ablak Script fülére.Vegyük fel az INPUT nevű paramétert egy Sub típusú scriptbe, aminek a neve legyen Script_1. Írjuk be a script szerkesztőbe a Tag_1=INPUT/2 sort (lásd fenti képet a Script. c. résznél).

Válasszuk a Faceplate configuration ablak Event interface fülére. Itt egy Events listát találunk, ami még üres.A jobb oldali Inner objects listában keressük ki a nyomógomb Press eseményét és húzzuk át balra, majd dobjuk rá az Events elemre:



Így bekerül az Events listába a gomb Press eseménye.
Bár ezt nem használtuk ki a példában, de ez teszi lehetővé, hogy a faceplate-en megnyomott Button_1 gomb press eseményét a faceplate-en kívül is felhasználhassuk, mivel ez az esemény így benne lesz a faceplate esemény listájában, amihez így funkciókat rendelhetünk hozzá.

Már csak egy dolgunk van, a nyomógomb Press eseményével meghívni a scriptet.
Kattintsunk a faceplate szerkesztőben a gombra és a gomb tulajdonságai között nyissuk meg az Event/Press elemet, majd ott vegyük fel a funkciók közé a scriptet és adjuk át neki a Properties/Process_value nevű tulajdonságot, mint INPUT paramétert:


Ezzel a faceplate elkészült.

A faceplate használata

Minden faceplate megjelenik a Tools Library szekciójában, innen tudjuk őket kiválasztani ha használni szeretnénk valamelyiket.
Ugyan úgy lehet lerakni egy faceplate-et, mint bármelyik közönséges objektumot.
Helyezzük el egy képernyőn a frissen készített faceplate-ünket.



Az objektum (ami jelen esetben a kész faceplate) tulajdonságai között találunk egy Dynamic Interface csoportot. Itt jelenik meg az összes olyan paraméter, amit változóban adhatunk át a faceplate-nek, vagy a faceplate ad vissza értéket, amit egy változóba akarunk tenni. A mi példánkban csak egy ilyen van, a Process_value nevű, ami a faceplate-en belül a Property_2 beviteli mezőbe írt értéket fogja visszaadni.

A közönséges objektumoktól a faceplate tulajdonság lapja a General résznél is eltér:


Itt a méret és pozíció adatokon és a faceplate nevén kívül megjelennek a statikus tulajdonságok, amiket a faceplate szerkesztésekor felvettünk a MyProperties csoportba, de nem kapcsoltuk be rajtuk a pipát, amitől dinamikus lesz.

A statikus és a dinamikus tulajdonságok között az a különbség, hogy a dinamikust átadhatjuk egy változón (tag) keresztül, így az a tulajdonság futás közben is változtatható. A statikust azonban kézzel, fixen kell megadnunk amikor a projectet készítjük, ez később (futás közben) nem változtatható meg.

A példa-faceplate elkészítéséről készült videó: Faceplate.avi


A faceplate működéséről készült videó: Faceplate_teszt.avi



Kapcsolódó írások:
A faceplate-ek c. írás első része


Szirty