WinCC Unified Array-Aktualisierung im Script

Passi70

Level-2
Beiträge
43
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,


ich versuche, ein Array in WinCC Unified mittels JavaScript auszulesen und zu verarbeiten. Dabei ist mir aufgefallen, dass sich die Array-Variablen in der Simulation nur einmalig beim Neustart der Runtime aktualisieren.


Mein Testskript sieht folgendermaßen aus:

let test = Tags("X werte").Read();
let test2 = test[3];

HMIRuntime.Trace("Array: " + test);
HMIRuntime.Trace("Einzelwert: " + test2);

Ich lese die dritte Stelle im Array aus. Ändere ich diesen Wert in der SPS und starte das Skript über einen Button auf dem HMI, wird im Trace jedoch weiterhin der alte Wert angezeigt solange, bis ich die Runtime neu starte. Dann funktioniert es einmalig.


In der Variablentabelle ist die Erfassungsart für das Array auf "Zyklisch im Betrieb" gesetzt.

Ich arbeite mit WinCC Unified V19.0.0.2 und Simuliere das HMI.


Hat jemand schon einmal ein ähnliches Problem gehabt und eventuell eine Lösung dafür?


Vielen Dank im Voraus!
 
Hallo,

Frage vorab: ist es ein Panel-Projekt? Warum nutzt du die Simulation?

Versuch mal Tags.("X werte").Read(1); damit wird der Variablenwert direkt aus PLC gelesen und nicht aus dem Abbild/Cache vom HMI.
Ob das allerdings bei einem Array und in Simulation funktioniert kann ich dir nicht sagen, da ich selber gerade nicht zum ausprobieren komme.

Du kannst ja gerne mal Rückmeldung geben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Würde das selbe wie @batman&ich vermuten, dass irgendetwas in der Aktualisierung der Variablen in das HMIseitige cache klemmt.
Wie genau hast du das Array im HMI angelegt (Aktualisierungseinstellungen, etc.)?

Tags.("X werte").Read(1);
Das würde die Aktualisierung der HMI erzwingen => wenns an den Aktualisierungseinstellungen der Variable liegt, sollte das funktionieren.
Eine Empfehlung: nutze die Enumerationen, ansonsten musst du jedes mal in die Doku schauen was der Zahlenwert wieder hieß.
Tags("X werte").Read(Tags.Enums.hmiReadType.hmiReadDirect);
Bei Tags.Read() gibt es nur zwei Werte, aber spätestens bei komplexeren Enums wird dein Zukunfts-Ich dankbar sein nicht nur Zahlen als Parameter zu vorzufinden.

Welche Enumeration zu dem Parameter gehört findest du in der Hilfe neben dem Datentyp:
1743674125991.png
 
Zuletzt bearbeitet:
Zurück
Oben