Variable import - Structs: Bei der Nutzung von Strukturen kann es zum Flackern von Werten kommen

     

Beschreibung des Verhaltens: 

Bei der Nutzung von Strukturen kann es dazu kommen, dass Werte in der Visu "flackern".
Das liegt an dem klassischen Problem bei der Verwendung von OPC UA Strukturen mit bidirektionalem Datenaustausch, da eine Struktur als ein Objekt behandelt wird.


Bedingungen unter denen das Verhalten auftritt: 
Das Verhalten tritt bei der Verwendung von Strukturen auf, die zyklisch Werte schreiben, sowohl aus der SPS als auch aus der Visualisierung heraus.

Die Struktur sieht beispielsweise so aus:

 STRUCT: MachineData

  • SetSpeed      (Sollwert, Client → Server)
  • SetPressure   (Sollwert, Client → Server)
  • ActualSpeed   (Istwert, Server → Client)
  • ActualPressure(Istwert, Server → Client)
Jetzt könnte der Ablauf folgendermaßen aussehen:

  1. Client liest Struktur
  2. Client ändert SetSpeed
  3. Client schreibt die komplette Struktur zurück
  4. Server aktualisiert seine Daten
  5. Server publiziert zwischenzeitlich einen neuen Istwert
  6. Client erhält eine neue Struktur mit:
    • neuem Istwert
    • altem Sollwert
  7. Die Anzeige springt kurz auf den alten Sollwert zurück
  8. Danach kommt die Bestätigung des neuen Sollwerts vom Server
  9. Die Anzeige springt wieder auf den neuen Wert

Diese zeitnahe Änderung der Werte in der SPS und in der Visu führt dazu, dass zwei Pakete nacheinander übertragen und abgearbeitet werden und somit verschiedene Wertänderungen sichtbar werden. 


Betroffene Produkte: 

EASY UI Designer 1.8, 1.9

 

Kurzfristige Maßnahme, Empfehlungen, Bewertung: 

Abhilfe schafft das Best practice zur Trennung von Soll- und Istwerten

Nicht:

STRUCT: MachineData

  • SetSpeed
  • SetPressure
  • ActualSpeed
  • ActualPressure
sondern:

STRUCT: MachineCommands (write)

  • SetSpeed
  • SetPressure
STRUCT: MachineStatus (read)

  • ActualSpeed
  • ActualPressure
oder sogar als einzelne Variablen:

  • MachineCommands.SetSpeed
  • MachineCommands.SetPressure
  • MachineStatus.ActualSpeed
  • MachineStatus.ActualPressure

Dann werden Sollwerte geschrieben und Istwerte gelesen ohne sich gegenseitig zu beeinflussen. Das ist normalerweise die bevorzugte OPC-UA-Modellierung.


URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/202600124/0/
Kontakt