- Beiträge
- 6.125
- Reaktionspunkte
- 1.356
-> Hier kostenlos registrieren
Hallo,
ich bin gerade etwas am verzweifeln. Das Infosys von Beckhoff geht im großen und ganzen ja, aber beim Event Logger bin ich entweder zu blöde, oder die Doku hat einen äußerst zweifelhaften Nutzwert.
Ich möchte gerne Warn- und Fehlermeldungen erzeugen und auslösen. Ich habe schon eine Event Klasse erzeugt und in dieser Meldungen hinzugefügt, soweit so einfach.
Jetzt scheitere ich aber an der Create Methode, erst habe ich es nicht hinbekommen die GUID der Klasse zu übergeben. Mittlerweile habe ich die Funktion STRING_TO_GUID entdeckt und das Problem sollte vom Tisch sein. Wo es jetzt noch hakt ist ipSourceInfo. Ich möchte derzeit keine spezielle Info angeben, dass kann aber noch kommen. Ich weiß nicht, was ich in dem Fall da eingeben muss. Eine 0 führt zu einem internen Fehler (Nachtrag: Der interne Fehler ist nach alles bereinigen weg) und ein '' zu einem Konvertierungsfehler.
Das nächste Problem habe ich bei den Argumenten. Es gibt Meldungen mit Argumenten die ich ja mit Leben füllen muss. Ich bekomme zwar da keine Fehlermeldung, habe aber dennoch das Gefühl da auch etwas falsch zu machen.
Ich hänge hier mal meinen Code (TC3 4024.47) an.
Den FB_TcArguments nutze ich im Moment nicht.
ich bin gerade etwas am verzweifeln. Das Infosys von Beckhoff geht im großen und ganzen ja, aber beim Event Logger bin ich entweder zu blöde, oder die Doku hat einen äußerst zweifelhaften Nutzwert.
Ich möchte gerne Warn- und Fehlermeldungen erzeugen und auslösen. Ich habe schon eine Event Klasse erzeugt und in dieser Meldungen hinzugefügt, soweit so einfach.
Jetzt scheitere ich aber an der Create Methode, erst habe ich es nicht hinbekommen die GUID der Klasse zu übergeben. Mittlerweile habe ich die Funktion STRING_TO_GUID entdeckt und das Problem sollte vom Tisch sein. Wo es jetzt noch hakt ist ipSourceInfo. Ich möchte derzeit keine spezielle Info angeben, dass kann aber noch kommen. Ich weiß nicht, was ich in dem Fall da eingeben muss. Eine 0 führt zu einem internen Fehler (Nachtrag: Der interne Fehler ist nach alles bereinigen weg) und ein '' zu einem Konvertierungsfehler.
Das nächste Problem habe ich bei den Argumenten. Es gibt Meldungen mit Argumenten die ich ja mit Leben füllen muss. Ich bekomme zwar da keine Fehlermeldung, habe aber dennoch das Gefühl da auch etwas falsch zu machen.
Ich hänge hier mal meinen Code (TC3 4024.47) an.
Code:
// Message handling (Event Logger)
fbSource : FB_TcSourceInfo;
afbWarnMessages : ARRAY[2001..2001] OF FB_TcAlarm;
afbErrorMessages : ARRAY[3001..3008] OF FB_TcAlarm;
fbMessageArguments : FB_TcArguments;
bMessageInitDone : BOOL := FALSE;
nMessageCounter : INT;
// ToDo: Delete after testing
bRaiseErr3001 : BOOL;
// Init messages
IF bMessageInitDone = FALSE THEN
FOR nMessageCounter := 2001 TO 2001 + SIZEOF(afbWarnMessages) / SIZEOF(afbWarnMessages) - 1 DO
afbWarnMessages[nMessageCounter].Create( eventClass := STRING_TO_GUID('b9bff13f-9f53-4951-922b-a1f7a84f9b82'),
nEventId := INT_TO_UDINT(nMessageCounter),
eSeverity := TcEventSeverity.Warning,
bWithConfirmation := FALSE,
ipSourceInfo := '');
END_FOR
FOR nMessageCounter := 3001 TO 3001 + SIZEOF(afbErrorMessages) / SIZEOF(afbErrorMessages) - 1 DO
afbErrorMessages[nMessageCounter].Create( eventClass := STRING_TO_GUID('b9bff13f-9f53-4951-922b-a1f7a84f9b82'),
nEventId := INT_TO_UDINT(nMessageCounter),
eSeverity := TcEventSeverity.Error,
bWithConfirmation := FALSE,
ipSourceInfo := '');
END_FOR
bMessageInitDone := TRUE;
END_IF
IF bRaiseErr3001 THEN
afbErrorMessages[3001].ipArguments.AddUInt(value := 500);
afbErrorMessages[3001].Raise(nTimeStamp := 0);
bRaiseErr3001 := FALSE;
END_IF
Zuletzt bearbeitet: