Ich verwende einen kurzen (2 m) CAN-Bus mit ca. 20 Knoten. 1 Mbit / s Geschwindigkeit, PIC 18F2580s und 18F4580s mit MCP2551- Transceivern, 10 MHz (mit PLL bis 40 MHz) Quarzoszillatoren. Beide Enden sind mit 120 Ohm abgeschlossen. Der Abtastpunkt liegt bei 70%.
Die Knoten sind in drei Gruppen unterteilt, die jeweils von einer separaten, isolierten Stromversorgung gespeist werden. Die Erdung ist jedoch alle entlang des Busses gemeinsam.
Ich bekomme eine ganze Reihe von Nachrichtenfehlern, Framing, Bit Stuffing. Wenn man CANH und CANL auf einem Oszilloskop betrachtet, sieht alles wunderschön aus. Kein Klingeln, keine Reflexionen und das richtige Timing. Die Messung der Oszillatoren mit einem genauen Frequenzmesser zeigt nur eine geringe Abweichung.
Bisher konnte ich die Anzahl der Nachrichtenfehler nur reduzieren, indem ich das Erdungskabel entlang des Busses verstärkte, bis die GND-Differenz unter etwa 150 mV lag. Je weiter ich darüber hinaus gehe, desto mehr Fehler bekomme ich.
Warum? Laut Datenblatt MCP2551 sollten sie in der Lage sein, GND-Unterschiede bis zu 7 V zu bewältigen!
Verstehe ich etwas falsch?
Antworten:
Sind Sie sicher, dass die Nachrichtenfehler auf den CAN-Bus und nicht auf die Leistung des restlichen Knotens (der PIC-Schaltungen) zurückzuführen sind?
CAN ist differentiell, solange Sie die Gleichtaktspannungsgrenzen des Transceivers nicht überschreiten, sollten die relativen Erdungspegel keine Rolle spielen und es besteht keine Notwendigkeit, eine Erdungsverbindung mit den CAN-Signalen zu senden (möglicherweise eine Abschirmung, aber das ist eine andere Geschichte).
Wenn jedoch isolierte Netzteile vorhanden sind und die Erdungsverbindung vorhanden ist, können einige Erdstromschleifen auftreten, die Probleme mit dem Rest des Stromkreises verursachen.
quelle
Vielleicht müssen wir Ihre Schaltkreise ein wenig ändern. Was ich auf RS-232 und RS-422 gesehen habe könnte für CAN funktionieren:
Isolieren Sie die CAN-Transceiver optisch von den Karten. Versorgen Sie sie mit vollständig isolierten DC-DC-Wandlern. Dann schweben die Transceiver-Schaltkreise und sind hoffentlich näher beieinander.
Ich habe dies auch in einem Anwendungshinweis gesehen, in dem eine USB-Schnittstelle (nicht wirklich) "opto-isoliert" wurde, indem sie "außen" gesetzt wurde.
Ich werde interessiert beobachten, wie meine Roboterservokarten alle CAN sprechen und wir ziemlich große Ströme im Chassis bekommen, aber ich habe nicht versucht, die CAN-Schnittstelle im Zorn zu verwenden (wir haben sie in RS-232 mit einem verwendet altes proprietäres Protokoll).
quelle
Soweit ich weiß, kann die maximale Datenrate des CAN-Busses von 1 Mbit / s selbst bei einem kurzen Bus eine Herausforderung sein. Haben Sie versucht, die Datenrate auf 500 kbit / s zu senken, um festzustellen, wie sich dies auf Ihre Fehleranzahl auswirkt?
quelle