Unterstützung des Tc3_Eventlogger

Der TwinCAT 3 Database Server unterstützt den TwinCAT 3 Eventlogger (TwinCAT 3 Version 4022.20). Dieser ermöglicht es über ein Interface, Details zu Ereignissen der Bausteine auszulesen. Weitere Informationen zum Eventlogger finden Sie in den TwinCAT 3 Basis Bibliotheken.

Alle Funktionsbausteine des TwinCAT 3 Database Servers unterstützen das Interface des Tc3 Eventloggers. Dazu wird als Rückgabewert der Bausteine das Interface Tc3_Eventlogger.I_TcMessage verwendet. Zusätzlich zum Rückgabewert, steht die Eigenschaft eTraceLevel zur Verfügung, um die Ereignisgewichtung zu bestimmen.

Unterstützung des Tc3_Eventlogger 1: Eigenschaften

Name

Typ

Zugriff

Beschreibung

eTraceLevel

TcEventSeverity

Get, Set

Gibt die Gewichtung der Ereignisse an. Nur Ereignisse über diesem Wert werden an das TwinCAT System gesendet.

Beispiel:

Bei einem exemplarischen Funktionsbaustein FB_PLCDBWrite geben wir folgende Gewichtung an:

fbPLCDBWriteEvt.eTraceLevel := TcEventSeverity.Warning;

Hier werden nun alle Ereignisse gesendet, welche mindestens eine Warnung darstellen. Ereignisse der Gewichtung „Information” werden in diesem Fall ignoriert.

Die Tc3_Database Funktionsbausteine selbst haben als Ausgang ipTcResult vom Datentyp Tc3_Eventlogger.I_TcMessage. Alle angebotenen Funktionen dieses Interfaces können genutzt werden.

In diesem Beispiel wird zunächst der Baustein aufgerufen.

1:  // Call Functionblock
    IF fbPLCDBWriteEvt.WriteStruct(
        hDBID:= 1, 
        sTableName:= 'myTable_Struct', 
        pRecord:= ADR(myRecord), 
        cbRecord:= SIZEOF(myRecord), 
        pColumnNames:= ADR(ColumnNames) , 
        cbColumnNames:= SIZEOF(ColumnNames))
    THEN
        IF fbPLCDBWriteEvt.bError THEN
            myTcMessage := fbPLCDBWriteEvt.ipTcResult
            nState := 255; 
        ELSE
            nState := 0;
        END_IF
    END_IF

Im Fehlerfall möchten wir nun den Eventtext in der Laufzeitumgebung anfordern. Hierzu kann die Methode RequestEventText verwendet werden. Mit der nLangId =1031 wird der Fehlercode in deutscher Sprache ausgelesen. Dies ist eine der vielen Funktionen der Schnittstelle Schnittstelle Tc3_Eventlogger.I_TcMessage.

255://Request EventText
    IF myTcMessage.RequestEventText(1031,
        ADR(MyEventString),
        SIZEOF(MyEventString))THEN
        nState := 0;
    END_IF