Das Allen-Bradley Device Plugin ermöglicht das Lesen und Schreiben von Daten von Allen-Bradley-SPS-Geräten über EtherNet/IP.
Folgende Gerätetypen werden unterstützt:
Die gesamte Allen-Bradley Device Plugin-Konfiguration befindet sich unter dem Nodepfad /System/Devices/Allen-Bradley Device
.
Ein Allen-Bradley Device Channel repräsentiert die Verbindung zu einer Allen-Bradley SPS.
IP-Adresse der Allen-Bradley-SPS.
Der Gerätetyp der Allen-Bradley-SPS. Es werden folgende Gerätetypen unterstützt:
Der CIP-Pfad zur SPS. Dieses Feld muss angegeben werden bei ControlLogix/CompactLogix sowie bei Verwendung einer DH+-Protokollbrücke (d.h. ein DHRIO-Modul).
Dieses Feld kann das Format A,B
haben, wobei A
den Porttyp angibt (1=Backplane), und B
den Slot angibt, in dem die CPU gesteckt ist.
Beispiel: 1,0
Das Timeout, das bei Lese- und Schreiboperationen angewendet werden soll.
Um einen neuen Allen-Bradley-Channel zu erstellen, gehen Sie wie folgt vor:
Allen-Bradley Device/Channels
hinzu, oder machen Sie einen Rechtsklick auf den Allen-Bradley Device/Channels
-Node und wählen Sie Add Channel
aus.Add Channel
-Dialog die Settings für die Allen-Bradley-Verbindung ein.
Unter dem Variables
-Node können Sie Datenpunktnodes erstellen, die aus der Allen-Bradley-SPS als Tags gelesen und in diese geschrieben werden.
Die Value Type
-Eigenschaft muss dabei auf den entsprechenden Typen des Tags festgelegt werden. Aktuell werden folgenden Tag-Typen unterstützt:
Tag-Typ | CoDaBix-Typ |
---|---|
SINT | SByte bzw. SByte-Array |
USINT | Byte bzw. Byte-Array |
INT | Int16 bzw. Int16-Array |
UINT | UInt16 bzw. UInt16-Array |
DINT | Int32 bzw. Int32-Array |
UDINT | UInt32 bzw. UInt32-Array |
LINT | Int64 bzw. Int64-Array |
ULINT | UInt64 bzw. UInt64-Array |
REAL | Single bzw. Single-Array |
STRING (oder benutzerdefinierter String-Datentyp) | String bzw. String-Array |
Bei String-Datentypen wird ein ASCII/ISO-8859-1-ähnliches Encoding angenommen (das High Byte des 16-Bit-Chars wird abgeschnitten). Dabei werden zwar Surrogate-Pairs (für Characters außerhalb der Unicode-BMP) nicht korrekt behandelt, jedoch ist damit die Anzahl der Bytes gleich der Länge des Strings.
Beachten Sie: Das jeweilige signierte/unsignierte Pendant eines Datentyps kann auch anstelle dessen verwendet werden. Z.B. kann ein SINT
auch als Byte
statt als SByte
verwendet werden; jedoch wird das MSB (most significant bit) dann anders interpretiert, da dieses bei einem signierten Datentypen das Vorzeichenbit ist.
Über die Path
-Eigenschaft des Nodes wird der Name des Tags, optional eine Typangabe, sowie (bei Arrays) optional ein Offset und die Länge der Daten definiert:
<TagName> <TagName>, <Length> <TagName>, <Type> <TagName>, <Type>[<Length>]
Platzhalter | Beschreibung |
---|---|
<TagName> | Der vollständige Name des Tags. Falls das Tag ein Programm-Tag ist, muss als Präfix Program:<Programmname>. mit dem entsprechenden Programmnamen verwendet werden. Falls das Tag eine Struktur ist, kann nach einem Punkt ( . ) der Name des zu verwendenden Feldes angegeben werden. Falls das Tag (oder ein Struktur-Feld) ein Array ist, kann mit der Syntax [Offset] das Array-Offset angegeben werden. |
<Length> | Falls das Tag ein Array ist, kann hier die Länge des Arrays angegeben werden. Diese wird nur beim Lesen verwendet; beim Schreiben wird die Länge aus dem zu schreibenden Array ermittelt. |
<Type> | Falls vorhanden, gibt eine Typspezifikation an, wenn diese nicht aus dem CoDaBix-Typen abgeleitet werden kann. Aktuell können folgende Typen angegeben werden: • STRING:<MaxLen> : Gibt die maximale Anzahl an String-Characters an, wenn die Variable vom Typ String bzw. String-Array ist. Dies kann bei benutzerdefinierten String-Datentypen verwendet werden; ansonsten wird der vordefinierte STRING -Datentyp mit max. 82 Characters verwendet. |
Value Type | Path | Erklärung |
---|---|---|
Int16 | Local:1:O.Data | Data -Feld (INT ) des digitalen Ausgangs (Int16 enthält Bitmaske der 16 digitalen Ausgänge (Digital Output Points)) |
Int16 | Local:1:I.Data | Data -Feld (INT ) des digitalen Eingangs (Int16 enthält Bitmaske der 16 digitalen Eingänge (Digital Input Points)) |
Int32 | MyControllerTag | Controller-Tag MyControllerTag (DINT ) |
Int32 | Program:MainProgram.MyTag1.MyField1 | Vom Programm MainProgram das Tag MyTag1 (Struktur) mit dem Feld MyField1 (DINT ) |
Byte-Array | Program:MainProgram.MyTag2, 20 | Vom Programm MainProgram das Tag MyTag2 (SINT[20] ) mit Länge 20 (Bereich 0..20) |
Byte-Array | Program:MainProgram.MyTag2[2], 16 | Vom Programm MainProgram das Tag MyTag2 (SINT[20] ) ab Index 2 mit Länge 16 (Bereich 2..18) |
Byte-Array | Program:MainProgram.MyTag3[4].MyField1[1], 5 | Vom Programm MainProgram das Tag MyTag3 (Struktur[5] ) bei Index 4 das Feld MyField1 (SInt[10] ) ab Index 1 mit Länge 5 (Bereich 1..6) |
String | MyStringTag1 | Controller-Tag MyStringTag1 (STRING mit max. 82 Characters) |
String | MyStringTag2, STRING:20 | Controller-Tag MyStringTag2 (benutzerdefinierter String-Typ mit max. 20 Characters) |
String-Array | MyStruct.MyStringTag3[2], STRING:20[3] | Controller-Tag MyStruct (Struktur) mit dem Feld MyStringTag3 (benutzerdefinierter String-Typ mit max. 20 Characters) ab Index 2 mit Länge 3 (Bereich 2..5) |
Das Allen-Bradley 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 Allen-Bradley-Kanals zu überwachen und zu diagnostizieren, werfen Sie einen Blick auf das folgende Bild:
Das obige Bild zeigt das Bedienfeld des Allen-Bradley-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.
Häufig vorkommende Fehlertexte:
Alle kanalbezogenen Statusinformationen werden auch in die kanalspezifische Logdatei im [LoggingFolder]
protokolliert. Jede Logdatei wird nach dem Namensschema Allen-Bradley 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 Allen-Bradley Device Plugin das CoDaBix Device Modell.
Der Device Typ AllenBradleyDevice
des Plugins definiert auch den AllenBradleyDeviceChannel
und erweitert somit die grundlegenden CodabixDevice
und CodabixDeviceChannel
Entities. Während das AllenBradleyDevice
nur eine Konkretisierung des CodabixDevice
darstellt, erweitert der AllenBradleyDeviceChannel
den CodabixDeviceChannel
mit den Allen-Bradley Variable Entities.
Der Kanal wird von einem Channel Worker behandelt, der eine TCP-Socket-Verbindung 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 dden entsprechenden Codabix-Node.
Name | Pfad | Zweck / Verwendung |
---|---|---|
AssemblyFolder | <CodabixInstallDir>/plugins/AllenBradleyDevicePlugin/ | Beinhaltet die Plugin-Assemblydatei. |
ConfigFolder | <CodabixProjectDir>/plugins/AllenBradleyDevicePlugin/ | Beinhaltet die Plugin-Konfigurationsdatei. |
LoggingFolder | <CodabixProjectDir>/log/ | Beinhaltet die Plugin-Logdateien. |
Typ | Pfad | Zweck / Verwendung |
---|---|---|
Assembly | [AssemblyFolder]/CoDaBix.AllenBradleyDevicePlugin.dll | Die Plugin-Assembly Datei. |
Logging | [LoggingFolder]/Allen-Bradley Device.<ChannelName>.log | Die Logdatei. |
Datum | 2019-11-11 |
---|---|
Version | 1.0 |
Name | Allen-Bradley Device Plugin |
---|---|
Node | /System/Devices/Allen-Bradley Device |
Version | 1.0.0 |
Name | CoDaBix.AllenBradleyDevicePlugin.dll |
---|---|
Datum | 2019-11-11 |
Version | 1.0.0.0 |