Rockwell EtherNet/IP

Allen-Bradley Logix-Steuerungen über EtherNet/IP (CIP) anbinden - Namen von Controller-Tags, Byte-Versätze, atomare CIP-Typen und Suche im Netz.

Als Markdown ansehen

Der Treiber Rockwell EtherNet/IP spricht mit Allen-Bradley- und Rockwell-Steuerungen der Reihe Logix (ControlLogix, CompactLogix) über EtherNet/IP mit CIP-Adressierung über Tags. Sie adressieren Werte über den Namen des Controller-Tags, wie er im Logix-Projekt erklärt ist, ganz ohne Registerbelegung. Legen Sie im Connector ein Gerät unter dem Treiber Rockwell EtherNet/IP an; der Bereich zeigt nur die Felder, die dieses Protokoll verwendet.

Verbindung

Feld Bedeutung Standard
Host IP-Adresse oder Hostname des Ethernet-Anschlusses der Steuerung. leer
Slot Auf welchem Platz des Baugruppenträgers die Steuerung sitzt, ab 0 gezählt. 0
Abfrageintervall (ms) Lesetakt für das ganze Gerät, für Tags, die ihn nicht selbst festlegen. 1.000

Es gibt kein Feld für den Port: EtherNet/IP verwendet seinen üblichen TCP-Port 44818. Die CIP-Route ist der Rückwandbus plus der Slot, eine Steuerung ist also an jedem Platz des Baugruppenträgers erreichbar; eine gefundene Steuerung beginnt bei Slot 0, und in diesem Feld berichtigen Sie ihn. Ein Feld für das Rack gibt es nicht: Eine CIP-Route trägt keine Racknummer. Anfragen laufen nach 10 Sekunden in eine Zeitüberschreitung. Die Kopfzeile des Geräts zeigt den zusammengesetzten Endpunkt, zum Beispiel eip://192.168.0.10:0, wobei die Zahl hinter der Adresse der Slot ist.

Jeder Tag darf sein eigenes Abfrageintervall (ms) setzen; der Wert 0 an einem Tag fällt auf das Intervall des Geräts zurück.

Adressierung

Ein Rockwell-Tag wird über zwei Felder auf der Karte Quelle des Tags adressiert:

Feld Bedeutung Angenommene Werte Standard
Controller-Tag Der Name des Tags, wie er in der Steuerung erklärt ist. Pflichtfeld. Freitext leer
Versatz im Tag (Bytes, Bits bei BOOL) Wo innerhalb der Daten dieses Tags der Wert sitzt: ein Versatz in Bytes oder, bei Tags vom Typ Boolean, ein Versatz in Bits. 0–255 0

Der Treiber öffnet das genannte Controller-Tag und holt den Wert am Versatz aus dessen Datenpuffer. Bei einem einfachen atomaren Tag bleibt der Versatz 0. Der Versatz ist das, was ein Controller-Tag mehrere Kanäle bedienen lässt: Ein DINT am Anfang einer Struktur hat den Versatz 0, das REAL vier Bytes später den Versatz 4, und bei einem Tag vom Typ Boolean zählt der Versatz Bits statt Bytes.

Zu lesen Controller-Tag Versatz Datentyp
Ein DINT Counter im Gültigkeitsbereich der Steuerung Counter 0 Int32
Ein DINT im Gültigkeitsbereich des Programms Main Program:Main.Counter 0 Int32
Ein Element Temps[2] eines REAL-Feldes Temps[2] 0 Float
Das zweite DINT in der Struktur Recipe Recipe 4 Int32
Bit 3 der Daten in Flags Flags 3 Boolean

Der Name erreicht die Steuerung ganz, Punkte eingeschlossen, und ein Lese- und ein Schreibvorgang desselben Tags landen an derselben Stelle. Genau das lässt einen Namen aus dem Gültigkeitsbereich eines Programms wie Program:Main.Counter funktionieren. Einen Pfad zu einem Element mit Punkt (MyUdt.Member) löst die Steuerung auf, wenn sie dieses Element unter seinem Namen veröffentlicht; wo sie das nicht tut, nennen Sie das Tag im Gültigkeitsbereich der Steuerung und greifen mit dem Byte-Versatz hinein, was immer funktioniert. Die Zeile Quelladresse (Bus) auf der Karte Quelle, die nur gelesen wird, zeigt die zusammengesetzte Adresse, während Sie tippen.

Datentypen

Jeder atomare CIP-Typ steht als Datentyp eines Tags zur Verfügung:

Datentyp CIP-Typ Größe
Boolean BOOL 1 Bit am Bit-Versatz
SByte SINT 1 Byte
Byte USINT 1 Byte
Int16 INT 2 Bytes
UInt16 UINT 2 Bytes
Int32 DINT 4 Bytes
UInt32 UDINT 4 Bytes
Int64 LINT 8 Bytes
UInt64 ULINT 8 Bytes
Float REAL 4 Bytes
Double LREAL 8 Bytes

Strukturen und UDTs werden nicht unterstützt: Nur die atomaren Typen oben lassen sich lesen oder schreiben, und genau dafür gibt es den Byte-Versatz, um Elemente in ihnen zu erreichen. String fehlt bewusst in der Auswahl: Ein Logix-STRING ist kein atomarer Typ, sondern eine Struktur aus einer Länge und einem 82 Byte großen Feld, und der Treiber kann keinen lesen und keinen schreiben. Die Byte-Reihenfolge auf dem Bus ist das Little-Endian von CIP selbst und wird automatisch behandelt; eine Wahl der Byte-Reihenfolge gibt es nicht.

Schreiben

Tags, deren Zugriff Lesen und schreiben oder Nur schreiben ist, lassen sich schreiben. Ein Schreibvorgang liest das Controller-Tag, ändert die adressierten Bytes (oder das adressierte Bit bei Boolean) und schreibt es zurück. Ein neuer Tag beginnt als Nur lesen.

Gerätesuche

Die Schaltfläche Suchen des Connector sendet eine CIP-Anfrage List Identity als Rundruf in jedes Netz, in dem dieser Rechner ist, und hört so lange zu, bis 10 Sekunden ohne neue Antwort vergangen sind. Der Suchlauf nennt diese Netze, während er läuft, ein Ergebnis von null sagt also, wohin die Frage tatsächlich ging: Eine Station mit virtuellen Adaptern für Maschinen, WSL oder ein VPN hat oft mehr Netze, als der Bediener erwartet, und Kandidaten können aus einem davon kommen.

Schnittstellen, die die Anfrage nicht tragen können, werden übersprungen: alles, was nicht oben ist, Loopback- und Tunneladapter sowie eine Adresse, die sich die Schnittstelle selbst gegeben hat, weil niemand auf DHCP geantwortet hat (169.254.x.x). Nur eine Antwort, die die eigene Identitätsantwort einer Steuerung ist, wird zu einem Kandidaten für ein Gerät, benannt mit eip:// und seiner Adresse; alles andere, was auf dem EtherNet/IP-Port antwortet, wird übergangen und im Journal genannt. Für jeden Kandidaten liest der Suchlauf danach die Tagliste im Gültigkeitsbereich der Steuerung und bietet ihre atomaren Tags als Kandidaten für Kanäle an, jeden mit dem Versatz 0.

Die Gerätesuche verwirft, was der Treiber nicht zyklisch lesen kann: Tags von Strukturen und UDTs (Logix-STRINGs eingeschlossen) fallen weg, und Einträge mit Program:, Task: und Map: werden übersprungen. Eine Steuerung in einem Netz, in dem dieser Rechner nicht ist, antwortet nicht auf den Rundruf; legen Sie sie von Hand an.

Gut zu wissen

  • Jede Anfrage an die Steuerung läuft nach 10 Sekunden in eine Zeitüberschreitung, und das Zeitfenster, in dem die Gerätesuche zuhört, schließt nach 10 Sekunden Stille.
  • Der Treiber öffnet jedes Tag der Steuerung einmal und hält es offen, solange das Gerät verbunden ist; eine Steuerung mit Dutzenden Tags wird also über die Sitzungen gelesen, die sie schon hat, statt pro Lesevorgang eine zu öffnen und wieder zu schließen. Ein fehlgeschlagener Lesevorgang gibt sein Tag frei, und der nächste öffnet es erneut über den Namen.
  • Das Umbenennen eines Tags im Logix-Projekt bricht den Kanal stillschweigend; der Tag liest dann schlechte Qualität, bis der eingestellte Name wieder passt.