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.
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.