Assert-Baustein

Kurz-Information

Name

Assert

→POE-Typ

→Funktion

Kategorie

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

Grafische Schnittstelle

images/download/thumbnails/414782976/Assert-version-1-modificationdate-1535107655367-api-v2.png

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

→Datentyp

Beschreibung

Eingänge:

C

BOOL

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.