F_SwapReal
Die Speicherdarstellung einer REAL-Zahl auf einem Buscontroller (165) unterscheidet sich von der Speicherdarstellung einer REAL-Zahl auf einem Intel-System (PC). Um eine REAL-Zahl eines Buscontrollers auf einem PC richtig darstellen zu können müssen die Hi- und Lo-Words der REAL-Zahl vertauscht werden. Die Programmierumgebung macht dies bereits im Online- oder Simulations-Mode. Um die REAL-Daten eines Buscontrollers über das Netzwerk (ADS-Protokoll, ADSDLL, AdsOcx usw. ) anzufordern und auf einem Intel-PC richtig darzustellen, müssen die REAL-Daten in das richtige Format konvertiert werden. Dieses kann auf der Buscontroller- oder PC-Seite gemacht werden. Mit der Funktion F_SwapReal können die REAL-Variablen (die z.B. von einer VB-Applikation eingelesen werden oder mit TwinCAT Scope View aufgezeichnet werden sollen) auf der PC-Seite in das passende Format konvertiert werden. Der übergebene fVal-Parameter wird dabei von der Konvertierung nicht beeinflusst. Die Funktion liefert eine neue REAL-Zahl mit veränderten Speicherdarstellung.
FUNCTION F_SwapReal : REAL
VAR_INPUT
VAR_INPUT
fVal :REAL;
END_VAR
fVal: Der zu konvertierende REAL Wert.
Beispiel in ST:
PROGRAM MAIN
VAR
Real_165 : REAL;
Real_i386 AT%MB0: REAL;
END_VAR
(* ADSREAD(.... ADR(Real_165), SIZEOF(Real_165)... );
...
...
...
*)
Real_i386 := F_SwapReal( Real_165 );
Real_i368 := Real_i368 + 0.001;
Im Beispiel wird eine 4-Byte REAL-Variable des Buscontrollers in den 4-Byte REAL Intel-Format konvertiert. Die Variable Real_i386 kann dann z.B. auf einer VB-Form richtig dargestellt werden.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 Build > 518 TwinCAT v2.8.0 Build > 735 | BCxxxx (165) | Standard.Lb6, PlcSystemBC.Lb6, TcPlcUtilitiesBC.Lb6 |