WinCC WINCC V7.5 Faceplate-Variablen auf Änderung überwachen

dirknico

Level-2
Beiträge
241
Reaktionspunkte
14
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine Faceplate an welches ich diverse Variablen anbinde.
Ich würde jetzt gern die Änderung der Variablen via Skript überwachen, möglichst im Faceplate selber....
Hierfür wäre es hilfreich wenn der Name der angebunden Variablen irgendwie im Skript verarbeitet werden könnte.
Geht sowas, und vor allem wie geht das?
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    52,3 KB · Aufrufe: 14
Aktualisierungszyklus "Bei Änderung" bedeutet bei WinCC, dass der maximal schnellste Aktualisierungszyklus verwendet werden soll (üblicherweise 250 ms). Das würde ich bei SPS Variablen nur im Ausnahmefall verwenden, da sich das direkt auf die Kommunikation auswirkt.

Im Faceplate selber brauchst du doch nicht den Namen der extern angeschalteten Variablen, sondern es reicht doch dafür der Wert der übergeben wird. Ansonsten gibt es noch eine Funktion wie GetLinkedVariable () über die sich das realisieren lässt, diese würde ich aber nur im Ausnahmefall verwenden, weil diese imho nicht im Webnavigator funktioniert.

Vielleicht schreibst du noch was du überhaupt vorhast. Es lässt sich außerhalb des Faceplates z.B. bei einer Eigenschaft ein Ereignis anbinden welches bei Wertänderung ausgeführt wird. Aber das wäre dann außerhalb des Faceplates und nicht innerhalb.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe für eine Art Schrittkette (max. 200 Schritte), die der Bediener selber festlegen kann ein Faceplate erstellt, indem
a) die jeweilige Funktion
b) die zu der Funktion gehörenden Parameter eingegeben werden können.
Je Schritt sind das dann jeweils 10 Werte.
Das ganze funktioniert auch soweit (siehe oben) -> Variablen übergeben -> läuft.

Jetzt müssen diese Werte natürlich irgendwie in einer Rezeptur gespeichert werden, hierzu würden wir gerne eine xml. via VBSkript erstellen.
Auch das funktioniert, jedoch nur bedingt.
Wenn wir ein "Rezept" speichern wollen und die etwas mehr als 2000 Variablen einlesen, dauert das seine Zeit und ist wirklich unschön und so auch nicht einsetzbar. Dieses Problem haben wir nicht wenn wir die 2000 Variablen als interne Variablen einlesen und speichern.

Daher war jetzt die Idee, die 2000 Variablen nochmal als Interne Variablen zu erstellen und jeweils bei Änderung der SPS-Variablen einmal wegzuschreiben.
Da ich aber nicht jede Variable einzeln anpacken möchte wäre es schön das einmal zu machen, wegen mir im oder am Faceplate und fertig.....

Die Namen der Variablen sind schon so aufgebaut das ich anhand dessen die "interne-Speicher-Variable" via Skript zusammenbasteln könnte
 
Wenn Du die externen Varis erst in ein Tagset packst, brauchst Du nur einen Lese bzw. Schreibbefehl. Das geht dann dramatisch schneller.
 
Wenn du bei 2000 Variablen so großzügig mit Aktualisierung "Bei Änderung" umgegangen bist, dann ist das für jegliche andere Kommunikation kontraproduktiv. Bei so vielen Variablen sind dann vermutlich die Anzahl der abonnierbaren Variablenanzahl erreicht, und dann wird mit hoher Rate gepollt. Also prüfen ob hier wirklich eine so schnelle Aktualisierung notwendig ist, ansonsten mindestens auf 1s oder 2s gehen.

Tagset kenn ich jetzt nicht, aber in C die GetTagMulti... Funktionen machen vermutlich das gleiche.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn es nur darum geht die Variablen bei Knopfdruck wegzuspeichern, brauchst du eigentlich gar keine zyklische Aktualisierung, bei Scriptaufruf werden sie ohnehin aktualisiert. Mach mal ein Diagnosefenster auf, wahrscheinlich gibt es jede Menge Performancewarnungen.
 
Die Variablenanbindung (E/A-Felder) sind in anderen Bildern.
Das Speicherbild hat lediglich ein paar Button und Textfelder ohne viel Variablenanbindung.
Von daher ist eher das Skript das Problem.

Mit Tagset wird das ganze zwar besser, dauert aber immer noch etwas zu lange
Im Faceplate gibt es keine C-Skripte...............
 
Zurück
Oben