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.

Abbildung 1. secsgw cns structure

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.

Abbildung 2. secsgw event report config

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.

Wichtig:
Es ist wichtig zu beachten, dass die verwendete Collection Event ID (CEID) für jedes dieser Events auch auf dem Host konfiguriert werden muss. Eine detaillierte Beschreibung des Control-State-Modells finden Sie in SEMI E30 Abschnitt 6.5.

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.

Anmerkung:
Einem Gateway in der CNS-Struktur zugewiesenes Gerät muss auch dem Gateway im Konfigurationspanel im System Management zugewiesen sein.

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: