martin.wagner
Level-1
- Beiträge
- 2
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
vorab - ich habe rel. selten mit Siemessteuerungen zu tun, mein Hauptaufgabengebiet befindet sich eher im Bereich der Hochsprachenprogrammierung. Für einen Test benötige ich nun aber ein Programm in einer S7 1200, das Daten per S7 Kommunikation in einem DB annimmt, manipuliert und in einem anderen DB wieder zur Verfügung stellt.
Mein Eingangs- und Ausgangs DB wird mit 16 Bit Words befüllt. Ich muss nun jeweils 2 Words nehmen, einen Word Swap machen, das entstandene DWord als Float interprätieren, eine Berechnung durchführen, in einen Integer konvertieren und wieder in 2 Words ausgeben.
In "C" kann man das z.B. mit memcpy() oder einem Union lösen
union {
u16 low;
u16 high;
float f;
} reinterpret;
reinterpret.low = dw2;
reinterpret.high = dw0;
floatval = reinterpret.float;
Wie mache ich das in Siemens SCL?
Mit der Suche bin ich nicht wirklich weitergekommen. Einige Suchergebnisse beziehen sich auf Codesys ST, andere habe ich einfach nicht verstanden
Danke!
vorab - ich habe rel. selten mit Siemessteuerungen zu tun, mein Hauptaufgabengebiet befindet sich eher im Bereich der Hochsprachenprogrammierung. Für einen Test benötige ich nun aber ein Programm in einer S7 1200, das Daten per S7 Kommunikation in einem DB annimmt, manipuliert und in einem anderen DB wieder zur Verfügung stellt.
Mein Eingangs- und Ausgangs DB wird mit 16 Bit Words befüllt. Ich muss nun jeweils 2 Words nehmen, einen Word Swap machen, das entstandene DWord als Float interprätieren, eine Berechnung durchführen, in einen Integer konvertieren und wieder in 2 Words ausgeben.
In "C" kann man das z.B. mit memcpy() oder einem Union lösen
union {
u16 low;
u16 high;
float f;
} reinterpret;
reinterpret.low = dw2;
reinterpret.high = dw0;
floatval = reinterpret.float;
Wie mache ich das in Siemens SCL?
Mit der Suche bin ich nicht wirklich weitergekommen. Einige Suchergebnisse beziehen sich auf Codesys ST, andere habe ich einfach nicht verstanden
Danke!