F_SwapReal

F_SwapReal 1:

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