Neals
Level-1
- Beiträge
- 347
- Reaktionspunkte
- 72
-> Hier kostenlos registrieren
Aber seltsam ist es schon das ein Python Script auf 2 (nicht Windows) Kisten nicht geht und auf einem (Windows) tut.
Wo nun mal TwinCat für "Total Windows Control and Automation Technology" steht.
Wenn ich mir z.B. das ADS Protokoll ansehe und du ja selbst meintest, komisch das sie für ihre längen die Intel-Byte-Order für hernehmen, anstatt konsequent die Netzwerk-Byte-Order frage ich mich schon ob Beckhoff selbst das schon mal fern der Windows Insel getestet hat.
Müssen sie ja an sich nicht. Ihre Systeme laufen ja durchweg auf Windows, sei es NT, 2000, ..... Win7 oder eben WinCE5.... .
Ich habe bereits funktionierende ADS Clients auf Debian und Ubuntu gesehen. Außerdem mehrfach ADS Client die auf Windows ohne TwinCAT funktionieren.
Hier ist eventuell eher die Frage ob sich die Socket-Implementierung auf Windows aquivalent zur Implementierung auf Mac oder Linux verhält? Bekanntlich ist der Socket ja vom Betriebssystem abhängig und dort gibt es kein Standard-Interface.
Auf weder meinem MacBook, noch der Linux-Büchse habe ich net ADS-Route eingetragen, kann ich ja auch nicht.
Läuft a) kein Windows drauf und daher b) kein ADS-Router.
Ich habe jedoch mein Macbook als ADS-Teilnehmer im ADS-Router des CX eingetragen.
Die Linux-Büchse heute früh noch nicht, werde ich im nächsten Schritt noch machen.
Das du lokal auf der Mac/Linux-System keien Route eintragen kannst ist klar. Aber auf dem TwinCAT-Zielsystem muss die Route vorhanden sein.
Aber unabhängig davon sollte ich auf dem ADS/AMS Logger / Viewer auf dem CX zumindest meinen Request als Paket eintrudeln sehen.
Dass der CX die Response dazu ggf. nicht los werden kann, weil er nicht weiß wohin sollte ein zweites Problem sein.
Oder sehe ich das falsch?
Wenn keine Route eingetragen ist, wird die TCP/IP-Verbindung abgelehnt und damit können die Requests auch nicht im ADS Logger zu sehen sein. Du siehst nur mit Wireshark/Ethereal den Aufbau einer TCP-Verbindung und das erste Command.
Dass drfunfrock's client geht scheint ja bewiesen zu sein. Sonst hätte er den Code (noch) nicht offengelegt.
Und bei mir geht's ja unter Windows auch. Da das ding in Python geschrieben ist, erwarte ich als Anwender erst mal keine Probleme, wenn ich das auf nem andern System ausführe. Zumal ja in Wireshark der ADS-Teil von beiden PCs aus identisch aus schaut.
Diese Aussage bestätigt nur, dass der Python Client auf Windows funktioniert. Das sagt aber nicht aus, dass der Client auf Mac, Linux oder sonstigen Systemen korrekt funktioniert und erst recht nicht ob du alles korrekt konfiguriert hast!
Wenn du Unterstüzung erhalten möchtest, solltest du vielleicht weniger bashen, als mehr Informationen liefern:
An den Logs von dir sieht man, dass direkt nach dem ersten Request die TCP-Connection vom Server Resettet wird.
Daher gehe ich davon aus, dass es ein Fehler in den Routen auf dem Zielsystem ist.
Hast du auch jedem System, bzw. bei jeder Route eine andere AMS Net ID verwendet?
Hast du die IP-Adresse und nicht den DNS-Namen für die Route eingetragen?
Wenn der ADS Router mehrere Routen mit gleicher AMS Net ID findet, kann er diese natürlich nicht eindeutig einer IP-Adresse zuordnen.
Du könntest ja mal deine Registry-Einträge auf dem Zielsystem posten...
Eigenartig finde ich auch, das bei mit der ADS-Interpreter von Wireshark zu deinen ADS Requests immer "Malformed Packet: AMS" ausgibt.
Außerdem sind die Frames bei Mac und Linux 104 Bytes lang, bei Windows ist der Frame nur 92 Bytes lang.
ADS Requests:
0000200000000 50778ca0101 2103 0aff020f0101 2103 01000400000000000000000001000000 Windows
0000200000000 50778ca0101 2103 c0a8b21b0101 2103 01000400000000000000000001000000 Mac
0000200000000 50778ca0101 2103 c0a8b21b0101 2103 01000400000000000000000001000000 Linux
Daran sehe ich doch schon, das die AMS Net ID von Mac und Linux gleich ist..... also kann es garnicht funktionieren.
Zuletzt bearbeitet: