Hallo, anbei ist eine Verschaltung für mein CANbus. D1 steht für die Sensorwerte von dem Roboter. D4 ist dann der Radioreceiver für die Fernbedingung. Das Problem ist, dass CAN 1 direkt mit dem Radioreceiver CAN bus verbunden ist, so dass mein Message mit dem Default-Wert vom Radioreceiver die ganze Zeit überschrieben wird. Daher habe ich vor, die Pins 4 und 5 abzutrennen und mit dem CANbus vom meinem Laptop zu verbinden. Die GND Kabel würde ich dann an Pin 3 ankoppeln. Bevor ich die Platine kille, wollte ich eure Meinungen lesen.
Willst Du nach der Aktion 2 Busse haben, oder sind Dir die Werte der Fernbedienung egal ? Im ersten Fall, solltest Du noch einen Abschlusswiderstand und ein weiteren Port Deines Computerinterfaces anschliessen. Im zweiten Fall sollte das Abtrennen einfach so gehen. Die Fernbedienung merkt allerdings, dass sie alleine am "Bus" ist. Wenn sie dann nicht auf anderem Weg eine Sicherheitsabschaltung auslösen kann, läufts.
Du hast aber schon für D1, D4 und Laptop verschiedene CAN-IDs benutzt, oder?
npn schrieb: > Du hast aber schon für D1, D4 und Laptop verschiedene CAN-IDs benutzt, > oder? Die CAN-IDs will ich nicht berühren, sondern die in SDO gespeicherten Konfiguration weiter benutzen.
fop schrieb: > Willst Du nach der Aktion 2 Busse haben, oder sind Dir die Werte der > Fernbedienung egal ? > > Im ersten Fall, solltest Du noch einen Abschlusswiderstand und ein > weiteren Port Deines Computerinterfaces anschliessen. > > Im zweiten Fall sollte das Abtrennen einfach so gehen. Die Fernbedienung > merkt allerdings, dass sie alleine am "Bus" ist. Wenn sie dann nicht auf > anderem Weg eine Sicherheitsabschaltung auslösen kann, läufts. Mir sind die Werte der Fernbedinung egal, die Steuerung soll über mein Laptop geschehen. Ich habe allerdings das Konzept heute Nachmittag ausprobiert, aber als ich ein Message von meinem Laptop geschickt hatte, bekam ich Bus-off error. Da hatte ich allerdings die GND-Kabel nicht mit Pin 3 verbunden, sondern ich habe einfach nur die beide CAN_H und CAN_L.
> Da hatte ich allerdings die GND-Kabel nicht mit Pin 3 verbunden, sondern > ich habe einfach nur die beide CAN_H und CAN_L. Das muß trotzdem funktionieren. 2 Draht genügt. Hier sind zwar ein paar Praxisresistente anderer Ansicht, das kümmert aber die CAN-Funktion nicht: Beitrag "Datenübertragung über >100m"
Kannst du denn am Laptop erstmal in der Originalkonfiguration nur empfangen?
H.Joachim S. schrieb: > Kannst du denn am Laptop erstmal in der Originalkonfiguration nur > empfangen? Meinst du mit der Originalkonfiguration, wo ich mein CAN_H und CAN_L an 17.4B habe? Ja, da kann ich empfangen und kann auch senden, aber wie gesagt wird mein Message die ganze Zeit vom Remote controller überschrieben. Zum Beispiel: Ich sende die CAN Messages, dass die 1. Achse hoch fahren soll, aber das Joystick vom Remote controller hat sich ja nicht bewegt. Deswegen "blinkt" mein Message ganz schnell einmal und der Roboter wird dann mit dem Default value (da nix sich bewegt hat )vom Remote controller weiter gefuttert.
Dann ist das alles etwas mystisch... D.h. Verschaltung und Baudrate sind korrekt. Bus-off error heisst, dein CAN-Adapter bekommt kein Ack auf seine Sendung. Und das macht irgendwie keinen Sinn. Masse gehört natürlich dazu, auch wenn es oft auch ohne extra Masseverbindung funktioniert (die kommt dann über diverse Erdungen).
Wenn ich das richtig verstanden habe, möchte er die Fernbedienung mit seinem Laptop ersetzen. Also mit dem Laptop die SlaveID der Fernbedienung verwenden und den Roboter steuern. Aktuell sieht es aber wohl so aus, dass er alles noch manuell macht. Mit CanView und PeakAdapter.
Sendet dein CAN Adapter ein ACK? Ohne die Fernbedienung sieht der Roboter sonst ein Bus-off.
Beitrag #5584332 wurde von einem Moderator gelöscht.
Also Bus-off bekommen ich schonmal nicht. (Habe CAN_H und CAN_L vertauscht eingesteckt....ja, ich weiss...) Jedoch so bald ich versuche die Daten zu empfangen, bekomme ich Error, " SDO protocol time out ". Also er schafft nicht die SDOs zu initialisieren. Was könnte man in diesem Fall machen?
Ich kenne keinen CAN-Controller, der kein ack sendet.... Ansonsten habe ich das so verstanden: -normalerweise kommen die Kommandos von der Fernbedienung, werden über CAN zum Roboter übertragen und der angeschlossene PC-Adapter kann dieses auch mithören -setzt man diese Kommandos via PC-Adapter über den Bus ab, funktioniert das auch erstmal, werden aber direkt wieder durch die Fernbedienung überschrieben (das ist so erstmal völlig in Ordnung, bis eben auf das Problem, dass man kaum sinnvoll die gleiche ID von verschiedenen Knoten verwenden kann). Kannst ja mal zyklisch irgendwas auf einer im System nicht verwendeten ID senden und schauen, ob es da auch einen Busfehler gibt. -im letzten Zustand wurde die Fernbedienung entfernt, es gibt also nur noch PC-Adapter und Roboter. Und jetzt führt das Senden via PC zum Bus off. Ist das soweit richtig?
H.Joachim S. schrieb: > Kannst ja mal zyklisch irgendwas auf einer im System > nicht verwendeten ID senden und schauen, ob es da auch einen Busfehler > gibt. Funktioniert eigentlich, den Motor konnte ich über mein Laptop ein-und ausschalten. Die Position konnte ich eben nicht ändern, da dies dann sofort von der Fernbedingung überschrieben wird. Deswegen diese ganze Umstände... > -im letzten Zustand wurde die Fernbedienung entfernt, es gibt also nur > noch PC-Adapter und Roboter. Und jetzt führt das Senden via PC zum Bus > off. > > Ist das soweit richtig? Nein, kein Bus-off. Jedoch können die SDOs nicht initialisiert werden.
Kurze Frage am Rande... Welches Tool nutzt du, um die CAN Nachrichten auf dem Bus als CanOpen Klartext anzuzeigen? Also welches Tool ist das bei deinem Screenshot "11111111.png"??
J. L. schrieb: > Nein, kein Bus-off. Jedoch können die SDOs nicht initialisiert werden. In deinem Screenshot sehe ich folgende SlaveIDs: 1,4,5,6 un 30 Weißt du die Zuordnung dieser Slaves? Also zu wem die gehören?
stm32 schrieb: > J. L. schrieb: > In deinem Screenshot sehe ich folgende SlaveIDs: 1,4,5,6 un 30 > Weißt du die Zuordnung dieser Slaves? Also zu wem die gehören? Nein, ich habe nur den Motor gestartet und die Messages wurden automatisch gesendet. Weißt du wie man sowas mit reverse-engineering herausfindet. (Ich mache das ganze ohne Dokumentation) CANopen Magic Ultimate heißt das Programm vom Screenshot.
J. L. schrieb: > Nein, ich habe nur den Motor gestartet und die Messages wurden > automatisch gesendet. Weißt du wie man sowas mit reverse-engineering > herausfindet. (Ich mache das ganze ohne Dokumentation) Anfangen würde ich das ganz erstmal so, indem ich das System so wie es ist und funktioniert erstmal wiederherstelle. Dann würde ich mich auf den Bus hängen und nur mithorchen. Nun schalte ich das System komplett aus und starte anschließend einen Trace. Jetzt das System einschalten und ein paar grundlegende Funktionen ausführen. Nun den Trace abspeichern und analysieren. Ohne jegliche Doku bleibt dir dann nichts anderes übrig, als durch probieren Informationen zu gewinnen. Ja dann geht es Schritt für Schritt weiter. J. L. schrieb: > CANopen Magic Ultimate heißt das Programm vom Screenshot. Ui, das Ding ist aber teuer. Dann bleibe ich lieber bei der Handarbeit oder schreibe mir selbst so ein Tool...
stm32 schrieb: > Anfangen würde ich das ganz erstmal so, indem ich das System so wie es > ist und funktioniert erstmal wiederherstelle. Dann würde ich mich auf > den Bus hängen und nur mithorchen. Nun schalte ich das System komplett > aus und starte anschließend einen Trace. Jetzt das System einschalten > und ein paar grundlegende Funktionen ausführen. Nun den Trace > abspeichern und analysieren. > Ohne jegliche Doku bleibt dir dann nichts anderes übrig, als durch > probieren Informationen zu gewinnen. Ja dann geht es Schritt für Schritt > weiter. Das habe ich bereits getan, siehe ( https://drive.google.com/open?id=1Du4J27KykzrTtCquFt29uMa_qhpZP4Ov ). Diese Sequenz wird ausgeführt, wenn ich den Motor anmache. Ich habe dann diese Sequenze auch manuell eingegeben, jedoch ging der Motor nicht an, da wahrscheinlich diese Messages von der Fernbedinung überschrieben werden (wenn die Fernbedinung aus ist, sendet er "00...00"). Daher wollte ich ja die Messages von der Fernbedingung komplett zu entfernen. > Ui, das Ding ist aber teuer. Dann bleibe ich lieber bei der Handarbeit > oder schreibe mir selbst so ein Tool... Habe auch nicht gekauft :D Benutze nur die Trial-Version. Tja, es sieht so aus, dass ich dann tatsächlich mit Android und MCP2515 die PDO Messages von der Fernbedingung rausfiltern muss. Es sieht so aus, dass die Konfiguration der SDOs nur dann initialisiert werden können, wenn CANbus mit der Fernbedingung verbunden ist.
J. L. schrieb: > Es sieht so aus, dass die Konfiguration der SDOs nur dann initialisiert > werden können, wenn CANbus mit der Fernbedingung verbunden ist. Naja, das die steuerung gegen replay-Attacken gesichert ist, würde ich erstmal bezweifeln. Sieht die init-sequenz immer gleich aus? Wenn ja, klappt's egal von welchem sender, sofern die busphysik ok ist..
Da kann ich meinem Vorredner nur zustimmen. Zumindest den Heartbeat des Roboters solltest du sehen und dann sollte dieser auch ansprechbar sein. Also wenn ich mir den Trace so anschaue erkenne ich nur 3 Slaves, die auf dem Bus aktiv adressiert werden. Das sind die IDs 1 (vermutlich der Roboter) und 30 (vermutlich der Master hier, also die Fernbedienung) und 12 (???? wird einmalig im Trace über RxPDO adressiert). SlaveID 30 zeigt sich nur mit einem Heartbeat auf dem Bus und kann also vernachlässigt werden. Damit kann man doch schonmal anfangen. Weiter sieht man das PDO Mapping und das Laden der Default Parameter im Trace. An dieser Stelle würde ich anknüpfen.
Beitrag #5589426 wurde von einem Moderator gelöscht.
Die letzten Tagen habe ich mit diesem Projekt verbracht. Habe 2 MCP2515 CAN bus controller und ein Arduino Mega 2600 bestellt, um ein Gateway für Message-Filtering aufzubauen. Das Konzept sieht wie das angehängtes Bild aus. Klares Vorgehen : Ich lese vom Radio Receiver( gelbes Kasten ) die CAN Messages ein und filtere die PDO messages aus. Die gefilterten CAN messages werden dann dem CAN 1 weitergeleitet. Problem : Sobald ich die Terminals 4 und 5 trenne kann ich keine CAN Messages einlesen. Ich dachte D4 wäre für die Empfang der Fernbedinung-Signale zuständig und könnte sie modifizieren, bevor sie an CAN1 landen. Hat jemand vielleicht eine Idee, warum die Fernbedinung-Signale verschwinden, sobald ich die Terminals 4 und 5 trenne? Wenn die Terminals 4 und 5 nicht getrennt sind, kann ich sie ohne Probleme einlesen. Ich dachte mit dem Trennen der Terminals verhindere ich nur, dass die CAN Messages an CAN1 landen. Aber es scheint, dass die empfangene Signale nicht an dem Ende der getrennten Terminals 4 und 5 bleibe, sondern einfach verschwinden ?? Unten ist nochmal ein Auszug der Notationslist... D1 : Electronic unit, central unit for control system D4 : Radio Receiver
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.