CNS-Struktur
Eine CNS-View repräsentiert einen SECS-Gateway-Manager. Die CNS-Bäume repräsentieren das SECS-Gerät.
Die Knoten-ID des Baums muss der internen DP des _SecsEquipment DPT entsprechen (ohne
Unterstrich). Die folgende CNS-Struktur kann an die Projektbedürfnisse erweitert werden, z.B.
durch Hinzufügen von Equipment Constants oder Events, die noch nicht definiert sind.
Die CNS-Struktur wird vom Gateway beim Start und nach Änderungen der CNS-View und ihrer untergeordneten Knoten gelesen, sodass ein Manager-Neustart für Änderungen nicht erforderlich ist.
Jeder SECS-Baum (Geräteverbindung) besteht aus den folgenden untergeordneten Knoten zur Konfiguration der grundlegenden GEM-Anforderungen. Alle Knoten müssen mit einem DPE verknüpft sein, außer den Events:
| Knoten-ID | Knotentyp | DPE-Typ | Beschreibung |
|---|---|---|---|
| PLCConnState | DP | Int, uint | Dieser Knoten muss den Verbindungsstatus-DPE der SPS enthalten, die als SECS-Gerät dargestellt werden soll. |
| PLCConnState_2 | DP | Int, uint | Wird nur in einem redundanten System benötigt. Dieser Knoten muss den _2 Verbindungsstatus-DPE der SPS enthalten, die als SECS dargestellt werden soll. |
| PLCControlState | DP/Struktur | Int, uint | Dieser Knoten muss den Control-State-DPE der SPS oder des Mocks enthalten, der als SECS-Gerät dargestellt werden soll. |
| MDLN | DP | String | Dieser Knoten sollte ein DPE enthalten, das die MDLN (Modellnummer) des Geräts definiert (siehe SEMI E30 und E5 für weitere Details). |
| SOFTREV | DP | String | Dieser Knoten sollte ein DPE enthalten, das die SOFTREV (Softwarerevision) des Geräts definiert (siehe SEMI E30 und E5 für weitere Details). |
| Events | Struktur | - | Dieser Knoten enthält die dem Gerät zugewiesenen Events. Siehe Abschnitt Events für eine detaillierte Beschreibung. |
| EquipmentConstants | Struktur | - | Dieser Knoten enthält die Equipment Constants des Geräts. |
| StatusVariables | Struktur | - | Dieser Knoten enthält die Statusvariablen des Geräts, die vom Benutzer definiert werden müssen. |
| EquipmentProcessState | DP | Int, uint | Dieser Knoten sollte ein DPE enthalten, das den Equipment Process State darstellt. Beachten Sie, dass der Process State in der SPS oder in einem CTRL-Skript implementiert werden muss. |
Equipment Constants
Jedes SECS-Gerät benötigt Equipment Constants für Konfigurationszwecke. Die vordefinierten
Konstanten in diesem Abschnitt müssen konfiguriert werden, um die Funktionalität der
grundlegenden GEM-Anforderungen zu erfüllen. Die Knoten-IDs von Equipment Constants
benötigen das Präfix ECID_, das für Equipment Constants ID steht.
Zusätzliche Equipment Constants können hinzugefügt werden, aber ihr Anwendungsfall muss auf
Applikationsseite implementiert werden und wird nicht automatisch im Gateway-Manager
berücksichtigt. Für den Host wird nur das Abfragen und Ändern der Werte über die
entsprechenden Nachrichten unterstützt.
| Knoten-ID | EC-Name | Knotentyp | DPE-Typ | Beschreibung |
|---|---|---|---|---|
| ECID_100 | AnnotateEventReportsEnabled | DP | Uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das definiert, ob das Gerät annotierte Event Reports sendet oder nicht. True: Event Reports werden mit S6F13 gesendet. False oder kein DPE verknüpft: Event Reports werden mit S6F11 gesendet. |
| ECID_101 | EstablishCommunicationsTimeout | DP | Uint, int | Dieser Knoten sollte ein DPE enthalten, das den Establish-Communications-Timeout konfiguriert (siehe SEMI E30 Abschnitt 6.4.2.1 für weitere Spezifikation). |
| ECID_102 | TimeFormat | DP | Uint | Dieser Knoten sollte ein DPE enthalten, das das für SECS-Nachrichten verwendete Zeitformat konfiguriert (siehe SEMI E5 Abschnitt 9.10 Tabelle 7 „Variable Dictionary" „TimeFormat"). |
Events
Event-Benachrichtigung ist eine grundlegende GEM-Anforderung und daher obligatorisch für das SECS-Gateway. Die Konfiguration über CNS wird in diesem Abschnitt beschrieben. Weitere Details zur Event-Benachrichtigung und Event Reports finden Sie in der SEMI E5 S6F11/13-Nachricht und in SEMI E30 Abschnitt 7.3.1.2.
Jedes SECS-Gerät benötigt einen Events-Strukturknoten. Events können dynamisch in der CNS-Struktur hinzugefügt werden. Sie werden automatisch vom Gateway-Manager berücksichtigt, wenn Trigger-DPs verknüpft sind. Die Struktur der Knoten-IDs für Events und alle untergeordneten Knoten ist in der folgenden Tabelle definiert:
| Knoten-ID | Übergeordneter Knoten | Knotentyp | DPE-Typ | Beschreibung |
|---|---|---|---|---|
| CEID_<CEID> | Events | Struktur | - | Dieser Knoten enthält den Event-Namen und die ID. |
| (Trigger-DPEs) | CEID_<CEID> | DP | - | Alle DP-Knoten mit CEID_<CEID> als übergeordnetem Knoten werden als
Trigger-DPEs betrachtet. Bei jeder Wertänderung eines der konfigurierten
Trigger-DPEs wird ein Event an den Host gesendet. Wenn dieser Trigger-DPE-Knoten die
CNS-Eigenschaft OA:SECS hat, wird das Event nur gesendet, wenn der
aktuelle Wert einem der Eigenschaftswerte entspricht. Eine detaillierte Beschreibung
dieser CNS-Eigenschaft finden Sie im Abschnitt OA:SECS. |
| RPTID_<RPTID> | CEID_<CEID> | Struktur | Beliebiger Datentyp aus Datentypen | Dieser Knoten enthält den Report-Namen und die ID. Mehrere Report-Knoten können einem CEID_<CEID> zugeordnet werden. |
| (Report-DPEs - mit Annotation: VID_<Unsigned ID> wenn AnnotateEventReportsEnabled True ist, ansonsten keine spezifische ID) | RPTID_<RPTID> | DP | Beliebiger Datentyp aus Datentypen | Alle Knoten die dem Knoten RPTID_<RPTID> untergeordnet sind, werden als Report-DPEs betrachtet. Diese DPEs konfigurieren, welche Daten dem Host übergeben werden, wenn ein Event ausgelöst wird. DP-Knoten repräsentieren einen Wert und Strukturknoten den Beginn eines Listenelements mit untergeordneten DP-Knoten oder verschachtelten Listen. |
Event- und Report-Konfiguration
Eine CEID wie CEID_4000 kann für ein Event mit dem Namen
ControlOnline-Offline verwendet werden. Trigger-DPEs können als
untergeordnete Knoten unterhalb von CEID_4000 konfiguriert werden und optional passende
Werte über die Eigenschaft OA:SECS definieren.
Die Report-Struktur kann unterhalb eines Report-Knotens wie RPTID_1000 konfiguriert werden. Report-DPEs definieren die Werte, die an den Host übertragen werden, wenn das Event ausgelöst wird. Für annotierte Event Reports können Report-Werte Knoten-IDs im Format VID_<Unsigned ID> verwenden.
Events und Reports können auch über CTRL-Skripte und die SECS-Gateway-Bibliotheksfunktion
secsgw_createEventOrReport (in secsGateway.ctl) erstellt werden.
Obligatorische Events
Events sind grundsätzlich nicht obligatorisch, aber die folgenden Events für den Control State müssen konfiguriert werden, um die korrekten Informationen vom Host über den Control State des Geräts zu erhalten:
- ControlOnline-Offline
- ControlLocal
- ControlRemote
Beim Erstellen von CNS Gateway- oder Gerätestrukturen über die entsprechenden Schaltflächen werden diese Events automatisch erstellt.
PLCControlState
Der Control State ist ein wesentliches SECS-Gerätemerkmal, das für den Betrieb des Geräts und den Host-Nachrichtenaustausch notwendig ist. Daher ist es erforderlich, die entsprechenden CNS-Knoten zu konfigurieren. Weitere Informationen zum Control-State-Modell finden Sie im SEMI E30 Standard Abschnitt 6.5.
Der PLCControlState CNS-Knoten hat untergeordnete Knoten, die Konfigurations- (Config) und Befehls- (Command) DP-Knoten enthalten. Die untergeordneten Knoten werden in der folgenden Tabelle beschrieben:
| Knoten-ID | Knotentyp | DPE-Typ | Beschreibung |
|---|---|---|---|
| Config | Struktur | - | Strukturknoten. Untergeordnete Knoten sind Konfigurationsknoten für den Control State. |
| Config.OAOperateControlStateAllowed | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das beschreibt, ob das Bedienen oder Konfigurieren des Control State in WinCC OA erlaubt ist oder ob diese Konfigurationen und Operationen nur innerhalb der SPS erlaubt sind. True: PLCControlState kann in WinCC OA bedient werden. PLCControlState-Konfigurationen können in WinCC OA geändert werden. False: Nur die SPS kann den PLCControlState und die Control-State-Konfigurationen steuern. |
| Config.StartingControlState | DP | uint, int | Dieser Knoten sollte ein DPE enthalten, in dem der Start-Control-State definiert ist. |
| Config.DefaultOfflineControlState | DP | uint, int | Dieser Knoten sollte ein DPE enthalten, in dem der Standard-Offline-Control-State definiert ist (siehe SEMI E30 Abschnitt 6.5.4). |
| Command | Struktur | - | Strukturknoten. Untergeordnete Knoten sind Befehlsknoten zur Bedienung des ControlState auf der SPS. |
| Command.LocalRemote | DP | uint, int, bool | Dieser Knoten sollte ein DPE mit der Information und Befehlsmöglichkeit enthalten, in den Online-Local- (false) oder Online-Remote-Control-State (true) zu wechseln. |
| Command.HostAckGoOnline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, nachdem der PLCControlState in den „Attempt-Online“-Status wechselt, ein S1F1 an den Host gesendet wurde und der Host mit S1F2 antwortet. |
| Command.HostRejGoOnline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, nachdem der PLCControlState in den „Attempt-Online“-Status wechselt, S1F1 an den Host gesendet wurde und der Host mit S1F0 antwortet oder der Transaction-Timeout erreicht ist. |
| Command.HostReqOnline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, wenn der Host eine S1F17 (GoOnline)-Anfrage sendet. |
| Command.HostReqOffline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, wenn der Host eine S1F15 (GoOffline)-Anfrage sendet. |
| Command.EquipReqOnline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, wenn der Bediener in WinCC OA das Gerät in den Online-ControlState versetzen möchte. |
| Command.EquipReqOffline | DP | uint, int, bool | Dieser Knoten sollte ein DPE enthalten, das ausgelöst wird, wenn der Bediener in WinCC OA das Gerät in den Offline-ControlState versetzen möchte. |
OA:SECS
Zur vollständigen Konfiguration des SECS-Gateways wird die CNS-Eigenschaft
OA:SECS verwendet, um Event-Trigger-Werte auf Event-Trigger-DP-Knoten
festzulegen oder den „Connected"-Status auf dem PLCConnState-Knoten eines Geräts zu
definieren. Die Eigenschaft muss als JSON-Array mit Zahlen definiert werden. Die CNS-Panels
im SECS-Abschnitt des Anlagenmodell-Editors kümmern sich bereits darum, aber wenn ein
CTRL-Skript verwendet wird, kann die Eigenschaft über die Funktionen
cnsSetProperty und cnsGetProperty gesetzt und abgefragt
werden.
Beispiel für das Setzen der OA:SECS Eigenschaft:
main()
{
dyn_int diSecsValues = makeDynInt(1, 2, 3);
string sSecsValuesEncoded = jsonEncode(diSecsValues);
cnsSetProperty("System1.View1:Node3.Node1", "OA:SECS", sSecsValuesEncoded);
}
Beispiel für das Lesen der OA:SECS Eigenschaft:
main()
{
string sJsonValues;
cnsGetProperty("System1.View1:Node3.Node1", "OA:SECS", sJsonValues);
dyn_int diSecsValues = jsonDecode(sJsonValues);
DebugTN(diSecsValues); // dyn_int [1, 2, 3]
}
