TIA TIA v16 WinCC Script: Arrays adressieren und Script zyklisch aufrufen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

I know, der Thread ist schon verstaubt. Dennoch: Ich hatte bis eben genau das Problem.
Lösung: Man darf, wenn man auf die Elemente eines Arrays aus dem Script zugreifen will, KEINES des Elemente des Arrays zusätzlich einzeln in der Variablentabelle deklariert haben!!! Keine Ahnung wieso, aber so is es.
Vielleicht hilft das ja in Zukunft noch jemandem.

Schönen Tag

Georg
 
Das Verhalten ist schön länger bekannt, kommt bei allen Variablen vor, wenn diese dynamisch zusammengesetzt werden und sonst nirgendwo im Gesamten verwendet werden.
Schätze mal das ist eine Optimierung vom Compiler, der Variablen, die nicht verwendet werden, eliminiert.

Das Initialisieren muss übrigens nicht sein, wenn man die Variable gleich auf "zyklisch aktualisieren" stellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

Leider in der Eile des Gefechts vergessen den Rahmen zu definieren...
WinCC Professional V19 in TIA V19, VB-Script.
Bei der Professional kann man leider nicht einstellen, wann die Variablen aktualisiert werden. Es gibt kein "zyklisch bei Verwendung" oder "zyklisch alle x Sekunden".
Und es ist genau anderes Herum:
Ich greife auf einen UDT mit Arrays und Einzelvariablen zu. Wenn ich ein Array-Element nun zusätzlich zum UDT einzeln in der Variablentabelle deklariere, funktioniert der Zugriff über den UDT (indirekter Zugriff auf ein Arrayelement aus dem Script) nicht mehr.

Ganz schön schwierig das verständlich rüber zu bringen.
 
Denke du hast genau das Problem hier: Klick

Ist wohl wirklich so, wenn du einen UDT in die HMI verbindest, der Arrays beinhaltet. Alle Elemente dieser Arrays müssen vorher im ganzen irgendwo mal gelesen worden sein. Ist wohl unabhängig von Advanced/Professional.
 
Ich habe kein Problem mehr :p
Nachdem ich die einzeln deklarierten Variablen gelöscht und die EA-Felder über den Typ angebunden habe tut das alles, ohne dass ich jede Variable aufrufen oder initialisieren muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ihr müsst auch immer aufpassen wenn Ihr dynamisch zusammengesetzte Variablen verwendet.
Wir hatten dies früher in Wincc, dort haben wir namen von arrayvariablen dynamisch zusammengesetzt und gelesen. Man konnte beim lesen aber auch eine 1 übergeben, dann wurde soweit ich weiß direkt gelesen und gewartet. Wenn man das nicht machte, wurden die Variablen registriert das sie dauerhaft gelesenen werden sollen, und dadurch wurde unsere wincc visualiserung immer langsamer ( da immer mehr variablen gelesen wurden)
 
Man konnte beim lesen aber auch eine 1 übergeben, dann wurde soweit ich weiß direkt gelesen und gewartet.
Das geht im TIA eh nur in Runtime Professional und auch nur in Verbindung mit dem "HmiRuntime.Tags"-Objekt. SmartTags werden nur über den Cache und mit fester Aktualisierungszeit gelesen/geschrieben. Und ob das immer die eingestellte Aktualisierungszeit ist darf bezweifelt werden.
 
Zurück
Oben