TIA S7-1200, V13, PLC-Datentypen vergleichen

Onkel Dagobert

Level-3
Beiträge
5.830
Reaktionspunkte
1.454
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

im versuche gerade, ein paar meiner klassischen Funktionen in TIA zum Laufen zu bringen. Ich verwende hierfür zunächst eine S7-1200, V13, vorzugsweise SCL und alles nichtoptimiert. Die Daten liegen in Global-DBs."ANLAGE" und "HMI" sind PLC-Datentypen vom gleichen Typ als InOut-Parameter eines FBs. "A" und "B" seien Unterstrukturen des Datentyps. Ich möchte diese Strukturen bzw. Unterstrukturen einfach nur auf Gleichheit bzw. auf Ungleichheit vergleichen.

Code:
IF #ANLAGE.A.B <> #HMI.A.B THEN ...
So wie hier dargestellt, funktioniert es erwartungsgemäß nicht. Alle einzelnen Elemente des Typs vergleichen, kann die Lösung nicht sein. Wie mache ich das am einfachsten?


Gruß, Onkel
 
Zuletzt bearbeitet:
Hallo Onkel,

das geht z.Bsp. wenn du eine AT-Sicht als ARRAY[0..x] of Byte, Word, etc. auf die Datentypen anlegst. Dann kannst du die Daten in einer FOR-Schleife abfragen.
Alles muss man hier selber machen ;-) .


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vorsicht Onkel, damit vergleichst Du den Inhalt des von Deinem Datentyp belegten Speichers, was nicht unbedingt das selbe wie die kontrolliert belegten Daten ist. Du erinnerst Dich vielleicht noch an diese Diskussion zum Vergleichen von Strukturen und meinen Hinweis damals:
Du mußt Deine Struktur so aufbauen/deklarieren, daß sie keine unsichtbaren Padding-Bits oder Padding-Bytes enthält, weil eine Byteweise/Wordweise Vergleichsfunktion nicht nur die Struktur-Member vergleicht, sondern den gesamten von der Struktur belegten Speicherbereich. Es wäre fatal, wenn da evtl. uninitialisierter Speicher mit zufälligem Inhalt mit-verglichen würde.

Harald
 
Hi

ja mit V14 ist das möglich

Und es funktioniert mit in den Strukturen enthaltenen Strings !! Und optimiert.
Also viel besser als der Umwege über SERIALIZE.

'n schön' Tach auch
HB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

.. damit vergleichst Du den Inhalt des von Deinem Datentyp belegten Speichers, was nicht unbedingt das selbe wie die kontrolliert belegten Daten ist ...
Danke für den Hinweis. Das kann, wenn überhaupt, nur vorkommen, wenn man sich in den temporären Lokaldaten seine Daten aus Bits zusammen bastelt, ohne vorher das Word zu initialisieren? Das wäre dann an dieser Stelle ohnehin nicht ganz sauber. In TIA muss man die temporären Lokaldaten angeblich nicht einmal mehr initialisieren.

@Marcel, HB
V14 schlummert bei uns noch in der Schublade. Gut zu wissen dass es dort so einfach geht.


Gruß, Onkel
 
Ohje, gefährliches Halbwissen bei mir. Naja, verlassen hätte ich mich darauf so wie so nicht. Dieser optimierte Mist aber auch.
 
Zurück
Oben