FB_ExceptionHandlerTpi – Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.1.0.0

Verwendet von:

PacDrive-Pilot-Vorlagen-Architektur

Aufgabe

Funktionsbaustein zur Prüfung und Verwaltung der globalen Ausnahmeliste

Beschreibung

Der primäre Zweck der POU ist es, Reaktionen zur Verfügung zu stellen. Eine Reaktion beschreibt, wie eine Achse bei einer Ausnahme stoppen sollte, wobei es die folgenden fünf grundsätzlichen Reaktionen gibt:

  • TPL.ET_Reaction.AsyncStop

  • TPL.ET_Reaction.SyncStopEl

  • TPL.ET_Reaction.AsyncStopEh

  • TPL.ET_Reaction.StopEndOfCycle

  • TPL.ET_Reaction.MainsConstactorOff (*Nicht von der POU AXM.FB_AxisModuleTpi verwendet)

Alle vom System, von den meisten Funktionen und POUs sowie vom Anwenderprogramm ausgelösten Ausnahmen haben eine zugehörige Reaktion. Die POU AXM.FB_AxisModuleTpi überwacht zum Beispiel sich selbst und ihre zugehörigen Achsen auf Fehler. Anwendercode verwendet typischerweise die Funktion FC_SetExceptionTpi, um Ausnahmen zu definieren und kontrollieren. Die Ausnahme wird auch mit ihrer zugehörigen Reaktion in die globale Ausnahmeliste eingetragen, wenn die Ausnahme auftritt.

Die globale Ausnahmeliste wird mit dem Eingang iq_stExceptionList festgelegt und beinhaltet alle aktiven Fehler. Die globale Loggingliste wird über den Eingang iq_stLogDataList festgelegt und enthält die letzten 100 Fehler (Standard). Diese Einstellung kann geändert werden, indem man den Wert von TPL.Gc_udiMaxNumberOfExecptions ändert. Ein neuer Fehler ersetzt den ältesten Fehler, sobald die Loggingliste voll ist. Die Loggingliste kann auch andere Ereignisse enthalten.

Dieser Funktionsbaustein sucht nach Reaktionen, solange die Maschine aktiviert (iq_stMachineInterface.i_xEnable) ist. Der Funktionsbaustein zeigt an, dass er am Ausgang q_xActive aktiv und in Betrieb ist.

Der Eingang i_xLocalExceptionHandler legt fest, wo nach Reaktionen gesucht wird. Der Eingang i_ xLocalExceptionHandler muss immer FALSE sein, weil der TemplatePilot keine Submodule unterstützt, die einen eigenen ExceptionHandler benötigen.

Dieser Funktionsbaustein durchsucht als globaler ExceptionHandler (i_xLocalExceptionHandler := FALSE;) die globale Ausnahmeliste nach Änderungen. Er verteilt die in der globalen Ausnahmeliste vorhandenen Ausnahmen mit der zugehörigen Reaktion an alle zugehörigen Submodule (Achsen). Über den Eingang i_pstSubModulesItf werden der POU die Informationen bezüglich aller vorhandenen Achsen übergeben. Dieser Eingang benötigt die Adresse eines Arrays vom Typ ST_StandardModuleInterface. Über den Eingang i_udiNumberOfSubModules wird der POU die Anzahl der vorhandenen Submodule übergeben.

Die Verteilung der Reaktionen kann durch verschiedene Modi beeinflusst werden. Die Übersetzungsmodi werden über den Eingang i_psReactionTranslationJobs bearbeitet. Diese Struktur wird mit der Funktion FC_InitReactionTranslationMode auf Standardwerte gesetzt. Die Standardeinstellung dieser Struktur führt die Verteilung der Reaktion auf Basis einer Reaktionstabelle durch, die vom Eingang i_pstReactionTranslationTable festgelegt wird.

Die Reaktionstabelle wird mit der Funktion TPL.FC_InitReactionTranslationTable auf Standardwerte gesetzt. Als Standardeinstellung erhält jedes Submodul (Achse) die gleiche gefundene Reaktion. Wenn z. B. eine Ausnahme mit einer Reaktion 2 in der globalen Ausnahmeliste gefunden wird, erhält jede Achse eine Reaktion 2 (TPL.ET_Reaction.SyncStopEl).

Die Ausnahmenübersetzungsstruktur und/oder die Reaktionstabelle kann neu konfiguriert werden, um die Verteilung der Reaktionen anzupassen. Damit ist es z. B. möglich, einzelne Module (Achsen) aus einem Notauskreis herauszulösen und mehrere Notauskreise in einer Maschine zu unterstützen.

Der Funktionsbaustein verwaltet auch die globale Ausnahmeliste, wenn diese ausgewählt ist (i_xLocalExceptionHandler := FALSE). Er verwaltet folgende Funktionen:

  • Aktualisiert die Zeitdauer jeder Ausnahme in der globalen Ausnahmenliste.

  • Verteilt das DiagQuit-Signal (iq_stMachineInterface.i_xDiagQuit) an alle Submodule (Achsen).

  • Setzt die Systemfehler bei DiagQuit zurück (iq_stMachineInterface.i_xDiagQuit).

  • Entfernt inaktive Ausnahmen aus der globalen Ausnahmeliste.

Der Ausgang q_etDiag meldet <> GD.ET_Diag.Ok, wenn eine Reaktion gefunden wird oder die folgenden Eingänge nicht korrekt gesetzt sind:

  • Der Eingang i_pstSubModulesItf ist kleiner oder gleich 0.

  • Der Eingang i_pstReactionTranslationTable ist kleiner oder gleich 0.

  • Die Größe des Eingangs i_udiNumberOfSubModules passt nicht zum Eingang diSizeOfSubModuleInterface.

Diese Ausnahmen haben die Reaktion TPL.ET_Reaction.AsyncStop.

Der Ausgang q_udiSubModuleInException zeigt an, welches Submodul eine Ausnahme hat. Das Submodul mit der niedrigsten Indexnummer wird dargestellt, wenn mehrere Submodule eine Ausnahme haben.

Dies ist ein Funktionsbaustein, der eine Instanz davon benötigt, um deklariert zu werden.

Aufruf in FUP

Schnittstelle

Eingang

Datentyp

Beschreibung

i_xLocalExceptionHandler

BOOL

Legt fest, ob die POU ein lokaler oder globaler ExceptionHandler ist.

i_udiNumberOfSubModules

UDINT

Legt die Anzahl der Submodule im Standardmodulschnittstellen-Array fest.

i_pstSubModulesItf

POINTER TO ST_StandardModuleInterface

Definiert einen Zeiger zur Standardmodulschnittstelle.

i_petReactionTranslationMode

POINTER TO ET_ReactionTranslationMode

Legt einen Zeiger zu dem Reaktionsübersetzungsmodus fest.

i_pstReactionTranslationTable

POINTER TO ST_Reaction

Legt einen Zeiger zu der Reaktionstabelle fest.

i_pstReactionTranslationJobs

POINTER TO ST_ReactionTranslationJobs

Legt einen Zeiger zu den Reaktionsübersetzungsjobs fest.

Ausgang

Datentyp

Beschreibung

q_xActive

BOOL

Zeigt an, dass die POU aktiv ist und aufgerufen werden muss.

q_xReady

BOOL

Zeigt an, dass die POU bereit ist.

q_etDiag

GD.ET_Diag

Zeigt an, ob eine interne Ausnahme aufgetreten ist (q_etDiag <> Gd.Et_Diag.Ok).

q_etDiagExt

ET_DiagExt

Spezifiziert den Grund der Ausnahme näher.

q_sMsg

STRING[80]

Klartextmeldung des Ausnahmegrundes.

q_udiSubModuleInException

UDINT

Zeigt an, welches Submodul einen Fehler hat. Das Submodul mit der niedrigsten Indexnummer wird dargestellt, wenn mehrere Submodule Fehler haben.

Ein-/Ausgang

Datentyp

Beschreibung

iq_stMachineItf

ST_StandardModuleInterface

Definiert die Standardmodulschnittstelle für die Maschine.

iq_stExceptionList

ST_ExceptionList

Legt die globale Fehlerliste fest.

iq_stLogDataList

ST_LogDataList

Legt die globale Loggingliste fest.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Aufzählungswert

Beschreibung

OK

Disabled

22

Diagnosemeldung ist deaktiviert.

OK

Initializing

37

Initialisierung

OK

Working

47

Die POU arbeitet die Funktion ab.

ControllerConditionInvalid

ControllerInvalid

6

Die Steuerung ist ungültig.

InputParameterInvalid

PointerReactionTranslationJobsInvalid

144

Der Zeiger ReactionTranslationJobs ist ungültig.

InputParameterInvalid

PointerReactionTranslationModeInvalid

146

Der Zeiger ReactionTranslationMode ist ungültig.

InputParameterInvalid

PointerReactionTranslationTableInvalid

139

Der Zeiger ReactionTranslationTable ist ungültig.

InputParameterInvalid

PointerSubModulesItfInvalid

97

Der Zeiger SubmodulesItf ist ungültig.

InputParameterInvalid

ReactionTranslationEntryInvalid

141

Ein Eintrag von einer Reaktionsübertragung ist ungültig.

InputParameterInvalid

SizeOfSubModulesItfInvalid

96

Die Größe der Submodulschnittstelle ist ungültig.

UnexpectedProgramBehavior

InitExceptionListFailed

46

Die Initialisierung der Ausnahmeliste schlug fehl.

ControllerInvalid

Aufzählungsname:

ControllerInvalid

Aufzählungswert:

6

Beschreibung:

Die Steuerung ist ungültig.

Problem

Ursache

Lösung

-

Die Steuerung liefert nicht die erforderlichen Voraussetzungen.

Siehe Ausgang q_sMsg für nähere Einzelheiten.

Disabled

Aufzählungsname:

Disabled

Aufzählungswert:

22

Beschreibung:

Diagnosemeldung ist deaktiviert.

Der Funktionsbaustein ist deaktiviert, er führt keinerlei Aktionen aus. i_xEnable und q_xActive haben den Wert FALSE.

InitExceptionListFailed

Aufzählungsname:

InitExceptionListFailed

Aufzählungswert:

46

Beschreibung:

Die Initialisierung der Ausnahmeliste schlug fehl.

Problem

Ursache

Lösung

-

Die Initialisierung der Ausnahmeliste schlug fehl. Es ist ein Fehler in der internen Verarbeitung aufgetreten.

Versuchen Sie eine Initialisierung der Ausnahmeliste mit Hilfe der Funktion FC_InitExceptionList.

Bitte informieren Sie das Supportteam über diesen Fehler.

Initializing

Aufzählungsname:

Initializing

Aufzählungswert:

37

Beschreibung:

Initialisierung

Der Funktionsbaustein wird initialisiert und ist noch nicht bereit, an den Eingängen Anweisungen entgegenzunehmen. Der Funktionsbaustein meldet seine Betriebsbereitschaft mit dem Signal q_xReady = TRUE.

PointerReactionTranslationJobsInvalid

Aufzählungsname:

PointerReactionTranslationJobsInvalid

Aufzählungswert:

144

Beschreibung:

Der Zeiger ReactionTranslationJobs ist ungültig.

Problem

Ursache

Lösung

-

Am Eingang i_pstReactionTranslationJobs wurde ein ungültiger Wert angelegt.

Dem Eingang i_pstReactionTranslationJobs muss eine gültige Speicheradresse ungleich 0 übergeben werden.

PointerReactionTranslationModeInvalid

Aufzählungsname:

PointerReactionTranslationModeInvalid

Aufzählungswert:

146

Beschreibung:

Der Zeiger ReactionTranslationMode ist ungültig.

Problem

Ursache

Lösung

-

Am Eingang i_petReactionTranslationMode wurde ein ungültiger Wert angelegt.

Dem Eingang i_petReactionTranslationMode muss eine gültige Speicheradresse ungleich 0 übergeben werden.

PointerReactionTranslationTableInvalid

Aufzählungsname:

PointerReactionTranslationTableInvalid

Aufzählungswert:

139

Beschreibung:

Der Zeiger ReactionTranslationTable ist ungültig.

Problem

Ursache

Lösung

-

Am Eingang i_pstReactionTranslationTable wurde ein ungültiger Wert angelegt.

Dem Eingang i_pstReactionTranslationTable muss eine gültige Speicheradresse ungleich 0 übergeben werden.

PointerSubModulesItfInvalid

Aufzählungsname:

PointerSubModulesItfInvalid

Aufzählungswert:

97

Beschreibung:

Der Zeiger SubmodulesItf ist ungültig.

Problem

Ursache

Lösung

-

Der Eingang i_pstSubModulesItf ist auf 0 eingestellt.

Der Eingang i_pstSubModulesItf muss mit der Adresse vom Array der Submodulschnittstellen-Strukturen angeschlossen sein.

ReactionTranslationEntryInvalid

Aufzählungsname:

ReactionTranslationEntryInvalid

Aufzählungswert:

141

Beschreibung:

Ein Eintrag von einer Reaktionsübertragung ist ungültig.

Problem

Ursache

Lösung

-

Ein Reaktionsübersetzungsauftrag des Übersetzungsmodus ET_ReactionTranslationMode.Jobs ist ungültig.

Für einen Übersetzungsauftrag muss gelten:

  • udiSourceStart >= 1

  • udiNumReactions >= 1

  • udiSourceStart + udiNumReactions - 1 <= Gc_udiMaxNumberOfReactions

  • udiTargetStart + udiNumReactions - 1 <= Gc_udiMaxNumberOfReactions

SizeOfSubModulesItfInvalid

Aufzählungsname:

SizeOfSubModulesItfInvalid

Aufzählungswert:

96

Beschreibung:

Die Größe der Submodulschnittstelle ist ungültig.

Problem

Ursache

Lösung

-

Der Wert des Eingangs i_udiSizeOfSubModulesItf ist ungültig.

Die Angabe am Eingang i_diNumberOfSubModules korrespondiert nicht mit der Angabe am Eingang i_udiSizeOfSubModulesItf.

Working

Aufzählungsname:

Working

Aufzählungswert:

47

Beschreibung:

Die POU arbeitet die Funktion ab.

Der Funktionsbaustein verteilt Reaktionen an Submodule.