# LGF_ActDeactMonitorDevice (FB / 2.0.0)

Übersicht

Autor: Simatic Systems Support

## Kurzbeschreibung

`LGF_ActDeactDevice` stellt eine kompakte State Maschine zur Aktivierung und Überwachung bzw. Deaktivierung eines dezentralen IO-Gerätes bereit.
Das Modul überwacht die Geräteverbindung und den Fehlerzustand nach der Aktivierung.

### Baustein Schnittstelle

| LGF_ActDeactMonitorDevice (FB) |
--- | --- | ---
Bool |  |  | enable |  | valid |  |  | Bool
Bool |  |  | deactivate |  | busy |  |  | Bool
Bool |  |  | activate |  | done |  |  | Bool
HW_DEVICE |  |  | hwId |  | error |  |  | Bool
LGF_typeActDeactMonitorDeviceParameter |  |  | parameter |  | status |  |  | Word
|  |  |  |  | deactivatingActive |  |  | Bool
|  |  |  |  | activatingActive |  |  | Bool
|  |  |  |  | isDeactivated |  |  | Bool
|  |  |  |  | isActivated |  |  | Bool
|  |  |  |  | deviceStateOK |  |  | Bool
|  |  |  |  | diagnostics |  |  | LGF_typeDiagnostics

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
enable | Bool | FALSE | TRUE: Aktiviert die Funktionalität des FB
deactivate | Bool | FALSE | Steigende Flanke: Deaktivieren des Gerätes angegeben `hwId`
activate | Bool | FALSE | Steigende Flanke: Aktivieren des Gerätes angegeben `hwId`
hwId | HW_DEVICE | --- | Hardware-ID des Geräts, das aktiviert/deaktiviert werden soll (`Device~PnIf~IODevice`)
parameter | LGF_typeActDeactMonitorDeviceParameter | --- | Parameterdatensatz für die Funktion `LGF_ActDeactMonitorDevice`

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
valid | Bool | TRUE: Ausgabewerte am FB gültig
busy | Bool | TRUE: FB ist aktiv und neue Ausgabewerte können erwartet werden.
done | Bool | TRUE: Abarbeitung vom Befehl erfolgreich fertiggestellt
error | Bool | FALSE: Kein Fehler / TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
status | Word | 16#0000-16#7FFF: Status des FB / 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
deactivatingActive | Bool | TRUE: Deaktivierung des Gerätes aktiv
activatingActive | Bool | TRUE: Aktivierung des Geräts aktiv
isDeactivated | Bool | TRUE: Gerät deaktiviert
isActivated | Bool | TRUE: Gerät aktiviert
deviceStateOK | Bool | TRUE: Gerät ist aktiviert und mit dem IO-System verbunden FALSE: Gerät ist defekt oder nicht verbunden, abhängig von `isActivated`
diagnostics | LGF_typeDiagnostics | Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_DEACTIVATED Geräte Deaktivierung erfolgreich beendet
16#0001 | STATUS_ACTIVATED Geräte Aktivierung erfolgreich beendet
16#7000 | STATUS_NO_CALL Kein Auftrag wird gerade bearbeitet
16#7001 | STATUS_FIRST_CALL Erster Aufruf nach eingehendem neuem Auftrag (steigende Flanke 'Freigabe')
16#7002 | STATUS_SUBSEQUENT_CALL Folgeanruf bei aktiver Bearbeitung ohne weitere Angaben
16#7040 | STATUS_DEACTIVATION Deaktivierung des Geräts
16#7060 | STATUS_ACTIVATION Aktivierung des Geräts
16#8600 | ERR_UNDEFINED_STATE Fehler: Aufgrund eines undefinierten Zustands im Zustandsautomaten
16#8601 | ERR_LOG2GEO Fehler: Log2Geo, möglicherweise ist die HW ID für das Gerät falsch, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8602 | ERR_GEO2LOG Fehler: Geo2Log, möglicherweise ist die HW-ID für das Gerät falsch, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8640 | ERR_DEVICE_DEACTIVATING Fehler: Deaktivierung `D_ACT_DP` des Geräts, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8641 | ERR_DEVICE_DEACTIVATING_TIME_OUT Fehler: Deaktivierung des Gerätes - Watchdog-Timer abgelaufen
16#8642 | ERR_DEVICE_DEACTIVATING_RETRIES_REACHED Fehler: Deaktivierung des Geräts - Wiederholungszähler maximum erreicht.
16#8650 | ERR_READ_ACTIVATION_STATE_WHILE_DEACTIVATED Fehler: Deaktivierungsstatus (D_ACT_DP) des Geräts ist falsch, gewünscht ist `16#0000` oder `16#0002`, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8660 | ERR_DEVICE_ACTIVATING Fehler: Aktivierung `D_ACT_DP` des Geräts, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8661 | ERR_DEVICE_ACTIVATING_TIME_OUT Fehler: Aktivierung des Geräts - Watchdog-Timer abgelaufen. Kann an einer unterbrochenen Geräteverbindung liegen.
16#8662 | ERR_DEVICE_ACTIVATING_RETRIES_REACHED Fehler: Aktivierung des Geräts - Wiederholungszähler maximum erreicht. Kann an einer unterbrochenen Geräteverbindung liegen.
16#8663 | ERR_READ_DEVICES_STATES_DURING_ACTIVATION Fehler: Read Device States (DeviceStates) während der Aktivierung des Gerätes, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8670 | ERR_READ_DEVICES_STATES_WHILE_ACTIVE Fehler: Read Device States (DeviceStates) während das Gerät aktiv ist, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8671 | ERR_DEVICE_STATE_WHILE_ACTIVE Fehler: Gerät meldet vorliegenden Fehler und ist unerreichbar, fehlerhaftes Gerät oder IO-System
16#8672 | ERR_READ_ACTIVATION_STATE_WHILE_ACTIVE Fehler: Aktivierungsstatus (D_ACT_DP) des Geräts ist falsch, gewünscht ist `16#0000` oder `16#0001`, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8690 | ERR_DISABLING_DEACT_DEVICE Fehler: Deaktivierung `D_ACT_DP` des Geräts führt zu einem Fehler bei der Deaktivierung, siehe `diagnostics.subFunctionStatus` für weitere Informationen
16#8691 | ERR_DISABLING_WATCHDOG Fehler: Watchdog-Timer beim Deaktivieren abgelaufen

## Benutzer definierte Datentypen

### LGF_typeActDeactMonitorDeviceParameter (UDT / V2.0.0)

Dieser UDT gehört zum Modul `LGF_ActDeactMonitorDeviceParameter` und listet alle möglichen Parameter zur Konfiguration des Verhaltens auf.

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
activationRetries | SInt | 100 | Anzahl der Wiederholungen der Aktivierung & Deaktivierung, bis einen Fehler anzeigt wird
timeOutActDeact | Time | T#5S | Die Zeit für die Überwachung der Befehle `activate` und `deactivate` sollte größer sein als die in der Hardwarekonfiguration der SPS im Abschnitt `Startup` eingestellte `Parametrierungszeit`.
timeOutStateMonitoring | Time | T#100ms | Zeit zur Überwachung des Gerätezustandes bei aktiviertem Gerät Nach Ablauf der Zeit liegt ein Fehler vor, solange der Zustand fehlerhaft ist.
enableAndDeactivate | Bool | TRUE | TRUE: Deaktivierung des Geräts während des Starts / der Aktivierung (prio vor `enableAndActive`) FALSE: Beibehaltung des aktuellen Zustands oder `enableAndActivate`
enableAndActivate | Bool | FALSE | TRUE: Freigabe / Aktivierung des Geräts während des Starts / der Freigabe FALSE: Beibehaltung des aktuellen Zustands oder `enableAndDeactivate`
disableAndDeactivate | Bool | TRUE | TRUE: Gerät beim Ausschalten des Moduls deaktivieren/deaktivieren FALSE: aktuellen Zustand beibehalten

### LGF_typeDiagnostics (UDT / V1.0.1)

Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
status | Word | 16#0000 | Status des Bausteins oder Fehleridentifikation beim Auftreten des Fehlers
subfunctionStatus | Word | 16#0000 | Status oder Rückgabewert von aufgerufenen FB's, FC's und Systembausteinen
stateNumber | DInt | 0 | Zustand in der Zustandsmaschine des Blocks, in dem der Fehler aufgetreten ist

## Funktionsbeschreibung

Das Modul stellt den Ablauf zum Aktivieren und Deaktivieren eines dezentralen IO-Geräts im Profinet (PN, S7-1500 & S7-1200) sowie im Profibus (DP, S7-1500) Netzwerk zur Verfügung.

Das Aktivieren des Gerätes (definiert an `hwId`) wird durch eine steigende Flanke an `activate` eingeleitet, nach vollständiger Aktivierung wir dieses am Ausgang `isActivated` und `deviceStateOK` angezeigt. Am Ausgang `deviceStateOK` wird der Verbindungsstatus angezeigt.
Die Verbindung wird überwacht und bei einem Ausfall von mehr als der eingestellten Überwachungszeit `timeOutStateMonitoring` am Ausgang und als Fehler gemeldet. Nach erfolgreicher Wiederherstellung der Verbindung durch das System wird ebenfalls die konfigurierte Zeit gewartet bis der Fehler zurückgesetzt wird zum Sicherstellen der Stabilität.

Hinweis
  Der Verbindungsstatus des Dezentralen Gerätes wird in der TIA Portal Projekt Navigation in der PLC, welcher der IO-Controller ist, unter dem Punkt `Dezentrale Peripherie` angezeigt, wenn sie mit dem Engineering System online sind.

Das Deaktivieren des Gerätes (definiert an `hwId`) wird durch eine steigende Flanke an `deactivate` eingeleitet, nach vollständiger Aktivierung wir dieses am Ausgang `isDeactivated` angezeigt.

Es ist möglich die Zustände für das Ein- sowie Ausschalten zu definieren, sowie die Überwachungszeiten zum Aktivieren und Deaktivieren sowie der Verbindungsüberwachung.

Alle Fehler werden automatisch zurück gesetzt sobald der fehlerhafte Zustand behoben ist.
Die Ausnahme hierzu stellen Fehler dar, welche nur durch einen Eingriff in die Software behoben werden können, wie zum Beispiel eine falsche oder nicht vorhandene Hardware ID eines nicht vorhanden dezentralen IO-Gerätes.

Hinweis
  Der Parameter `timeOutActDeact` zur Überwachung der Aktivierungs- und Deaktivierungssequenz sollte immer größer eingestellt werden als der Parametrierte Wert in der `Gerätekonfiguration` / `Anlauf` / `Parametrierungszeit`.

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Simatic Systems Support
| 06.04.2024 | First released version in different project
| 2.0.0 | Simatic Systems Support
| 10.03.2025 | Refactoring & Improve Code for LGF Integration Thats why we start here with V2.0 for the LGF integration