Assert-Baustein
Kurz-Information
Name |
Assert |
→POE-Typ |
|
Kategorie |
IEC-Baustein, UtilEnh-Funktionen, Baustein mit interner Fehlerdiagnose |
Grafische Schnittstelle |
|
Verfügbar ab |
|
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 |
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.
Informieren Sie sich unter:
"Bausteine für sichere Logik", ob dieser Baustein für das Entwickeln von sicherheitsrelevanten Anwendungen unterstützt wird.
"Kennzeichnung von sicherer Logik im FBS-Editor", welche Auswirkung die Verwendung des Bausteins als Baustein für sichere Logik hat.
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.