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?
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..
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.