Die POU kann über den Eingang i_xEnable aktiviert werden. Am Ausgang q_xActive ist zu erkennen, ob die POU aktiv ist. Bei Aktivierung der POU erfolgt eine Überprüfung der Eingangsparameter. Wenn i_pstSubModulesItf, i_petReactionTranslationMode, i_pstReactionTranslationTable oder i_pstReactionTranslationJobs kleiner oder gleich 0 ist oder die Spezifizierung in i_diNumberOfSubModules nicht der Variablen i_udiSizeOfSubModulesItf entspricht, wird eine Ausnahme in die globale Ausnahmeliste eingetragen und die Diagnoseausgänge werden entsprechend gesetzt. In die Ausnahmedaten werden die Informationen aus den Eingängen i_udiModuleId und i_udiModuleName mit eingetragen.
Als lokaler ExceptionHandler verteilt die POU ebenfalls die Reaktionen, die über den Eingang i_stReaction kommen, an die Submodule. Dabei wird für jede Reaktion und jedes Submodul entschieden, welche Reaktionen an jedem einzelnen Submodul erfolgen sollen. Über i_pstReactionTranslationTable oder i_pstReactionTranslationJobs kann der Anwender auf die Reaktionsverteilung Einfluss nehmen. Ist der Eingang i_xLocalExceptionHandler FALSE, arbeitet die POU als globaler ExceptionHandler. Alle Reaktionen, die aufgrund der Ausnahmen anstehen, werden gesammelt und mit Einfluss der Reaktionsübersetzungstabelle oder Reaktionsübersetzungsjobs an die Submodule verteilt.
Die verfügbaren Modi für die Übersetzung der Reaktionen werden beim Aufzählungstyp ET_ReactionTranslationMode erläutert.
Unter Nutzung der Übersetzungsmodi werden Beispiele für die Anwendung aufgeführt.
Der Ausgang q_diSubModuleInException zeigt an, welches Submodul eine Ausnahme aufweist. Melden mehrere Submodule eine Ausnahme, wird das erste Modul mit einer Ausnahme angezeigt. Diese Funktion ist unabhängig davon, ob der ExceptionHandler als lokale oder globale POU arbeitet.
Werden Diagnosemeldungen quittiert (AutoQuit oder i_xDiagQuit), werden ihre Reaktionen an den Submodulen gelöscht, wenn keine andere Ausnahme die gleichen Reaktionen hervorruft.
Im Falle eines globalen ExceptionHandler wird beim Quittieren der Systemdiagnosemeldungen die Systemfunktion FC_DiagQuit aufgerufen und die gesamte globale Ausnahmeliste gelöscht. Dabei wird ebenfalls ein Eintrag in die globale Logdatenliste erzeugt, um das globale Quittieren in der Logdatenliste zu vermerken.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_xEnable |
BOOL |
Eine steigende Flanke FALSE -> TRUE aktiviert die POU, eine fallende Flanke TRUE -> FALSE deaktiviert sie. Wenn die POU abgeschaltet ist, führt sie keine Aktionen aus. |
i_xDiagQuit |
BOOL |
Eine steigende Flanke FALSE -> TRUE quittiert anstehende System-/Diagnosemeldungen. |
i_stReaction |
||
i_udiModuleId |
UDINT |
ID des Moduls, in dem der ExceptionHandler aufgerufen wird. |
i_sModuleName |
STRING[80] |
Name des Moduls, in dem der ExceptionHandler aufgerufen wird. |
i_pstSubModulesItf |
POINTER TO ST_StandardModuleInterface |
Zeiger auf das Array von ST_StandardModuleInterface der Submodule des Knotens. |
i_udiSizeOfSubModulesItf |
UDINT |
Größe in Bytes der Struktur ST_StandardModuleInterface. |
i_udiNumberOfSubModules |
UDINT |
Anzahl der Submodule des Knotens. |
i_petReactionTranslationMode |
POINTER TO ET_ReactionTranslationMode |
Zeiger auf das Array von ET_ReactionTranslationMode, das definiert, welcher Reaktionsübersetzungsmodus für welches Submodul des Knotens angewendet werden soll. |
i_pstReactionTranslationTable |
POINTER TO ST_Reaction |
Zeiger auf das zweidimensionale Array von ST_Reaction, das die Reaktionsübersetzung des Modus ET_ReactionTranslationMode.Table konfiguriert. |
i_pstReactionTranslationJobs |
POINTER TO ST_ReactionTranslationJobs |
Zeiger auf das Array von ST_ReactionTranslationJobs, das die Reaktionsübersetzung des Modus ET_ReactionTranslationMode.Jobs konfiguriert. |
i_xLocalExceptionHandler |
BOOL |
TRUE: Der Funktionsbaustein arbeitet als lokaler ExceptionHandler. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xActive |
BOOL |
TRUE: Die POU ist eingeschaltet und muss weiter ausgeführt werden. FALSE: Die POU ist abgeschaltet. |
q_xReady |
BOOL |
TRUE: Die POU ist betriebsbereit und nimmt Benutzerbefehle entgegen. FALSE: Die POU ist nicht bereit, Anwenderbefehle entgegenzunehmen. |
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich GD.ET_Diag.Ok entspricht einer Fehlermeldung. |
|
q_etDiagExt |
POU-spezifischer Ausgang des Diagnosegeräts. q_etDiag = GD.ET_Diag.Ok -> Statusmeldung q_etDiag <> GD.ET_Diag.Ok -> Diagnosemeldung |
|
q_sMsg |
STRING[80] |
Durch ein Ereignis getriggerte Meldung, die den Diagnosezustand konkretisiert. |
q_udiSubModuleInException |
UDINT |
TRUE: Eines der Submodule des Knotens meldet eine Ausnahme. |
q_xException |
BOOL |
TRUE: Eine Ausnahme von diesem Modul ist aktiv in der Ausnahmeliste (unabhängig welche Reaktion). Ausnahmen, die von einem Submodul ausgegeben werden, haben keinen Einfluss auf diesen Ausgang. |
Ein-/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_stExceptionList |
Globale Ausnahmeliste |
|
iq_stLogDataList |
Globale Logdatenliste |
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. |
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. |
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.
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 interner Ausführungsfehler aufgetreten. |
Versuchen Sie eine Initialisierung der Ausnahmeliste mit Hilfe der Funktion FC_InitExceptionList. Bitte informieren Sie das Supportteam über diesen Fehler. |
Aufzählungsname: |
Initializing |
Aufzählungswert: |
37 |
Beschreibung: |
Initialisierung |
Der Funktionsbaustein wurde initialisiert. Deshalb kann er noch keine Befehle an seinem Eingang empfangen.
Der Funktionsbaustein meldet seine Betriebsbereitschaft mit dem Signal q_xReady = TRUE.
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. |
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. |
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. |
Aufzählungsname: |
PointerSubModulesItfInvalid |
Aufzählungswert: |
97 |
Beschreibung: |
Der Zeiger SubmodulesItf ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_pstSubModulesItf wurde ein ungültiger Wert angelegt. |
Dem Eingang i_pstSubModulesItf muss eine gültige Speicheradresse ungleich 0 übergeben werden. |
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:
|
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. |