END_PROGRAM
7.20.4
Konvertieren zwischen beliebigen Datentypen und Byte-Feldern (Marshalling)
Das Konvertieren von Variablen beliebigen Datentyps in Byte-Felder und umgekehrt wird
häufig verwendet, um definierte Übertragungsformate für den Datenaustausch zwischen
verschiedenen Geräten zu schaffen (siehe auch Kapitel
Folgende Funktionen stehen zur Verfügung; sie wandeln Variablen beliebigen Datentyps
(elementare Datentypen, Standarddatentypen der Technologiepakete und Geräte,
anwenderdefinierte Datentypen) in Byte-Felder und umgekehrt:
● AnyType_to_BigByteArray (Seite 324)
● AnyType_to_LittleByteArray (Seite 324)
● BigByteArray_to_AnyType (Seite 326)
● LittleByteArray_to_AnyType (Seite 326)
Bei allen Funktionen kann optional ein Offset für das erste zu belegende oder
auszuwertende Element im Byte-Feld angegeben werden.
Es wird unterschieden nach:
● Richtung der Wandlung (von bzw. nach Byte-Felder)
● Anordnung der Bytes im Feld (siehe Tabelle):
Basisfunktionen
Funktionshandbuch, 05/2009
nextCommand := IMMEDIATELY);
IF (ds_ret.functionResult <> DONE) THEN
cmd_busy := FALSE;
error := TRUE; // Start der Funktion fehlgeschlagen
// (z. B. zuviele Dienste)
END_IF;
ELSE
// Funktion läuft, auf Ergebnis warten:
ds_rslt := _getStateOfUnitDataSetCommand (
ds_ret.handle);
IF (ds_rslt <> ACTIVE) THEN
cmd_busy := FALSE;
IF (ds_rslt = DONE) THEN
cmd_done := TRUE;// Funktion erfolgreich
// beendet
ELSE
error := TRUE;// Funktion fehlgeschlagen
END_IF;
END_IF;
END_IF;
– Big Endian: höchstwertiges Byte an niedriger Speicheradresse
(Motorola, SUN Sparc, SIMATIC S7)
– Little Endian: niedrigstwertiges Byte an niedriger Speicheradresse
(Intel, DEC Alpha)
Programmierung allgemeiner Standardfunktionen
7.20 Anwendung einiger Systemfunktionen
Kommunikationsfunktionen
).
397