Assert-Baustein
Kurz-Information
Name | Assert |
---|---|
→POE-Typ | →Funktion |
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 von →logi.RTS
Die Konsole von logi.RTS ist eine Eingabeaufforderung, die beim Starten von logi.RTS geöffnet wird und die Meldungen von logi.RTS 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; |
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.