Forum: PC-Programmierung EtherNet/IP einprogrammieren?


von Scanner (Gast)


Lesenswert?

Hallo Leute,

Ich versuche grade ein Program zu schreiben welches mit einem
EtherNet/IP CIP (Common Industrial Protocol) Gerät kommuniziert.
Dafür brauche Ich natürlich eine Spezifikation welche Bytes jetzt
eigentlich wo hin kommen.

Ich bin schon über ODVA.org gestolpert aber ich finde da nirgentwo
ein PDF wo mal genau erklärt wird wie welche Anfrage sich in die Bytes
auf dem Draht übersetzt? Alle PDFs zu dem Thema reden nur davon wie
toll das Protokoll ist und was für Objekte sie einbauen aber keiner
schreibt, was da eigentlich rübergeschickt wird?

von blubb (Gast)


Lesenswert?

https://www.odva.org/wp-content/uploads/2020/05/PUB00213R0_EtherNetIP_Developers_Guide.pdf 
gelesen ?

Der englische wiki eintrag zu EtherNet/Ip verlinkt:
https://github.com/EIPStackGroup/OpENer
 einer OS implementation eines EtherNet/Ip stacks, villeicht da mal 
reinschauen..

von Ulrich K. (elektromechanikus)


Lesenswert?

Hallo Scanner,

Bei EtherNet/IP gibt es zwei Kommunikationstypen (stark verkürzter 
Überblick):

- Explicit Messaging
kommt deiner Vorstellung wohl am nächsten, es wird aber nicht ein 
absolut adressiertes Byte/Wort (wie z.B. ein Modbus Register) 
angesprochen sondern die Datenelemente sind Attribute eines Objekts.
Anfrage also: Object -> Instance -> Attribute
Die Objekte die ein Gerät unterstützt sind in der CIP Specification für 
viele Gerätearten (z.B. Frequenzumrichter) in einem jeweiligen Profil 
definiert.

- I/O Messaging
Scanner und Adapter vereinbaren vorab die Kommunikationsinhalte und den 
Übertragungstakt (Forward Open). In der laufenden Kommunikation werden 
nur noch die Daten ausgetauscht. Wenn du mit Wireshark eine solche 
Kommunikation aufzeichnest, siehst du nur einem Bytestring.

Während man einen Modbus TCP Client zwischen Frühstück und Mittagspause 
programmieren kann, wirst du dich mit EtherNet/IP sehr intensiv 
beschäftigen müssen. Leider sind die Spezifikationen von der ODVA nicht 
frei verfügbar.

Startpunkt könnte der Open Source Scanner OpENer sein (Google).

Für weitergehende Fragen kannst du dich gerne bei mir melden.
Ich kann bestimmt Wireshark Aufzeichnungen verschiedener Kommunikationen 
auftreiben.

Gruß
Ulrich

von Scanner (Gast)


Lesenswert?

blubb schrieb:
> 
https://www.odva.org/wp-content/uploads/2020/05/PUB00213R0_EtherNetIP_Developers_Guide.pdf
> gelesen ?

Ja. Ich will aber garkein Vendor werden, sondern nur ein bereits 
existierendes Gerät auslesen.

Ulrich K. schrieb:
> Für weitergehende Fragen kannst du dich gerne bei mir melden.
> Ich kann bestimmt Wireshark Aufzeichnungen verschiedener Kommunikationen
> auftreiben.

Das hört sich doch super an!
An sich reicht es aus wenn ich per explicit messaging eine input 
assembly auslesen kann. Idealerweise sowohl einzelne Felder als auch 
Arrays.

Ich stell mir das so vor:

- TCP Socket wird verbunden (kein Problem)
- Ich sende einen Request rüber (get_attribute_single hab ich hier 
gefunden)
- In dem Request sind jetzt irgentwie die Instanz und das Attribut drin 
kodiert
- Das Gerät antwortet mit was immer in dem Attribut drin steht
- Socket wird wieder zugemacht

Das würde mir schon völlig ausreichen. Nur muss ich dafür natürlich 
wissen wie die Pakete aufgebaut sind. Ich muss auch keinen fully 
compliant stack schreiben, es reicht wenn dieses eine Feature drin ist.
Ein Wireshark dump würde da vermutlich schon viel helfen

von Ulrich K. (elektromechanikus)


Angehängte Dateien:

Lesenswert?

Hallo Scanner

ich habe momentan nur PCAPs von Implicit Communication (I/O) auf meinem 
Rechner gefunden.
Nächste Woche versuche ich noch Explicit Message Beispiele aufzutreiben.

Gruß
Ulrich

von Johannes S. (Gast)


Lesenswert?

Eine Suche auf Github ergibt 31 Repos, da sollte doch was verwertbares 
bei sein:
https://github.com/search?q=ethernetip

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.