Datenmapping
Dieses Kapitel enthält Informationen und Anleitungen zur Konfiguration des Datenmappings eines WinCC OA-SECS-Gateways.
CNS-Views definieren die Struktur, die vom Gateway-Manager verwendet wird, um Daten von SPS-Datenpunkten auf SECS-spezifische Funktionen abzubilden. Wie der Host auf die Daten zugreifen kann, wird im Abschnitt Datenzugriff beschrieben.
Datentypen
Die folgende Tabelle zeigt, welche WinCC OA-Datentypen auf welche SECS-Datentypen abgebildet werden.
| WinCC OA-Typen | SECS-Typen | WinCC OA-Typen | SECS-Typen |
|---|---|---|---|
| BLOB_VAR | A | UINTEGER_VAR | U4 |
| BIT64_VAR | U8 | FLOAT_VAR | F8 |
| BIT32_VAR | U4 | TEXT_VAR | A |
| CHAR_VAR | A | DYN_*_VAR | Vektor des entsprechenden "*"-Typs |
| BIT_VAR | BL | LONG_VAR | I8 |
| INTEGER_VAR | I4 | ULONG_VAR | U8 |
Vektoren sind in SEMI E5 nicht im Detail definiert, werden aber in mehreren E5-Nachrichten
verwendet und als einzelnes Objekt dargestellt, das eine Werteliste eines SECS-Typs enthält.
Zum Beispiel sieht ein U4-Vektor (DYN_UINTEGER_VAR) so aus: [12,23,25]. Es
ist wichtig zu beachten, dass ein Vektor keine Liste ist, da ein Vektor in SEMI E5 Abschnitt 9
kein vollständig definierter Datentyp ist.
Nachrichten, die manuell über die HostInterface DPs gesendet und empfangen werden, können mit allen verfügbaren SECS-Datentypen implementiert werden.
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]
}
CNS-Konfiguration
Für das SECS-Gateway ist eine spezifische Struktur im CNS erforderlich. Die Struktur kann automatisch für bestehende _SecsGateway und _SecsEquipment DPs im SECS-Abschnitt des Anlagenmodell-Editor erstellt werden.
System
Der Systemknoten im SECS-Abschnitt des Anlagenmodell-Editors sieht wie folgt aus:
Die Zuordnung zwischen View und Gateway erfolgt per Drag-and-Drop von der linken Tabelle zum entsprechenden Gateway-DP in der rechten Tabelle. Außerdem kann eine View für ein bestimmtes, bereits vorhandenes Gateway über die Schaltfläche Gateway-View erstellen erstellt werden. Nach dem Klicken können Sie einen der bereits vorhandenen SECS-Gateway-DPs auswählen, für den die CNS-Struktur erstellt werden soll. Wenn Geräteverbindungen bereits im Gateway-Konfigurationspanel verknüpft wurden, wird die zugrunde liegende Gerätestruktur für die CNS-Konfiguration ebenfalls automatisch erstellt und muss nur noch im Anlagenmodell-Editor konfiguriert werden.
View
Der View-Knoten im SECS-Abschnitt des Anlagenmodell-Editors sieht wie folgt aus:
Mit der Schaltfläche Gerät hinzufügen wird die CNS-Struktur für eine Geräteverbindung automatisch für einen vorhandenen und ausgewählten _SecsEquipment DP erstellt. Wenn beispielsweise eine neue Geräteverbindung zu einem bereits vorhandenen Gateway und einer CNS-Struktur hinzugefügt wurde, automatisiert diese Schaltfläche den Prozess des Hinzufügens aller Knoten im Anlagenmodell-Editor.
Knoten
Knoten im SECS-Abschnitt des Anlagenmodell-Editors haben drei verschiedene Panels, abhängig von der Knoten-ID.
Event-Trigger-DPs und PLCConnState-Knoten
Diese beiden Knotentypen haben im SECS-Abschnitt des Anlagenmodell-Editors die Möglichkeit,
SECS-spezifische Werte als CNS-Eigenschaft zu setzen. Der Name der Eigenschaft ist
OA:SECS.
Für Event-Trigger-DPs werden die Eigenschaftswerte verwendet, um spezifische Triggerwerte des verknüpften DPs zu definieren. Wenn Werte in der Liste definiert sind, wird das Event nur ausgelöst, wenn der DP-Wert einem der definierten Werte entspricht. Wenn keine Werte definiert sind, wird das Event bei jeder Wertänderung des verknüpften DPs ausgelöst.
Für den PLCConnState-Knoten ist ebenfalls eine SECS-Wertkonfiguration erforderlich. Auf diesem Knoten kann ein Wert definiert werden, der den „Connected"-Status einer SPS darstellt, deren Daten innerhalb der Geräteverbindung verwendet werden.
Alle anderen Knoten
Alle anderen Knoten im SECS-Abschnitt haben nicht die Möglichkeit, zusätzliche Werte über das Panel festzulegen, und zeigen dieses Panel:
