TO_REAL-Baustein

Kurz-Information

Name

TO_REAL

→POE-Typ

→Funktion

Kategorie

IEC-Baustein, Convert, Baustein mit interner Fehlerdiagnose

Konform zur →IEC-Norm

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/error.svg derzeit eingeschränkt und images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg i mplementierungsabhängige Realisierung; siehe "Funktionalität"

und

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/add.svg mehr als in IEC-Norm vorgesehen möglich; siehe "Explizite Konvertierung laut IEC-Norm"

Grafische Schnittstelle

images/download/thumbnails/414781133/TO_REAL-version-1-modificationdate-1534929886834-api-v2.png

Verfügbar ab

  • Version 1.0.0 (für logi.CAD 3) – Anfangsvariante

  • Version 1.90.0 (für logi.CAD 3) – Erweiterung: TIME_OF_DAY für IN

  • Version 3.2.0 (für Bibliothek Standard) – Erweiterung: STRING und CHAR für IN, interne Fehlerdiagnose

Funktionalität

Der Baustein dient zur expliziten Konvertierung des an IN anliegenden Werts in einen Wert vom Datentyp REAL.

Falls der anliegende Wert im gemeinsamen Wertbereich des Eingangsdatentyps und des Ergebniswerts REAL liegt, so liefert der Baustein diesen Wert.

Abweichung von IEC-Norm

Die IEC-Norm definiert, dass die Konvertierung für die Datentypen, die laut der IEC-Norm vorgesehen sind, als Binär-Transfer erfolgt. Dieser Baustein weicht jedoch von der IEC-Norm ab. Die Werte des Datentyps DWORD werden abweichend von der IEC-Norm konvertiert . Das Verhalten in logi.CAD 3 ist so:

  1. Ein Wert des Datentyps DWORD wird als Binär-Transfer auf UDINT zugewiesen (dies erfolgt bereits als Abweichung von der Norm).

  2. Nach dieser Zuweisung wird der Wert des Datentyps UDINT in den Wert des Datentyps REAL konvertiert. Diese Konvertierung erfolgt laut der IEC-Norm "Table 23 – Data type conversion of numeric data types", Zeile 65 "UDINT_TO_LREAL", "Conversion detail: Conversion with potential loss of accuracy". Dennoch ist diese Konvertierung ebenfalls eine Abweichung von der Konvertierung, die in der IEC-Norm "Table 25 – Data type conversion of bit and numeric types", Zeile 2 "DWORD_TO_REAL", "Conversion detail: Binary transfer" vorgegeben ist.

Implementierungsabhängige Realisierung

Die IEC-Norm definiert, dass es ein Fehler ist, wenn der anliegende Wert nicht im gemeinsamen Wertbereich des Eingangsdatentyps und des Ergebniswerts liegt, aber auch dass es sich dabei um ein implementiererspezifisches Verhalten handelt. In logi.CAD 3 verhalten sich die Konvertierungsbausteine prinzipiell so: Der nicht-übereinstimmende Wertbereich wird nicht als ein Fehler betrachtet. Zusätzlich gilt: Falls ein Wert vom Datentyp REAL oder LREAL anliegt: Der Ergebniswert des Bausteins ist vom Compiler und Zielsystem abhängig (siehe "Auswirkungen der Compiler-Einstellungen auf die Ausführung" für Details).

Beachten Sie zusätzlich:

  • Falls ein anliegender Wert mit mehr als 6 Stellen konvertiert wird, kann das Ergebnis inexakt sein. Grund sind die Anzahl der signifikanten Stellen von REAL (Details: siehe "Unterstützte Datentypen (in ST)" der Hinweis 3 und der Hinweis 4 nach der Tabelle).

  • Falls ein anliegender LREAL-Wert zu groß für den maximalen bzw. minimalen Wert von REAL ist, liefert der Baustein +Infinity bzw. -Infinity. Der Ausgang ENO wird hier auf den Wert TRUE gesetzt.

  • Falls ein Wert vom Datentyp STRING am Eingang anliegt, der einem gültiger Real-Literal entspricht (siehe die folgende Tabelle für Beispiele), wird der Wert entsprechend konvertiert. Der Ausgang ENO wird hier auf den Wert TRUE gesetzt.
    Bei anderen Werten liefert der Baustein den Wert 0.0. Hier wird d er Ausgang ENO auf den Wert FALSE gesetzt. Sonderfall: Falls der anliegende Wert mit einem gültigen Real-Literal beginnt und dahinter andere Zeichen folgen (z.B. '3.14159_26', STRING#'1.5 E10', '-INFxxx'), liefert der Baustein den Anfangswerts, wie er unterstützt wird (also: 3.14159, 1.5, -INF) und der Ausgang ENO wird auf den Wert FALSE gesetzt.

    Beschreibung

    Beispiele für Werte vom Datentyp STRING, die einem gültigen Real-Literal entsprechen

    Real-Literal

    '0', '0.0', '0.4560', '3.1415926', '-123456789',STRING#'0', STRING#'0.0', STRING#'0.4560', STRING#'3.1415926', STRING#'-123456789'

    Real-Literal mit Exponenten

    '-1.34E-12', '-1.34e-12', '1.0E+6', '1.0e+6, 1E+6', '1.234E6', '1.234e6',STRING#'-1.34E-12', STRING#'-1.34e-12', STRING#'1.0E+6', STRING#'1.0e+6, STRING#1E+6', STRING#'1.234E6', STRING#'1.234e6',' 987e-3', ' +2.5E30',STRING#' 987e-3', STRING#' +2.5E30'

    keine Zahl ("Not a Number") oder unendlich ("Infinity")

    'Nan', 'INF', '-INF'

    Real-Literale mit der Typangabe REAL bzw. LREAL sind keine gültigen Real-Literale.
    Beispiel für Werte vom Datentyp STRING, die einem ungültigen Real-Literal entsprechen: 'REAL#0.0' bzw. 'LREAL#0.0'

  • Falls ein Wert vom Datentyp CHAR am Eingang anliegt, der einem gültiger Real-Literal entspricht (z.B. '0', CHAR#'9'), wird der Wert entsprechend konvertiert (also: 0.0, 9.0). Der Ausgang ENO wird hier auf den Wert TRUE gesetzt.
    Bei anderen Werten (z.B. '+', CHAR#A) liefert der Baustein den Wert 0.0. Hier wird der Ausgang ENO auf den Wert FALSE gesetzt.

Explizite Konvertierung laut IEC-Norm

Die IEC-Norm sieht eine explizite Konvertierung der folgenden Datentypen auf REAL vor:

LREAL, LINT, DINT, INT, SINT, ULINT, UDINT, UINT, USINT, DWORD

Die IEC-Norm (Edition 3.0) sieht eine binäre Übertragung aller Eingangsdatentypen vor . Abweichend davon wird der entsprechende Wert bei den folgenden Eingangsdatentypen aber laut IEC-Norm (Edition 2.0) konvertiert.

DWORD

Beispiel 1: Der DWORD-Wert 16#43BE4000 wird in den REAL-Wert 1.136542E+9 konvertiert. Die Konvertierung laut Edition 3.0 würde aber den REAL -Wert 380.5 ergeben.
Beispiel 2: Der DWORD-Wert 123 wird in den REAL-Wert 123.0 konvertiert. Die Konvertierung laut Edition 3.0 würde aber den REAL-Wert 172.3597E-45 ergeben.

Details zum logi.CAD 3 -Verhalten des Bausteins finden Sie im Abschnitt "Funktionalität".

Eingänge, Ergebniswert


Bezeichner

→Datentyp

Beschreibung

Eingänge:

IN

REAL, LREAL, USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, TIME, BOOL, BYTE, WORD, DWORD, LWORD, STRING, CHAR oder TIME_OF_DAY

zu konvertierender Wert

Ergebniswert:

REAL


Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Informieren Sie sich unter:

Interne Fehlerdiagnose für Baustein

Der Baustein prüft den Wert, der am Eingang anliegt. In den folgenden Fällen wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) zurückgesetzt:

  • Ein STRING-Wert enthält ein nicht-erlaubtes Zeichen oder beginnt damit. (Der Wert, den der Baustein liefert, ist von der Postion der nicht-erlaubten Zeichen abhängig. Siehe die Beschreibung unter "Funktionalität" oben.)

  • Der CHAR-Wert ist ein nicht-erlaubtes Zeichen. (In diesem Fall liefert der Baustein außerdem den Wert 0.0.)

Beispiel für Verwendung im ST-Editor

PROGRAM Test
VAR
result : REAL;
END_VAR
result := TO_REAL(IN := SINT#12); (* The variable 'result' evaluates to value '12.0' of REAL. *)
END_PROGRAM

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.