Typ |
Funktionsbaustein |
Verfügbar ab |
V1.1.0.0 |
Verwendet von: |
PacDrive-Pilot-Vorlagen-Architektur |
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
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 |
Zeigt an, ob eine interne Ausnahme aufgetreten ist (q_etDiag <> Gd.Et_Diag.Ok). |
|
q_etDiagExt |
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. |
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 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. |
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.
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 |
---|---|---|
- |
Der Eingang i_pstSubModulesItf ist auf 0 eingestellt. |
Der Eingang i_pstSubModulesItf muss mit der Adresse vom Array der Submodulschnittstellen-Strukturen angeschlossen sein. |
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. |