WinCC Flex BYTEs aus einem S7-Array von "DATE_AND_TIME" auswerten

S7_Hansi

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe in einer CPU 416F-2 ein Array des Typs "DATE_AND_TIME", bei dem ich das vorletzte Byte [1.&2.Ziffer ms] "missbrauchen" möchte.
Ich will, abhängig vom Ereignis des Speicherns eines "DATE_AND_TIME"-Eintrages, das vorletzte Byte als "Indikator" GUT-SCHLECHT nutzen, z.B. durch den Wert NULL oder EINS in diesem Byte.
Im WinCCflex ist es mir leider nicht möglich die Variable vom Typ "DATE_AND_TIME" zur Nutzung einer Eigenschaft (farbliche Darstellung dieses Ausgabefeldes) zu verwenden.
Hier bin ich nun zu der Überlegung gekommen aus der Variable "DATE_AND_TIME" in einem Skript das vorletzte Byte in eine neue WinCCflex-Variable (lokal) zu kopieren und dort weiter zur Animation zu nutzen. Leider hindern mich hier meine fehlenden VBScript-Erfahrung.

Problem-Kurzfassung:
S7-DATE_AND_TIME-Variable -> WinCC flex: hier -> TEMP-Variable [BYTE 0..7] und BYTE[6] "herausschneiden -> WinCC flex-Variable zur Animation

Ich hoffe dass meine Problem Beschreibung ausreichend genau dargestellt wurde und freue mich auf und bin dankbar für eure Hilfe

Gruß S7_Hansi
____________________
P.S.: Mit weiterem Array für die Animation habe ich die Aufgabe gelöst, nur wäre eine Größenänderung des Arrays hier mit Problemen behaftet
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry, aber das ist genau das was ich vermeiden wollte, aktuell habe ich es ja so.
Nur beim erweitern des Arrays um [n] Elemente müsste ich bei diesen Variablen [n] Elemente EINZELN hinzufügen.

Darüber hinaus reizt es mich die Bearbeitung dieses BYTE[6] hin zu bekommen.

Gruß Hansi
 
Im WinCCflex ist es mir leider nicht möglich die Variable vom Typ "DATE_AND_TIME" zur Nutzung einer Eigenschaft (farbliche Darstellung dieses Ausgabefeldes) zu verwenden.
Lass doch die CPU die Eigenschaft bestimmen und pack es mit in die HMI-Variablen und mach daraus eine "Animation", wo du einfach die Hintergrundfarbe entsprechend der Variable vergibst.

Das versteht man eher, als Code, der bei einem Zeitstempel das 6. Byte verändert, um dann dort eine Information zu verstecken.
 
Nur beim erweitern des Arrays um [n] Elemente müsste ich bei diesen Variablen [n] Elemente EINZELN hinzufügen.
das musst du doch sowieso (also 2x n zusätzliche HMI-Variablen händisch anlegen)
Wenn du (wie von mir in #2 vorgeschlagen) eine Variable auf die Adresse des BYTE[6] anlegst, dann wars das auch schon.

Wenn du unbedingt die Date_and_Time-Variablen im HMI zerlegen willst, dann musst du zusätzlich noch bei jeder Date_and_Time-Variable bei Wertänderung das Zerlege-Skript aufrufen und auch noch dafür sorgen, dass überall da, wo du das BYTE[6] verwenden willst, auch die Date_and_Time-Variable im Bild verwendet wird, damit die aktualisiert wird und ggf. das Wertänderungs-Ereignis auslöst.

Wie hast du die Date_and_Time-Variablen im HMI projektiert? Einmal als Date_and_Time-Variable und zusätzlich einmal als Byte[0..7]-Array?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So, ich habe mal ein paar Daten zusammen gefasst, siehe Anhang.
In der SPS sind die Variablen
DaT : ARRAY[0..GRENZE] OF DT;
UNG : ARRAY[0..GRENZE] OF BOOL;
Off : ARRAY[0..GRENZE] OF BOOL;
angelegt (GRENZE := 100).
Im HMI werden diese bei Off=1 angezeigt und mit UNG farblich animiert.
Mit den Eingängen E4702.x wird ein Paletten-Transport signalisiert welcher IO / NIO bzw. "ungleich" ist.
IO wird nicht dokumentiert, NIO und "ungleich" wird mit Datum/Zeit erfasst und farblich gekennzeichnet.
Das ganze dient zur Fehleranalyse, fest zu stellen, wann es zu Fehlern (NIO / ungleich) kommt.

Die Arrays "UNG" und "Off" wollte ich im Array DaT "einbetten", nur kann ich diese Variable nicht zur Animation verwenden, da WinCC flex dies nicht zulässt.
Die Lösung dieses Problems ist primär nicht so entscheidend, es reizt mich nur dies mit EINER Variablen statt mit DREIEN zu realisieren.

Gruß Hansi
 

Anhänge

  • SCL.png
    SCL.png
    57,6 KB · Aufrufe: 9
  • HMI_Runtime.png
    HMI_Runtime.png
    19,2 KB · Aufrufe: 9
  • HMI_Variablen.png
    HMI_Variablen.png
    49 KB · Aufrufe: 9
  • VAT.png
    VAT.png
    88,1 KB · Aufrufe: 9
In der SPS sind die Variablen
DaT : ARRAY[0..GRENZE] OF DT;
UNG : ARRAY[0..GRENZE] OF BOOL;
Off : ARRAY[0..GRENZE] OF BOOL;
angelegt (GRENZE := 100).
Dass Hochsprachen-Programmierer immer so tippfaul sind und alles mit (prinzipiell oben offenen) Arrays und Schleifen erschlagen wollen ... ;)

Die Arrays "UNG" und "Off" wollte ich im Array DaT "einbetten"
Können kann man das, wenn man in der SPS Speicherplatz sparen will oder muss, aber man kann in WinCC flexible im HMI den DATE_AND_TIME nicht zerlegen (*) Vielleicht geht das in TIA Unified und Javascript?

(*) Strukturen gehen nur mit Bildbausteinen, und man kann keine Arrays OF Struktur projektieren
evtl. hat Siemens im VBS implementiert (aber nicht dokumentiert), dass man z.B. auf die Minuten oder Sekunden oder den Wochentag von Date_Time zugreifen kann? Vielleicht auch auf die Millisekunden?? Direkt oder per DatePart oder eine Konvertierung? ---> Siemens Support fragen

es reizt mich nur dies mit EINER Variablen statt mit DREIEN zu realisieren.
Das geht aber nicht, auch nicht mit VBS-Skripten. Da müsste man alle HMI-Variablen mindestens dreifach anlegen (mal als Date_Time und mal als Byte-Array (**) und als Ausgabe-Variablen für die Zusatzinfo) und dann der Zusatzaufwand für das Triggern des Wertänderung-Ereignisses ...

(**) Array OF Byte-Array geht bei HMI-Variablen auch nicht, dass muss auf ein eindimensionales Array abgebildet werden


Übrigens: jedes Anzeigen bzw. jeder Zugriff auf ein Element von FB4701.DaT löst immer das Lesen aller 800 Bytes des Arrays aus. Ebenso beim Schreiben (falls du sowas auch noch in deinem Projekt hast). Beim Schreiben kommen dann auch noch die üblichen Multitasking-Probleme hinzu, falls SPS und HMI auf dieselben Variablen schreiben.
 
Übrigens: jedes Anzeigen bzw. jeder Zugriff auf ein Element von FB4701.DaT löst immer das Lesen aller 800 Bytes des Arrays aus. Ebenso beim Schreiben (falls du sowas auch noch in deinem Projekt hast). Beim Schreiben kommen dann auch noch die üblichen Multitasking-Probleme hinzu, falls SPS und HMI auf dieselben Variablen schreiben.
Danke für die Info,
hab' ich gar nicht bedacht. Ist in diesem Fall aber nebensächlich, da das HMI nur dieses Bild enthält, erstellt zur Fehleranalyse.
Und Hochsprachen ist eher nicht so mein Ding, ist der erste SCL-FB in S7. Ich hatte wohl schon mal welche bei einer Konvertierung von S7 ->TIA, aber da habe ich mich auch schon schwer getan.
Gruß Hansi
 
Zurück
Oben