TC_EventLogger: Fehler bei FB_TcAlarm.CreateEx

mgl

Level-2
Beiträge
54
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich bekomme beim Ausführen der FB_TcAlarm.CreateEx den Fehler 16#9811010D. Wenn ich im InfoSys suche erhalte ich dafür die Beschreibung:
Syntax-Fehler in Datei oder Befehl.

Folgenden Aufbau habe ich:

  • FB_ActuatorBasic
    • Property: stConfigTcEventEntryParameterInvalid : TcEventEntry
    • VAR: stPrivConfigTcEventEntryParameterInvalid : TcEventEntry // Wert wird über den Property zugewiesen
    • VAR: fbTcAlarmParameterInvalid : FB_TcAlarm

  • FB_ActuatorCylinder
    • Methode Init: SUPER^.Aufruf fbTcAlarmParameterInvalid

  • FB_Debug:
    • Init:
      • Aufruf der Property fbActuatorCylinder.stConfigTcEventEntryParameterInvalid (von der Basis-Klasse)
      • Aurfuf der Init Methode: fbActuatorCylinder.Init


C-ähnlich:
// ========================= FB_Debug =======================

IF NOT bInit
THEN
 
    fbCylinder.stConfigTcEventEntryParamterInvalid := TC_EVENTS.Machine.ParameterInvalid;
    // ... weitere Fehlermeldungen
 
    bInit := fbCylinder.Init() AND fbInitiator.Init() AND fbFanucRob.Init() AND bDebug;  

ELSE
    // ... soweit komme ich nicht
END_IF

// ========================= FB_ActuatorCylinder =======================

hr := SUPER^.fbTcAlarmParameterInvalid.CreateEx(stEventEntry := SUPER^.stPrivTcEventEntryParameterInvalid, bWithConfirmation := TRUE, ipSourceInfo := ipSourceInfo);
bInit := bInit AND SUCCEEDED(hr);


Wobei ich eigentlich nicht denke, dass es an dem Code liegt, da ich noch mehr Fehlermeldungen auf die Art implementiert habe und die mit CreateEx ohne Probleme initialisiert werden.

Auszug aus der TMC
XML:
<Name GUID="{D29E99DD-CF22-4F71-A55F-59A171ECADB2}">Machine</Name>
<DisplayName TxtId=""><![CDATA[Machine]]></DisplayName>
<EventId>
   <Name Id="1">ParameterInvalid</Name>
   <DisplayName TxtId=""><![CDATA[Aktor Infeed stack index (-86M1 / -86M2) - Parameter or setting invalid]]></DisplayName>
   <Severity>Error</Severity>
</EventId>

Hat jemand eine Idee woher der Fehler kommt?


Vielen Dank schon mal im voraus
 
Zuletzt bearbeitet:
Was ist denn mit der Variablen bDebug? :rolleyes: Steht die irgendwie / irgendwann auf TRUE? Oder fehlt das das NOT für testweisen Gebrauch? :unsure:

Das habe ich gerade nicht gefunden.:geek:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist denn mit der Variablen bDebug? :rolleyes:
Sie muss nicht auf TRUE stehen, da vorher schon fbCylinder.Init() und damit SUPER^.fbTcAlarmParameterInvalid.CreateEx mit dem Fehler ausgeführt wird.

Ich habe sie eingefügt um eine zusätzliche manuelle Bremse in meiner Software zu haben.
 
Dann solltest Du NOT bDebug schreiben. Deine Inits werden zwar ausgeführt, aber bInit kann nicht TRUE werden. Darum kommst Du nicht in den ELSE-Pfad.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Rufst du die Methode

hr := SUPER^.fbTcAlarmParameterInvalid.CreateEx(stEventEntry := SUPER^.stPrivTcEventEntryParameterInvalid, bWithConfirmation := TRUE, ipSourceInfo := ipSourceInfo);

zyklisch auf, diese darf zum erzeugen der Instanz nur 1 mal ausgeführt werden

Was ist der Parameter von ipSourceInfo ??
Standard einfach 0 angeben

Hier ist der Eventlogger recht gut erklärt

 
ipSourceInfo ist zu dem Zeitpunkt noch nicht zugewiesen, also 0

Normalerweise sollte das auch nicht zyklisch laufen sondern nur einmal initialisieren. Das wird halt erst bei einem Fehler zyklisch. Da ich dann aber debugge bleibe ich da schon hängen.

Ich bin gerade dabei mein Fehler-Konzept etwas zu überarbeiten, um auch das Anlegen neuer Fehlermeldungen zu vereinfachen. Das macht es dann auch einfacher, nach Fehlgeschlagene Create-Methoden den Absendeversuch (Raise) zu vermeiden.
 
Hallo MGL,

da der Tc3 Eventlogger recht komplex ist habe ich eine Bibliothek erstellt, welche die Nutzung des Meldesystems extrem vereinfacht.

Im Grunde brauchst du die Beckhoff Eventlogger-Doku damit gar nicht mehr zu bemühen. Es brauchen auch keine Bausteine/Methoden daraus mehr aufgerufen werden. Die Meldungsprojektierung ist damit so einfach, dass i. d. R. eine 10 minütige Einführung reicht um das Meldesystem vollständig verwenden zu können.

Anbei als PDF die Dokumentation.

Die Bibliothek nutzt natürlich in Hintergrund auch die Beckhoff Eventlogger-Library, stellt aber alle wesentlichen Funktionen in wesentlich einfacher implementierbarer Weise zur Verfügung. Dies geht so weit, dass um eine Meldung zu erzeugen, hierfür kein FB- oder Methoden-Aufruf erforderlich ist. Meldungen können so bspw. auch in grafischen Sprachen einfach durch Setzen einer boolschen Variable erzeugt werden können. Auch das einbetten von Argumenten erfordert keine Methodenaufrufe.

Egal wieviel Meldungen, aufgerufen wird nur 1 Base-FB. Konzeptionell ist es dennoch modular implementiert, d.h. wenn in POE's Meldungen / Alarme mittels der Library projektiert sind, werden diese vom Base-FB automatisch erkannt und verwaltet.

Bei Interesse einfach Melden.

Gruss, Peter
 

Anhänge

Zurück
Oben