Der Funktionsbaustein FB_ModeManager kann für die Verwaltung von Requests zum Betriebsartwechsel in einer Maschinenanwendung auf der Grundlage des PackML-Zustandsmodells eingesetzt werden. In Übereinstimmung mit der Betriebsartendefinition für eine Machineneinheit überprüft der Funktionsbaustein, ob der angeforderte Betriebsartwechsel möglich ist oder nicht.
Die Betriebsartendefinition umfasst eine Definition der möglichen Zustände für jeden verfügbaren Steuerungsmodus sowie die Angabe, von welchen Zuständen aus ein Betriebsartwechsel zulässig ist. Zur Ausführung der Betriebsartendefinition können die Hilfsfunktionen FC_InitStateModelStateChange und FC_InitStateModelExistingStates herangezogen werden.
Darüber hinaus muss die Betriebsartendefinition in einem Array des Typs ST_UnitModeDefinition bereitgestellt werden. Die Indizes des Arrays entsprechen dem numerischen Wert der verfügbaren Steuerungsmodi (siehe ET_Modes).
Die Betriebsartendefinition muss beim Start (Initialisierungsphase) einer Anwendung vor dem ersten Aufruf der Instanz des Funktionsbausteins FB_ModeManager mit i_xEnable = TRUE vorgenommen werden.
Bei steigender Flanke am Eingang i_xEnable wird die Initialisierungsphase des Funktionsbausteins FB_ModeManager ausgeführt. Während dieser Phase werden die Betriebsartendefinitionen für jeden verfügbaren Steuerungsmodus überprüft und es wird bestimmt, ob ein PackML-konformes Zustandsmodell erstellt werden kann. Nach erfolgreichem Abschluss der Initialisierung ist der Funktionsbaustein einsatzbereit, was vom Ausgang q_xReady signalisiert wird.
Während der Initialisierung werden folgende Bedingungen geprüft:
Die maximale Anzahl an Zuständen beträgt 17.
Die Zustände
(Ausführung) und (Gestoppt) sind obligatorische Zustände für jeden Steuerungsmodus.Für den Zustand
(Abschluss) ist ebenfalls der Zustand (Abgeschlossen) erforderlich.Für die Zustände
(Halten) und (Aufhebung des Haltemodus) ist ebenfalls der Zustand (Gehalten) erforderlich.Für die Zustände
(Unterbrechung) und (Aufhebung der Unterbrechung) ist ebenfalls der Zustand (Unterbrochen) erforderlich.Für die Zustände
(Abbruch) und (Löschen) ist ebenfalls der Zustand (Abgebrochen) erforderlich.Die Zustände
(Reset) und (Ruhemodus) können nur gemeinsam verwendet werden.Im Normalbetrieb überprüft der Funktionsbaustein den von den Eingängen i_diUnitMode und i_xUnitModeChange ausgewiesenen Request zum Betriebsartwechsel mit Bezug auf den aktuellen Steuerungsmodus (iq_diUnitModeCurrent) und den vorliegenden Zustand (i_diStateCurrent). Nur eine steigende Flanke an i_sUnitModeChange löst die Ausführung des Funktionsbausteins aus. Das Ergebnis wird von den Ausgängen q_diEnterMode und q_xModeChangeRequestRejected angegeben. Wenn der Betriebsartwechsel zulässig ist, weist der Ausgang q_xModeChangeRequestRejected den Wert FALSE auf und der Ausgang q_diEnterMode wird mit dem Wert der angeforderten Betriebsart aktualisiert. In diesem Fall die für die jeweilige Anwendung erforderlichen Schritte zum Wechsel des Steuerungsmodus ausgeführt werden. Im Anschluss daran muss der Hinweis, dass der Betriebsartwechsel ausgeführt wurde, über den Eingang i_xModeChangeDone an den Funktionsbaustein übergeben werden. Wenn dieser Eingang den Wert TRUE aufweist, wird die mit dem Ein-/Ausgang iq_diUnitModeCurrent verknüpfte Variable mit dem zuvor angeforderten Steuerungsmodus aktualisiert.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_xEnable |
BOOL |
Aktivierung und Initialisierung des Funktionsbausteins |
i_diNumberOfModes |
DINT |
Anzahl der Betriebsarten Bei einer Änderung des Wert muss der Funktionsbaustein neu initialisiert werden. |
i_diUnitMode |
DINT |
Angeforderte Betriebsart Der PackTag Command.UnitMode sollte auf den Eingang angewendet werden. |
i_xUnitModeChangeRequest |
BOOL |
Bei einer steigenden Flanke prüft der Funktionsbaustein, ob ein Wechsel der Betriebsart möglich ist. Der PackTag Command.UnitModeChangeRequest sollte auf den Eingang angewendet werden. |
i_diStateCurrent |
DINT |
Ist-Zustand der Maschine Der PackTag Status.StateCurrent sollte auf den Eingang angewendet werden. |
i_xModeChangeDone |
BOOL |
Rückmeldung der Anwendung, dass der angeforderte Betriebsartwechsel durchgeführt wurde. Bei einer steigenden Flanke wird die mit iq_diUnitModeCurrent verknüpfte Variable entsprechend aktualisiert. |
i_pstInitMode |
POINTER TO ST_UnitModeDefinition |
Über diesen Eingang wird die Adresse des Zeigers für die Betriebsartendefinitionen an den Funktionsbaustein übergeben.* * Die Betriebsartendefinition enthält eine Zustandsdefinition für jede verfügbare Betriebsart und muss in einem Array des Typs ST_UnitModeDefinition bereitgestellt werden. Die Indizes des Arrays entsprechen dem numerischen Wert der verfügbaren Steuerungsmodi (siehe ET_Modes). Aus diesem Grund muss der Zeiger auf den Index verweisen, der dem Steuerungsmodus Producing, d. h. dem ersten Modus, zugeordnet ist. |
Eingang/Ausgang |
Datentyp |
Beschreibung |
---|---|---|
iq_diUnitModeCurrent |
DINT |
Über die diesem Ein-/Ausgang zugeordnete Variable erfährt der Funktionsbaustein die derzeitige Betriebsart bei einem Request zum Betriebsartwechsel. Nach der Durchführung des Betriebsartwechsels schreibt der Funktionsbaustein dann die neue Betriebsart. Der PackTag Status.UnitModeCurrent sollte auf den Ein-/Ausgang angewendet werden. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xActive |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, bedeutet das, dass der Funktionsbaustein aktiv ist. |
q_xError |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, wurde ein Fehler identifiziert. Siehe ET_Result. |
q_xReady |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, bedeutet das, dass der Funktionsbaustein einsatzbereit ist. |
q_etResult |
ET_Result |
Enumeration mit dem Ergebnis. |
q_sResultMsg |
STRING[80] |
Zusätzliche Ergebnismeldung. |
q_xUnitModeRequested |
BOOL |
Entspricht Eingang i_xUnitModeChangeRequest. Der PackTag Status.UnitModeRequested sollte auf diesen Ausgang angewendet werden. |
q_diEnterMode |
DINT |
Verweist auf die Betriebsart, zu der gewechselt werden soll. Wenn der Funktionsbaustein deaktiviert wird, wird dieser Ausgang auf 0 gesetzt. |
q_xModeChangeRequestRejected |
BOOL |
Solange der Ausgang den Wert TRUE aufweist, wird von diesem Funktionsbaustein kein Betriebsartwechsel-Request genehmigt und es sollte kein Wechsel durchgeführt werden. |