Das H1 Device Plugin ermöglicht das Lesen und Schreiben von Daten von SIMATIC S5 SPS-Geräten unter Verwendung des SINEC-H1-Protokolls basierend auf ISO/MAC (Industrial Ethernet).
Die gesamte H1 Device Plugin-Konfiguration befindet sich unter dem Nodepfad /System/Devices/H1 Device
.
Ein H1 Device Channel repräsentiert die Verbindung zu einer H1-SPS.
Die NIC (Netzwerkkarte), die für die Netzwerkkommunikation verwendet werden soll.
Die MAC-Adresse des Remote-Geräts.
Die SSAP-(Quell-SAP)- und DSAP-(Ziel-SAP)-Werte, die beim Lesen von Daten verwendet werden sollen. Es werden maximal 8 Zeichen verwendet.
Die SSAP-(Quell-SAP)- und DSAP-(Ziel-SAP)-Werte, die beim Schreiben von Daten verwendet werden sollen. Es werden maximal 8 Zeichen verwendet.
Gibt an, welcher Teilnehmer die Verbindung initiiert:
No
: Die lokale Maschine initiiert die Verbindung.Yes
: Die Remote-Maschine initiiert die Verbindung.
Um einen neuen H1-Channel zu erstellen, gehen Sie wie folgt vor:
H1 Device/Channels
hinzu, oder machen Sie einen Rechtsklick auf den H1 Device/Channels
-Node und wählen Sie Add Channel
aus.Add Channel
-Dialog die Settings für die H1-Verbindung ein.
Unter dem Variables
-Node können Sie Datenpunktnodes erstellen, die von der SPS gelesen und in diese geschrieben werden können.
Die Value Type
-Eigenschaft muss entsprechend zu dem zugehörigen Operandentyp gesetzt werden. Derzeit werden folgende Typen unterstützt:
CoDaBix Type | Operand |
---|---|
Boolean oder Boolean-Array | X |
Byte /SByte oder Byte-Array /SByte-Array | L (Links=High Byte) or R (Rechts=Low Byte) |
Int16 /UInt16 oder Int16-Array /UInt16-Array | W |
Int32 /UInt32 oder Int32-Array /UInt32-Array | D |
Float oder Float-Array | D |
TimeSpan oder TimeSpan-Array | W |
Beachten Sie: 32-Bit-Werte (Float
, Int32
) werden als zwei separate (16-Bit)-Wörter gelesen bzw. geschrieben. Wenn der Wert in der SPS sich während des Lesens ändert, kann dies dazu führen, dass ein inkonsistenter Wert gelesen wird, wenn ein Wort bereits den neuen Wert hat, aber das andere Wort noch den alten Wert.
Beachten Sie: Bit-Werte (Boolean
) werden als (16-Bit)-Wort gelesen bzw. geschrieben. Wenn ein solcher Boolean-Wert geschrieben wird, wird zuerst das Wort von der SPS gelesen, dann die entsprechenden Bits geändert, und dann wird das Wort in die SPS zurückgeschrieben. Wenn ein anderer Teilnehmer gleichzeitig andere Bits dieses Worts ändert, kann dies dazu führen, dass diese Änderungen verloren gehen.
Über die Path
-Eigenschaft des Nodes wird die Adresse und optional der Typ und/oder (für Arrays) die Länge der Daten festgelegt. Derzeit wird nur Data Block
(DB
) als Datenbereich unterstützt.
DB<DB number>.D<Operand> <Offset> DB<DB number>.D<Operand> <Offset>, <Length> DB<DB number>.D<Operand> <Offset>, <Type>[<Length>] DB<DB number>.DX <Offset>.<Bit>, <Length>
Platzhalter | Beschreibung |
---|---|
<DB number> | Die Nummer des Datenblocks. |
<Operand> | Einer der Operanden, wie sie in der obigen tabelle angegeben sind. |
<Offset> | Der Wort-(16-Bit)-Offset, ab dem auf die Daten zugegriffen werden soll. |
<Bit> | Bei der Verwendung von Boolean /Boolean-Array kann die Bitnummer des Worts von 0 bis 15 angegeben werden. |
<Length> | Die Länge des Arrays. |
<Type> | Bei der Verwendung von Integer-Typen kann optional ein BCD-Typ (Binary Coded Decimal) angegeben werden, um die Werte unter Verwendung der BCD-Kodierung abzulegen. Es kann einer der folgenden Werte angegeben werden: • BCD : Der Wert wird BCD-kodiert. |
Value Type | Path | Meaning |
---|---|---|
Int16 | DB1000.DW 20 | Im Datenblock 1000, greife auf das Wort bei Offset 20 zu. |
Int16-Array | DB1000.DW 30, 10 | Im Datenblock 1000, beginne bei Offset 30 und lies/schreibe 10 Wörter (exklusiver Ende-Offset: 40). |
Int32 | DB1000.DD 40, BCD[4] | Im Datenblock 1000, beginne bei Offset 40 und lies/schreibe vier 32-Bit-Werte (exklusiver Ende-Offset: 48) und kodiere/dekodiere die Werte als BCD. |
Boolean-Array | DB1000.DX 50.12, 24 | Im Datenblock 1000, greife auf die Bits ab Offset 50.12 bis (exklusives) Offset 52.4 zu (die Bits werden als drei 16-Bit-Wörter gelesen/geschrieben). |
Byte-Array | DB1000.DR 60, 2 | Im Datenblock 1000, greife auf die Bytes bei Offset 60 (Low Byte) und 61 (High Byte) zu. |
Das H1 Device Plugin liefert je nach zu untersuchender Schicht verschiedene Statusinformationen. Generell werden die kanalbasierten Diagnoseinformationen durch den Verbindungsstatus des Channels zur SPS produziert. Die variablenbasierten Diagnoseinformationen werden während des Lese-/Schreibzugriffs auf die verschiedenen Variablen produziert.
Um den Status des H1-Kanals zu überwachen und zu diagnostizieren, werfen Sie einen Blick auf das folgende Bild:
Das obige Bild zeigt das Bedienfeld des H1-Kanals, das alle statusrelevanten Informationen anzeigt. Das Bedienfeld aktualisiert automatisch seine Statusinformation, wenn ein neuer Status verfügbar ist.
Statuskreis
Um den Status der verschiedenen Variablen zu überwachen und zu diagnostizieren, werfen Sie einen Blick auf die in CoDaBix angezeigte Status
-Eigenschaft der Spalte.
Benutzen Sie den Button „Read actual Value“, um die Werte von der SPS auszulesen und das Ergebnis in den Variablen zu speichern.
Alle kanalbezogenen Statusinformationen werden auch in die kanalspezifische Logdatei im [LoggingFolder]
protokolliert. Jede Logdatei wird nach dem Namensschema H1 Device.<ChannelName>.log
benannt.
Der Inhalt einer solchen Logdatei kann wie folgt aussehen:
... 2018-04-11 11:32:37.0 +2: [Error] Error (Severity=High): Code=[-1], Text=[The operation has timed-out.], Details=[] ...
Wie jedes Device Plugin erweitert das H1 Device Plugin das CoDaBix Device Modell.
Der Device Typ H1Device
des Plugins definiert auch den H1DeviceChannel
und erweitert somit die grundlegenden CodabixDevice
und CodabixDeviceChannel
Entities. Während das H1Device
nur eine Konkretisierung des CodabixDevice
darstellt, erweitert der H1DeviceChannel
den CodabixDeviceChannel
mit den H1 Variable Entities.
Der Kanal wird von einem Channel Worker behandelt, der eine Netzwerkverbindung zur SPS herstellt.
Der Worker liest standardmäßig keine Werte. Wenn ein Anwender oder Plugin in CoDaBix einen synchronen Lesevorgang der Channel
Variablen anfordert (z.B. mit der „Read actual value“-Funktion in der CoDaBix Webkonfiguration), liest der Channel Worker diese aus der SPS und schreibt diese in die entsprechenden CoDaBix Nodes.
Ähnlich schreibt der Channel Worker auch die Werte in die SPS, wenn ein Client oder Plugin Werte in die Channel
-Variablen schreibt.
Damit eine Allen-Bradley-Variable regelmäßig gelesen wird, können Sie in der Webkonfiguration bei dem Node „History Options“ auf Yes
stellen (was eine interne Subscription erstellt),
oder Sie können zum Beispiel einen OPC UA Client verwenden, der mit dem OPC UA Server Plugin verbunden ist und damit eine Subscription für die Allen-Bradley Variablennodes erstellen.
In diesen Fällen liest der Channel Worker in regelmäßigen Intervallen die Variablen von der SPS und schreibt den neuen Wert nach einer Wertänderung automatisch
in die entsprechende CoDaBix Node.
Name | Pfad | Zweck / Verwendung |
---|---|---|
AssemblyFolder | <CodabixInstallDir>/plugins/H1DevicePlugin/ | Beinhaltet die Plugin-Assemblydatei. |
ConfigFolder | <CodabixProjectDir>/plugins/H1DevicePlugin/ | Beinhaltet die Plugin-Konfigurationsdatei. |
LoggingFolder | <CodabixProjectDir>/log/ | Beinhaltet die Plugin-Logdateien. |
Typ | Pfad | Zweck / Verwendung |
---|---|---|
Assembly | [AssemblyFolder]/CoDaBix.H1DevicePlugin.dll | Die Plugin-Assembly Datei. |
Logging | [LoggingFolder]/H1 Device.<ChannelName>.log | Die Logdatei. |
Datum | 2019-11-11 |
---|---|
Version | 1.0 |
Name | H1 Device Plugin |
---|---|
Node | /System/Devices/H1 Device |
Version | 1.0.0 |
Name | CoDaBix.H1DevicePlugin.dll |
---|---|
Datum | 2020-01-07 |
Version | 1.0.0.0 |