Forum: Mikrocontroller und Digitale Elektronik Reverse-engineer CANopen vom Roboter


von O. P. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Ich versuche gerade einen Roboter via CANopen zu steuern. Den Motor kann 
ich schon mal ein- und ausschalten. Jedoch bewegen die Achsen überhaupt 
nicht.
Folgendes habe ich bereits gemacht :

1. Um den Roboter bewegen zu können, muss ich den Button A und Joystick 
in eine Richtung bewegen.
Zunächst habe ich den Button A gedrückt und geguckt welcher CAN id 
seinen Wert ändert : 181h änderte sich auf 0A 00 09 00 00 00 00 FB.
Danach das Joystick nach rechts bewegt, dann hat 281h seinen Wert auf 00 
00 00 FA 6F BD 00 FB.

2. Nun habe ich versucht den Roboter ohnen meinen Remote Controller zu 
bewegen, indem ich zunächst 0A 00 09 00 00 00 00 FB nahc 181h sende und 
00 00 00 FA 6F BD 00 FB nach 281h.

3. Keine Reaktion vom Roboter.

Habe ich hier etwas vergessen ?

von stm32 (Gast)


Lesenswert?

181h und 281h sind TxPDOs...sprich Nachrichten ausgehend vom Roboter.
Wenn du den Roboter füttern möchtest, sind 201h, 301h, 401 interessant.
Da ich die 80h sehe, ist wohl auch SYNC aktiv. Dann musst du nach dem 
absenden deiner RxPDOs auch die SYNC abschicken.

Nutze besser mal die trace Funktion von CanView um wirklich alle 
Nachrichten zu sehen.

von O. P. (Gast)


Angehängte Dateien:

Lesenswert?

Danke für das Tipp. Habe das nochmal mit RxTDO und Trace ausprobiert, 
jedoch keine Reaktion. Nach dem ich den Roboter mit meinem Joystick 
bewegt, konnte ich
eigentlich nur an einem RxTDO(301h) Traffic feststellen (siehe 
catched.png). Dieses Message habe ich dem 301h gesendet, diesmal mit 
Sync (siehe transmitted.png).

Was ich jedoch auf dem Tracefenster feststellen konnte war, dass 
zwischen meine Transmissionen immer wieder jede Menge Rx Traffics 
auftauchen, siehe trace_after_transmission.png. Ist das vielleicht der 
Grund, warum meine Transmission ignoriert wird?

von stm32 (Gast)


Lesenswert?

Im Moment tappst du noch völlig im Dunkeln. Dein Ziel ist es doch zu 
verstehen, was sich hinter den PDOs verbirgt und dies dann auszunutzen.
Dafür brauchst du das PDO Mapping. Dies ist entweder gespeichert oder 
wird nach dem Einschalten vom Master in einer Init-Sequenz übergeben. 
Das könntest du mal überprüfen indem du eine Aufzeichnung beim Powerup 
machst.
Dafür solltest du aber schon etwas mehr über CanOpen wissen. Ich 
empfehle dir dich da einzulesen. Du solltest schon wissen welche 
Nachricht auf dem Bus welche Bedeutung hat.

Wenn da beim Powerup nichts ist, musst du weiterhin durch probieren 
herausfinden, welches Byte welche Bedeutung hat.

von O. P. (Gast)


Lesenswert?

Ich denke ich habe den Fehler gefunden. Der Fehler liegt wirklich an dem 
Remote controller. Mein Roboter ist jetzt so aufgebaut, dass ich ihn nur 
über meinen Remote-Controller einschalten kann, aber dadurch sendet der 
Remote Controller auch CAN Messages die ganze Zeit.

Gibt es eine Möglichkeit diese Messages zu blockieren? Am liebsten nicht 
die ganze Messages vom Remote-Controller, sondern nur ein paar, damit 
ich den Notausschalter noch drin habe.

von guest (Gast)


Lesenswert?

J. L. schrieb:
> Gibt es eine Möglichkeit diese Messages zu blockieren? Am liebsten nicht
> die ganze Messages vom Remote-Controller, sondern nur ein paar, damit
> ich den Notausschalter noch drin habe.

Bau ein Gateway dazwischen.

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.