Hallo an alle, aktuell versuche ich ein Protokoll zu entziffern, komme aber leider nicht weiter. Es geht um eine Verbindung zwischen einem Controller und einem Motorsteuergerät. Der Controller kann nur Befehle für vorwärts beschleunigen, rückwärts beschleunigen und "nichts tun" geben. Die Verbindung zwischen beiden Geräten ist über CAN-Transceiver hergestellt, ich glaube aber nicht das CAN genutzt wird. Der Controller ist ein PIC Microcontroller, bei dem Motorsteuergerät lässt es sich leider nicht herausfinden. Im Anhang mal drei Mitschnitte, die ich mittels einem Saleae Logic 8 erstellt habe, hinter einem CAN-Transceiver. Jeweils einmal im Ruhezustand, einmal vorwärts beschleunigend und einmal rückwärts beschleunigend. Ich würde fast auf OneWire tippen, aber leider passt das nicht 100% und ich konnte damit auch nicht das Motorgerät ansteuern. Über Tipps wäre ich sehr dankbar! Um etwas motivieren kann derjenige, der den hilfreichsten Tipp gibt, von mir ein Raspberry Pi Modell B mit Kühlkörper, *SD-Card und Gehäuse* bekommen, falls er es will, natürlich kostenlos inkl. Versand ;) Viele Grüße Julian
:
Bearbeitet durch User
Spannend! Warum nimmst Du an, dass es kein CAN ist? Hat der PIC CAN eingebaut? Ist der Transceiver am PIC an Pins angeschlossen, auf die CAN_TX und CAN_RX gelegt werden kann?
Konrad schrieb: > Warum nimmst Du an, dass es kein CAN ist? Zum einen findet der "CAN-Analyzer" in Saleae Logic egal bei welcher Baudrate keine gültigen CAN-Pakete, zum anderen gibt es bei Richtung 1 jede Millisekunde einen 4µs langen "Impuls" (siehe Anhang). Das spricht meiner Meinung nach gegen CAN und für was "selbstgebasteltes" oder selbst implementiertes. Womit der CAN-Transceiver genau verbunden ist kann ich leider nicht sagen, ich werde morgen versuchen das ganze nachzuvollziehen, bisher war das aber nicht sehr erfolgreich. Das Problem ist, dass das ganze auf Lochraster mit SMD aufgebaut ist und folglich sehr fragile ist, und wenn die Platine hops geht hab ich gar kein Gerät mehr das ein funktionierendes "Signal" sendet.
:
Bearbeitet durch User
Mach doch bitte ein Foto von der Platine. Gruß Jonas
Sieht mir aus wie async serial, 60000 baud, 8N0 (8-bit, no parity, no stop-bit) Hinter den kleinen Impulsen vermute ich eher eine fehlerhafte Messung. Kannst du die Schaltschwelle etwas höher einstellen?
:
Bearbeitet durch User
Eine Message scheint immer aus 5 Bytes zu bestehen, das erste Byte ist immer 0x00 (ich nenne es mal "Sync-Byte"), und dann folgen 4 Datenbytes. Die "errors" werden hier angezeigt, da der Salea-Decoder nicht mit 0 Stoppbits arbeiten kann (der Decoder meckert hier also fehlerhafte Stopp-Bits an, ich nehme daher an, dass deine Hardware einfach ohne Stopp-Bit arbeitet).
:
Bearbeitet durch User
Joe F. schrieb: > ich nehme daher an, dass deine Hardware einfach ohne > Stopp-Bit arbeitet). Das wird doch Absicht sein, es gibt doch so einige Protokolle, die mit einem BREAK arbeiten, d.h. ein bewusste Überschreitung des normalen Frames, meist ein Nullbyte. Damit kann man eine klare Synchronisation erreichen, Framingerror UND empfangenes Byte = 0 bedeutet Sync.
Jonas G. schrieb: > Mach doch bitte ein Foto von der Platine. > > Gruß Jonas Kann ich leider erst morgen Abend nachreichen, mach ich aber dann, falls noch nötig. Joe F. schrieb: > Sieht mir aus wie async serial, 60000 baud, 8N0 (8-bit, no parity, no > stop-bit) Alles klar, danke für die konkrete Angebe, das werde ich auf jeden Fall mal testen! :) Wobei mir die Wahl der Parameter etwas seltsam vorkommt, aber gut, wer weiß wer da alles vorher dran rumgepfuscht hat... Joe F. schrieb: > Hinter den kleinen Impulsen vermute ich eher eine fehlerhafte Messung. > Kannst du die Schaltschwelle etwas höher einstellen? Leider nein, aber die Impulse konnt ich auch auf dem Oszi sehen von daher scheinen die wirklich "irgendwie" vorhanden zu sein, aber ich sehe sie auch eher als "Störimpulse" an
Ich möchte mich übrigens nicht um den Raspberry Pi bewerben. Wer also noch weitere hilfreiche Ideen hat, nur zu ;-)
Joe F. schrieb: > Ich möchte mich übrigens nicht um den Raspberry Pi bewerben. > Wer also noch weitere hilfreiche Ideen hat, nur zu ;-) So wie es aussieht geht es auch weiter, scheinbar ist es doch CAN. Es handelt sich um einen PIC18F248 mit 16Mhz Quarz. Soweit ich das beurteilen kann ist der CAN-Transceiver zumindest mit der CAN Peripherie verbunden. Der PIC läuft mit 3,3V. Ich werde mal die Tage noch versuchen den PIC auszulesen, nur leider habe ich keinerlei Hardware für PIC Mikrocontroller. Von daher ist das Rennen für den RPi vielleicht noch offen, das mit den 60000 Baud asyn serial werde ich jetzt testen ;) Ach ja an die anonymen Tipp-Geber: gerne könnt ihr auch mitmachen, aber postet dann, falls ihr Interesse am PI habt, einfach den SHA256 Hash eines von euch erdachten (komplexen) Passwortes. So kann ich später nachprüfen das ihr auch wirklich der Tippgeber wart ;) Edit: ich hab mal noch ein Video gemacht, wie ich langsam "Gas" gebe. Dabei fällt mir auf, das der erste Teil des Signals konstant bleibt und sich nur der hintere Teil verändert. Besonders auffällig finde ich das es 3 "Längen" von "Impulsen" gibt (erwartet hätte ich 2): 15µs, 30µs und 50µs. Auch die Länge vom Signal "variiert", was ja gegen etwas serielles oder so sprechen sollte? Ich denke eher das die Länge der Impulse ausgewertet wird, nur wie ist mir noch ein Rätsel. Aber vielleicht könnt ihr mir ja da weiterhelfen und ich versuch mal noch an den Code im PIC zu kommen. Wenn ihr da Tipps für mich habt wäre das auch nicht schlecht, hab nur ein Labornetzteil und Arduinos, aber keinen speziellen PIC Brenner Hier der Link zum Video: http://public.julian-w.de/sonstiges/richtung2_oszi_1.mp4
:
Bearbeitet durch User
Julian W. schrieb: > scheinbar ist es doch CAN Jo, stimmt. Man muss den Decoder nur auf 60000 bit/s einstellen, dann kommt etwas Sinnvolles raus.
Joe F. schrieb: > Jo, stimmt. > Man muss den Decoder nur auf 60000 bit/s einstellen, dann kommt etwas > Sinnvolles raus. Vielen Dank, das sieht seeehr sinnvoll aus :D Das werde ich gleich mal mit einem Arduino testen ob das funktioniert. Wenn es das ist was soll dann mit dem RPi passieren? Will es hier ja nichts versprechen und dann nicht liefern hat sonst wer der hier eine Idee hinterlassen hat Interesse daran?
Julian W. schrieb: > was soll dann mit dem RPi passieren? Stelle es doch bei "Markt" als zu verschenken rein. Irgend ein Schüler oder Student wird sich sicher sehr darüber freuen.
Joe F. schrieb: > Stelle es doch bei "Markt" als zu verschenken rein. Irgend ein Schüler > oder Student wird sich sicher sehr darüber freuen. Alles klar werde ich heute Abend machen. Dein Tipp mit CAN 60kbits stimmt übrigens konnte das gerade stabil zum laufen bringen :) Kleine Frage wie genau kamst du auf die 60kbits? Geraten? Probiert? Oder irgendwie vermessen?
1 / 15µs ? Man kann ja CAN laufen lassen wie man will, aber der nächste Standardwert wäre eigentlich 83,33 kbps gewesen.
Julian W. schrieb: > wie genau kamst du auf die 60kbits? Geraten? Probiert? Oder > irgendwie vermessen? Der Analyzer gibt dir da schon einen ersten Tip. Du suchst dir eine Stelle mit nach einzelnen Bits aussehenden Flankenwechseln. Wenn du da mit dem Cursor drübergehst, vermisst Logic die Bits für dich. Die Bitrate ist dann das doppelte der angezeigten Frequenz. Wenn du dann 60600 bit/s ausprobierst, siehst du, dass die bits noch nicht wirklich toll aligned sind. Der Rest ist dann raten, und 60000 erschien irgendwie logisch, und passt auch ganz gut.
Hallo Julian W. melde mich jetzt mal ganz frech für den RPi wenn du ihn an mich abgeben möchtest. Aber nur wenn keine anderen Ansprüche erhebt. Würde auch den Versand bezahlen. Danke Andi
Vielen Dank an Joe F. (easylife)! Den Trick werd ich bein nächsten mal auf jeden Fall nutzen um "Bitraten" zu raten ;) Hab das ganze jetzt auch erfolgreich in Betrieb genommen. Der lange Impuls vor der eigentlichen CAN Nachricht hatte keinerlei Einfluss, funktioniert Prima ohne. Da wurde ich wohl auf die falsche Fährte gelockt mit. Andreas O. schrieb: > melde mich jetzt mal ganz frech für den RPi wenn du ihn an mich abgeben > möchtest. Da Joe F. (easylife) das RPi "theroetisch" gehört und es verlosen/verschenken will, werde ich es im Markt Forum anbieten. Nur wie ich es genau vergebe weiß ich noch nicht, vermutlich ein 24h Zeitfenster und dann werde ich mir noch eine (für User überprüfbare) Zufallsquelle zur Ziehung des Gewinner Beitrags suchen, irgendwie den Hash der Startseite oder sowas du wirst morgen einen Post im Markt finden ich werde ihn im Zweifel auch nochmal hier verlinken ;)
:
Bearbeitet durch User
Hier ist der Thread für das RPi: Beitrag "[Verlosung]RaspberryPi Modell B + Gehäuse - Deadline Freitag 22.01 - 18 Uhr"
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.