FB_ExceptionHandler2 – Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.4.0.0

Übernommen aus

-

Implementiert

-

Aufgabe

Reaktionen an Submodule verteilen

Beschreibung

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.

Schnittstelle

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

ST_Reaction

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

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich GD.ET_Diag.Ok entspricht einer Fehlermeldung.

q_etDiagExt

ET_DiagExt

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

ST_ExceptionList

Globale Ausnahmeliste

iq_stLogDataList

ST_LogDataList

Globale Logdatenliste

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 interner Ausführungsfehler 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 wurde initialisiert. Deshalb kann er noch keine Befehle an seinem Eingang empfangen.

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

-

Am Eingang i_pstSubModulesItf wurde ein ungültiger Wert angelegt.

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

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.

Methoden

Bezeichnung

Beschreibung

RegisterLoggerPoint

Registriert den internen Loggerpunkt in den Application Logger.

SetException

Trägt eine Ausnahme in eine globale Ausnahmeliste ein.