EXPT-Baustein

Kurz-Information

Name

EXPT

→POE-Typ

→Funktion

Kategorie

Standard (safe), NumericBaustein mit interner Fehlerdiagnose

Konform zur →IEC-Norm

(Plus) mehr als in IEC-Norm vorgesehen möglich;
(IEC fordert nur ANY_REAL für den Eingang IN1 und den Ergebniswert.)

und

(Fehler) derzeit eingeschränkt
(IEC fordert eine Fehlerbehandlung, falls das Ergebnis des Bausteins den Wertebereich des Ausgangsdatentyp überschreitet. Siehe "Keine Prüfung von ungültigen Beschaltungen" für das Verhalten in Neuron Power Engineer.)

Grafische Schnittstelle

Verfügbar ab

Version 1.0.0 (für Neuron Power Engineer) – Anfangsvariante

Version 2.0.16 (für Bibliothek Standard) – Erweiterung: interne Fehlerdiagnose, Überarbeitung, um die Berechnung von korrekten Ergebnisse für anliegende ANY_INT-Werte zu garantieren

Version 3.1.0 (für Bibliothek Standard) – Für Eingänge vom Datentyp REAL wird die optimierte float-Variante der C-Runtime verwendet. Im Vergleich zu früheren Versionen können in den Grenzwertbereichen des Bausteins (geringfügig) andere Ergebnisse geliefert werden.

Version 3.8.0 (für Bibliothek Standard (safe)): Baustein in diese Bibliothek verschoben

Funktionalität

Die mathematische Funktion Potenzierung wird aufgerufen: Der Baustein liefert das Ergebnis von IN1IN2 (Der Wert, der an IN1 anliegt, wird mit Wert potenziert, der an IN2 anliegt).

Verhalten für die Berechnung 0**0

Der Baustein EXPT liefert das Ergebnis 1 für die Berechnung 0**0. In diesem Fall wird der ENO-Ausgang von EXPT nicht auf FALSE zurückgesetzt, sondern es wird TRUE zurückgegeben.

Beachten Sie zusätzlich:

  • Für ANY_INT-Werte (siehe unter "Beispiel für Verwendung im ST-Editor"):

    ANY_INT ist...

    USINTUINTUDINTULINTSINTINTDINT oder LINT (entspricht dem →allgemeinen Datentyp ANY_INT)

    • Falls der Ergebniswert die Obergrenze des Datentyps übersteigt, liefert der Baustein die Obergrenze des Datentyps. Der Ausgang ENO wird hier auf den Wert FALSE gesetzt.

    • Falls der Ergebniswert unter der Untergrenze des Datentyps liegt, liefert der Baustein die Untergrenze des Datentyps. Auch hier wird der Ausgang ENO auf den Wert FALSE gesetzt.

Eingänge, Ergebniswert

 

Bezeichner

→Datentyp

Beschreibung

Eingänge:

IN1

REALLREALUSINTUINTUDINTULINTSINTINTDINT oder LINT
(entspricht dem →allgemeinen Datentyp ANY_NUM)

1. Wert

IN2

REALLREALUSINTUINTUDINTULINTSINTINTDINT oder LINT
(entspricht dem →allgemeinen Datentyp ANY_NUM)

2. Wert

Ergebniswert:

REALLREALUSINTUINTUDINTULINTSINTINTDINT oder LINT
(entspricht dem →allgemeinen Datentyp ANY_NUM)

 

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 Ergebniswert. In den folgenden Fällen wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) zurückgesetzt:

  • Der Ergebniswert übersteigt die Obergrenze des Datentyps. (In diesem Fall liefert der Baustein außerdem die Obergrenze des Datentyps.)

  • Der Ergebniswert unterschreitet die Untergrenze des Datentyps. (In diesem Fall liefert der Baustein außerdem die Untergrenze des Datentyps.)

Beispiel für Verwendung im ST-Editor

Die berechneten Werte werden mit Hilfe des Assert-Bausteins ausgewertet.

FUNCTION_BLOCK ExampleExpt
  VAR
   resultReal : REAL; 
   resultSint : SINT; 
  END_VAR
 
  resultReal := EXPT(IN1 := 3.0, IN2 := 4);
  Assert(resultReal = 81.0);
 
  resultSint := EXPT(IN1 := 2, IN2 := 3);
  Assert(resultSint = 8);
  
END_FUNCTION_BLOCK

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.

Beispiele für ungültige Beschaltungen

Während der Berechnung mit Hilfe von EXPT können ungültige Beschaltung in folgenden Fällen entstehen:

  • aufgrund eines →Überlaufs oder →Unterlaufs

    Beispiele für ungültige Beschaltungen

    FUNCTION_BLOCK ExampleExptInvalid1
      VAR
       resultSint1, resultSint2 : SINT; 
       CheckENO1, CheckENO2 : BOOL;
      END_VAR
     
      resultSint1 := EXPT(IN1 := SINT#10, IN2 := SINT#3, ENO=>CheckENO1); (* The upper limit for SINT is '127'. '10**3' causes an overflow as '10**3' would evaluate to '1000'. *)
      Assert(resultSint1 = 127);
      Assert(CheckENO1 = FALSE);
     
      resultSint2 := EXPT(IN1 := SINT#-10, IN2 := SINT#3, ENO=>CheckENO2); (* The lower limit for SINT is '-128'. '-10**3' causes a negative overflow as '-10**3' would evaluate to '-1000'. *)
      Assert(resultSint2 = -128);
      Assert(CheckENO2 = FALSE);
     
    END_FUNCTION_BLOCK
  • falls IN1 < 0 und IN2 keine ganzzahlige Zahl (→Integer) ist

    Beispiel für ungültige Beschaltungen

    FUNCTION_BLOCK ExampleExptInvalid2
      VAR
       resultRealInvalid : REAL; 
      END_VAR
     
      resultRealInvalid:= EXPT(IN1 := REAL#-25.0, IN2 := REAL#0.5);
      (* For the built-in PLC, 'resultRealInvalid' evaluates to 'NaN' in the 'Values of Variables* view. *)
      (* But this is not the case for vxWorks x86. *)
      ASSERT(NOT IS_VALID(resultRealInvalid));
     
    END_FUNCTION_BLOCK

Siehe auch "EXPT-Baustein liefert unter bestimmtem Zielsystem und bei ungültiger Beschaltung einen falschen Wert".