Argumente
Die Texte der Ereignisse können durch die Programmierung mit „Argumenten“ individualisiert werden.
Hierfür wird während der Beschreibung der Ereignisse im TMC-Editor eine Markierung mit der Notation {n}
verwendet, wobei n
eine aufsteigende Zahl von 0 ausgehend ist.
Dabei können bis zu 128 Argumente mit einer maximalen Größe von 1024 Bytes an einem Event verwendet werden.
Im TMC-Editor wird also beispielsweise ein solcher Display-Text für ein Ereignis verwendet:
Im Quellcode kann dieser dann verwendet werden, wie im Folgenden erklärt.
SPS
In der SPS kann folgenderweise mit den Argumenten umgegangen werden:
fbMsg : FB_TcMessage;
IF NOT fbMsg.EqualsToEventEntryEx(stOther:=TC_EVENTS.CalculationEventClass.DivisionByZero) THEN
hr := fbMsg.CreateEx(TC_EVENTS.CalculationEventClass.DivisionByZero, 0 (*fbSource*) );
END_IF
fbMsg.ipArguments.Clear().AddLReal(fDividend); //set Argument
Die Argumente müssen dabei nach Create()/CreateEx(), aber vor Send() definiert werden.
Mehrere Argumente können verkettet angegeben werden.
fbMsg.ipArguments.Clear().AddLReal(fDividend).AddLReal(fDivisor);
Hierbei wird dann fDividend
an die Stelle von {0}
gesetzt, sowie fDivisor
an die Stelle von {1}
.
C++
In der C++ kann folgenderweise mit den Argumenten umgegangen werden:
TcArgs tcArgs(m_spMessage);
tcArgs->Clear();
tcArgs.AddArgument(m_dividend);
Die Argumente müssen dabei nach CreateMessage()/CreateAlarm(), aber vor Send() definiert werden.
Hierfür muss TcEventLoggerTemplate.h
im <ProjectName>Interfaces.h
inkludiert warden.
#include"TcRouterInterfaces.h"
#include"TcEventLoggerTemplates.h"
///<AutoGeneratedContent id="Interfaces">
///</AutoGeneratedContent>
Ausgabe
Die Ausgabe ist entsprechend:
Diese Notation kann auch als Text innerhalb der Übersetzungen verwendet werden.
Werden mehr Argumente abgesendet als durch entsprechende Platzhalter vorgesehen sind, werden diese in Klammern an den Ereignistext angehangen. Dieses Verhalten kann unterdrückt werden indem für die Ereignisklasse die Option „HideNeedlessArguments“ gesetzt wird, wie hier beschrieben.
Formatierung
Die Ausgabe der Argumente kann auch formatiert werden. Hierfür wird im TMC-Editor entsprechend die Syntax {n,<Format>}
verwendet:
Folgende Formatierungen stehen bereit:
Typ | Format | Beschreibung |
---|---|---|
Zahlenwert | d / D | Dezimaldarstellung |
| e / E | Exponentialdarstellung |
| x / X | Hexadezimaldarstellung |
| f / F | Fixed-Point |
Beachten Sie, dass z. B. ein REAL nicht als „d“ oder „x“ usw. dargestellt werden kann.
Zusätzliche Hinweise bzgl. Argumente in Meldungstexten
- Zusätzlich stehen die Syntax
{eventID}
(für die Event ID) sowie{eventclass}
(für die Guid der Ereignisklasse) bereit, um die entsprechenden Informationen als Teil des Textes auszugeben. - Werden Strings als Argumente
AddString()
verwendet, werden diese als Argument in den Meldungstext eingefügt. Dieser String kann vom TwinCAT 3 Eventlogger nicht übersetzt werden. Soll ein Argument übersetzt werden, kann dafür.AddEventReferenceEx()
verwendet werden. Hierbei wird der Meldungstext in der entsprechenden Übersetzung eingefügt. Das Beispiel Listener zeigt die Verwendung.