Beckhoff TwinCAT3: UDP senden zu Raspberry PI

SDGBalrog

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
aus dem Titel wird man wahrscheinlich schon vermuten, dass das Thema nur in einem Studiumsprojekt entstehen kann... :cautious::)
Und tatsächlich ist es so.... und somit auch klar, dass ich noch nicht viel mit Beckhoff Steuerungen gemacht habe. Auf jedem Fall habe ich das Problem, dass ich aus TwinCAT3 per UDP Daten an einen Raspi 4B senden sollte. Keine große Anforderungen, nichts speziell, das ist einfach mal Teil eines Projekts.
Auf dem Laptop ist TwinCAT3 XAE Express installiert, nur mit 7-Tages-Lizenz aktiviert, SPS selber ist ein CX5130, TF6130 ist installiert, alles lizenziert, Tc2_TcpIP Bibliothek bereits zum Projekt hinzugefügt.
Mein kleiner und einfacher Code will zuerst mal nur testweise einen String an den Raspi bzw. zum dort erstellten Python code schicken. Auf der Raspi Seite muss alles stimmen, denn vom Laptop per powershell Pakettest gemacht, kommt an am Raspi - der laufende Python Code zeigt es an.
Laptop, SPS und Raspi sind alle im gleichen, vom Internet getrennten LAN über einen 5Port Switch miteinander verbunden und finden/sehen sich auch gegenseitig - Raspi ist vom Beckhoff embedded Windows 10 auch pingbar. Im Auftrag wurde es so eingestellt, dass alle drei Geräte in diesem Netz eine (APIPA) 169.254.63.x Adresse haben.
Aus der tc2_TcpIp Bibliothek werden die Bausteine FB_SocketCreate und FB_SocketUdpSendTo verwendet - weil ich einfach nichts anderes dort zur Verfügung habe --> an dieser Stelle habe ich bereits die KI bemüht und verschiedene Antworten bekommen, dass es noch andere geben soll etc., bei mir gibt es aber nur die zwei und schluss.... Die tc2_TcpIp Bibliothek gab es zuerst in der Version 3.4.2 zum hinzufügen und nach späteren Recherchen, habe ich zusätzlich die Version 3.4.4 in der Bibliotheksuche gefunden. Kurzzeitig waren beide Versionen hinzugefügt, dann habe ich beide entfernt und nur die 3.4.4 hinzugefügt....

Meine eigentliche Frage, bevor ich weiter in die Fehlerbehandlung einsteige, ist, ob jemand bitte mir einen kurzen Code zeigen könnte, welche Variablen wie genau gesetzt werden müssen, wie stelle ich mein MAIN Programm genau auf, dass die Funktionsbausteine richtig funktionieren und ein Text oder Ziffernfolge (egal was) von TwinCAT erfolgreich ausgeschickt wird. Port und IP vom Raspi sind vorhanden und sind nicht das Problem....

Gleich vorab bitte um Entschuldigung für die vielleicht einfache Frage, aber bei mir scheitert es einfach, das Datenpaket zu versenden.
Zuerst gab es Fehlermeldungen mit nErrId: 6 --> invalid Parameter bzw. dass "nPort not defined in FB_SocketUdpSendTo", inzwischen kommt keine Fehlermeldung mehr, am Raspi kommt trotzdem nichts an.

Danke in Voraus für eure Hilfe und LG
Balrog
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah sorry, habe mich nur vertippt. Natürlich war FB_SocketUDPCreate gedacht.
Ich habe bereits geschafft, dass es keine Errors mehr gibt, weder beim SocketUdpCreate noch beim SocketUdpSendTo, trotzdem geht nichts raus.
Es gibt leider keine andere Versionen von der Bibliothek, daher weiß ich nicht, wo das Problem liegt.
Gibt es einen Unterschied, wenn ich TCP verwenden würde? Sind jemandem evtl. Probleme mit UDP aus der Bibliothek bekannt?
Kann man sonst das Beckhoff-eigene ADS Methode verwenden? Das ist ja auch IP basierend, soweit ich weiß.
Kann jemand bitte in einer der drei Kommunikationswege/Methoden einen kurzen Code geben, mit dem ich testen könnte?
(den Sample von Guga muss ich noch anschauen....)
 
Danke für den Tipp Oliver, zuerst muss ich aber noch andere Unklarheiten klären:
TwinCAT3 XAE ist auf meinem Laptop installiert und dort drinnen ist ja der CX5130 eingebunden.
--> muss TF6130 nicht nur auf dem Laptop, sondern auch auf dem CX Betriebssystem installiert werden? Wahrscheinlich schon, nehme ich jetzt mal an....
Und die AMS Net ID: welche muss man für die gesamte Verbindung angeben, die vom CX oder die vom Laptop? Oder beide?
Dafür habe ich nämlich bisher nirgendwo eine Antwort gefunden... (vielleicht suche ich falsch...)
Im Twincat muss dann noch die Route zum Python (Raspi) angegeben werden + CX reboot!
Und stört es evtl. TwinCAT, wenn dort mehrere Routes angegeben sind - wahrscheinlich aus früheren Projekten?
 
Die TF6130 muss am Cx installiert werden. Am Funktionsbaustein für die Kommunikation musst du die netid vom cx angeben.
Das ist meist nicht nötig und es reicht '', die NetID ist nur notwendig, wenn die Kommunikation von einem anderen Rechner erfolgt. Soll das Ganze auf dem Rechner laufen auf dem auch das SPS-Programm läuft reicht erwähntes ''.
 
Zuletzt bearbeitet:
Hmm, ich glaube, das sollte nun erledigt sein. Da der CX mit einem Raspberry Pi kommunizieren muss, muss die Route auch auf dem Raspi im Python Code für pyads hinterlegt werden. Nach viel Sucherei und Rumprobieren habe ich es einrichten können. Route sind sowohl im TwinCAT als auch im Raspi-Python abgelegt und die Kommunikation scheint zu funktionieren. Am Ende ist aus der UDP Übertragung eine ADS Kommunikation geworden. Betreffend Latenz ist es vielleicht ein wenig langsamer, aber hoffentlich wirklich nur ein wenig...

Ich glaube, dieses Topic kann abgeschlossen werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Latenz hängt maßgeblich vom Betriebssystem ab und welche Laufzeit-Unterschiede es da zwischen UDP und TCP Stack gibt.
Ansonsten macht es keinen Unterschied ob du per ADS kommunizierst oder per UDP.

Auf der CX Sender-Seite hast du somit nur über die Wahl des Betriebssystem = Image Einfluss.
Bei Windoof sage ich: macht quasi keinen Unterschied ob TCP oder UDP. Und CE-Betriebssysteme sind allgemein etwas schnarchiger.
Bei Linux: UDP ist schneller.
Wir reden hier von Größenordnungen von z.B. 4 msec oder eben nur 2ms (ohne Gewähr!!!!!)
 
Zurück
Oben