Assert-Baustein

Kurz-Information

NameAssert
→POE-Typ→Funktion
Kategorie

IEC-Baustein, UtilEnh-Funktionen, Baustein mit interner Fehlerdiagnose

Grafische Schnittstelle

Verfügbar ab
  • Version 1.50.0 (für logi.CAD 3 ) – Anfangsvariante
  • Version 2.0.8 (für Bibliothek Standard) – Erweiterung: ausgegebene Zeile in der Meldung

Funktionalität

Mit Hilfe des Assert-Bausteins können Sie eine Aussage über den Zustand eines Elements der Anwendung (z.B. einer Variable) treffen. Somit können Sie logische Fehler in Ihrer Anwendung erkennen und/oder die Einhaltung von Spezifikationen überpüfen.

Falls der Baustein-Eingang C mit dem Wert FALSE (bzw. einer Entsprechung) ausgewertet wird, gibt dieser Baustein eine Meldung aus. Zusätzlich wird der Ausgang ENO der aufrufenden →POE und des Assert-Bausteins selbst auf den Wert FALSE (bzw. eine Entsprechung) gesetzt.

Die Meldung des Assert-Bausteins wird an den folgenden Stellen ausgegeben:

  • in der Konsole des →Laufzeitsystems 
    Die Konsole des Laufzeitsystems ist eine Eingabeaufforderung, die beim Starten des Laufzeitsystems geöffnet wird und die Meldungen des Laufzeitsystems anzeigt. 

  • in der Sicht SPS-Logging von  logi.CAD 3  – Der Vorteil dieser Sicht liegt in der tabellarischen Ansicht.
Format der Meldung: Assertion failed in [Aufrufende POE,Zeile]: Bedingung

Die Informationen für [Aufrufende POE] und Bedingung werden im Format des generierten C-Codes ausgegeben. Falls die Länge der Meldung 1024 Zeichen überschreitet, wird nur Assertion failed ausgegeben.

Eingänge


Bezeichner→DatentypBeschreibung
Eingänge:CBOOL

Bedingung; TRUE wird für die Auswertung erwartet.
Falls die Bedingung mit dem Wert FALSE ausgewertet wird, wird die Ausgabe verursacht.

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.

Interne Fehlerdiagnose für Baustein

Abhängig vom Baustein-Eingang C wird der Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung) gesetzt.

Beispiel für Verwendung im ST-Editor

FUNCTION_BLOCK TestAssertOutput
  VAR
    testInt  : INT := 5;
    testStr  : STRING[5] := 'hello';
    testReal : REAL := 3.14;
    testTime : TIME := T#1s;
    testArray : ARRAY[1..5] OF INT;
    testStruct : TestStruct;
  END_VAR
  Assert(FALSE);
  Assert(testInt > 10);
  Assert(testStr = 'world');
  Assert(testReal = 1.41);
  Assert(testTime = T#2s);
  Assert(testInt + 1 = 7);
  Assert(ADD(testInt, 1) = 7);
  Assert(testArray[testInt] = 3);
  Assert(testStruct.element1 = 2);
END_FUNCTION_BLOCK

Für dieses Beispiel erscheinen die folgenden Meldungen:

TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,21]: LC_EL_false
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,27]: (LC_TD_BOOL)(LC_this->LC_VD_TESTINT > (LC_TD_INT)10)
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,33]: (LC_STRING_EQ(LC_this->LC_VD_TESTSTR,"world",LC_STR_CMP_MODE_STRING))
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,39]: (LC_TD_BOOL)(LC_this->LC_VD_TESTREAL == (LC_TD_REAL)1.41)
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,45]: (LC_TD_BOOL)(LC_this->LC_VD_TESTTIME == LC_TIME_VALUE(RT_CC_CONST_LL(2),RT_CC_CONST_LL(0)))
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,51]: (LC_TD_BOOL)((LC_TD_INT)(LC_this->LC_VD_TESTINT + (LC_TD_INT)1) == (LC_TD_INT)7)
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,61]: (LC_TD_BOOL)(lFunction_ASSERT__C__leftOp_ADD.LC_VD_ADD == (LC_TD_INT)7)
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,67]: (LC_TD_BOOL)(LC_SUBSCRIPT_ARRAY(LC_this->LC_VD_TESTARRAY,LC_this->LC_VD_TESTINT,(LC_TD_DINT)1,(LC_TD_DINT)5) == (LC_TD_INT)3)
TID00005054: Assertion failed in [lcfu___TESTASSERTOUTPUT,73]: (LC_TD_BOOL)(LC_this->LC_VD_TESTSTRUCT.LC_VD_ELEMENT1 == (LC_TD_INT)2)

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.