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]
}