Hallo CAN-Fans & -Gegner, vor kurzem gab's hier¹ nebenan eine Werbeveranstaltung von Peter D. (peda) für CAN statt RS-485. Blöderweise habe ich auch noch einen netten Transceiver gefunden, LTC2875. Bis dahin hatte ich CAN total verweigert, jetzt würde ich gerne mal mit einer etwas extremen RS-422 Anwendung vergleichen. Es gibt 10 Voll-Duplex Punkt-zu-Punkt Verbindungen. Multi-Master ist also kein Problem und wird auch genutzt. Die Daten kommen mit 115200Baud in kleinen Päckchen, max. 12 Byte netto, max. 150 pro Sekunde Grundlast + noch kürzere Messages bei Bedarf, mit höherer Priorität. Von daher passt CAN wie Ar$$$ auf Eimer, das geht auf einem einzigen Bus mit 125kHz und 2 Leiterbahnen statt 40(!) für RS-422. Die längste Verbindung ist 300mm (in Worten: 0.3 Meter) auf einer Backplane, deshalb gibt es keine Abschlusswiderstände, sondern 250kBit-Transceiver. Die brauchen weniger als 1mA, also ist CAN selbst mit dem LTC2875 klar im Nachteil. Vor allem, weil die Stromaufnahme um 50mA mit 125kHz schwankt. Der typische 100nF pro Transceiver nützt da garnichts, der typische LDO kann das nicht ausregeln, besonders, wenn die restliche Schaltung mit 10mA auskommt. Wie macht man das? Ein eigener LDO + 100n + 2u2 + 68u Tantal? Ein spezieller Spannungsregler? Jetzt kommen wir endlich zum Betreff. In der SLLA279A schreibt TI, dass CAN-Teilnehmer einen Mindestabstand einhalten sollten (oder müssen?). Da bin ich mit meinen 25.4mm von Node zu Node um ein bis zwei Größenordnungen drunter. Andererseits ist die Gesamtausdehnung auch um den Faktor 1000 kleiner. Überhaupt ist bei CAN immer nur von Metern bis Kilometern die Rede, das hilft mir auf einer Backplane garnichts. Genauso geht es bei den 120 Ohm Widerständen immer um Kabel und deren Impedanz, das sieht doch auf einer Backplane ganz anders aus? Das Saturn Toolkit sagt mir für breite Leiterbahnen auf einer 2-lagigen Platine 90 Ohm, 155 Ohm differential, aber gilt das überhaupt noch bei 2.54mm Abstand? Und braucht man dann 91 oder 160 Ohm Widerstände? Und was passiert, wenn links und rechts neben den beiden Bahnen wieder eine Kupferfläche kommt? Kann man diese Daten-Leiterbahnen EMV-mäßig noch besser gestalten? Verdrillen und schirmen wie im Kabel geht ja nicht. 4 Lagen scheinen mir doch etwas übertrieben, wenn man DC-mäßig mit einer Kupferlage auskommt. Außerdem würde die Impedanz innen nur niedriger und noch ungenauer? Oft sieht man eine stromkompensierte Drossel. Die ist doch überflüssig, wenn die Treiber schon Slew Rate Begrenzung machen? Es geht bei CAN immer nur um maximale Geschwindigkeit auf langen Kabeln, ist meine Anwendung völlig unrealistisch? Zum Beispiel die Lage des Samplepoint. Jeder legt den (fast) ganz ans Ende und damit bleibt nur 1 Quantum um Unterschiede in der Taktfrequenz zu kompensieren und dann braucht man einen Quarz. Der ist für RS-422 überflüssig. Für meine kurze Verbindung würde ich das Bit doch eher so ähnlich unterteilen: 1 Sync, 1 Propagation, 7 Phase1, 7 Phase2 und könnte dann auch ohne Quarz auskommen? Traditionell kann ein Bus-Teilnehmer den ganzen Bus blockieren und dann hilft nur alle der Reihe nach ausstecken. Bei Punkt-zu-Punkt Verbindungen kann die übergeordnete Steuerung per Time-Out den Fehler eingrenzen. Bei CAN funktioniert das genauso, weil sich der Transceiver nach 4ms abschaltet -- solange er nicht selbst defekt ist und auch nur bei einfachen statischen Fehlern. Der uC kann den Bus trotzdem blockieren, er muss nur in regelmäßigem Abstand ein einziges Bit senden. Die Fehlerbehandlung der CAN-Controller sorgt dann für einen Totalausfall. Na gut, das ist wohl unwahrscheinlich genug. TLDR: ein CAN-Bus statt zehn Punkt-zu-Punkt Verbindungen würde jede Menge Hardware sparen, aber doch nicht so viel, wie man zunächst glaubt. Und es gibt ein paar ganz neue Probleme, die in Werbeveranstaltungen nicht erwähnt werden. 1) Beitrag "Re: RS485 galvanische Trennung?"
Bauform B. schrieb: > In der SLLA279A schreibt TI, dass CAN-Teilnehmer einen Mindestabstand > einhalten sollten (oder müssen?). ... wenn einer der Knoten 200m weit weg ist:
1 | and the first node is connected through an additional 200m of Belden3105A twisted-pair cable to another node and terminated |
Bei deinem 1000 mal kompakteren Aufbau wirst du solche schnarchlangsamen Reflexionen nicht finden können.
Mindestabstände bei CAN einhalten wäre mir neu, allerdings würde ich immer mindestens einen Abschlusswiderstand platzieren. Der dient nämlich nicht nur als reiner Abschlusswiderstand sondern gewissermaßen auch als Arbeitswiderstand für die Endstufe im Transceiver. Wenn das völlig hochohmig aufgebaut ist sehen die Signale sehr bescheiden aus, auch bei kurzen Abständen - gerade bei höheren Baudraten. Die Aussage wird gleich in den Folgekommentaren zerrissen werden aber ihn einfach drauf und fertig.
H. schrieb: > Mindestabstände bei CAN einhalten wäre mir neu, allerdings würde ich > immer mindestens einen Abschlusswiderstand platzieren. Der dient nämlich > nicht nur als reiner Abschlusswiderstand sondern gewissermaßen auch als > Arbeitswiderstand für die Endstufe im Transceiver. Wenn das völlig > hochohmig aufgebaut ist sehen die Signale sehr bescheiden aus, auch bei > kurzen Abständen - gerade bei höheren Baudraten. Richtig, denn CAN arbeitet mit differentiellen Open Collector Ausgängen! Dadurch ergibt sich erst der dominante und rezessive Pegel!
Bauform B. schrieb: > Es gibt 10 Voll-Duplex Punkt-zu-Punkt Verbindungen. Multi-Master ist > also kein Problem und wird auch genutzt. Die Daten kommen mit 115200Baud > in kleinen Päckchen, max. 12 Byte netto, max. 150 pro Sekunde Grundlast > + noch kürzere Messages bei Bedarf, mit höherer Priorität. Von daher > passt CAN wie Ar$$$ auf Eimer, das geht auf einem einzigen Bus mit > 125kHz und 2 Leiterbahnen statt 40(!) für RS-422. Sieht so aus. > Die längste Verbindung ist 300mm (in Worten: 0.3 Meter) auf einer > Backplane, deshalb gibt es keine Abschlusswiderstände, sondern > 250kBit-Transceiver. Die brauchen weniger als 1mA, also ist CAN selbst > mit dem LTC2875 klar im Nachteil. Vor allem, weil die Stromaufnahme um > 50mA mit 125kHz schwankt. Der typische 100nF pro Transceiver nützt da > garnichts, der typische LDO kann das nicht ausregeln, besonders, wenn > die restliche Schaltung mit 10mA auskommt. Wie macht man das? Ein > eigener LDO + 100n + 2u2 + 68u Tantal? Ein spezieller Spannungsregler? Ganz einfach, den Tranceiver weglassen und nur mit dem CAN-Controller und Open Drain arbeiten! Spart Teile und massig Strom! > Jetzt kommen wir endlich zum Betreff. In der SLLA279A schreibt TI, dass > CAN-Teilnehmer einen Mindestabstand einhalten sollten (oder müssen?). Da > bin ich mit meinen 25.4mm von Node zu Node um ein bis zwei > Größenordnungen drunter. Andererseits ist die Gesamtausdehnung auch um > den Faktor 1000 kleiner. Überhaupt ist bei CAN immer nur von Metern bis > Kilometern die Rede, das hilft mir auf einer Backplane garnichts. CAN braucht AFAIK keinen Mindestabstand, bestenfall einen Maximalabstand, abhängig von der Baudrate. > Genauso geht es bei den 120 Ohm Widerständen immer um Kabel und deren > Impedanz, das sieht doch auf einer Backplane ganz anders aus? Das Saturn > Toolkit sagt mir für breite Leiterbahnen auf einer 2-lagigen Platine 90 > Ohm, 155 Ohm differential, aber gilt das überhaupt noch bei 2.54mm > Abstand? Und braucht man dann 91 oder 160 Ohm Widerstände? Und was > passiert, wenn links und rechts neben den beiden Bahnen wieder eine > Kupferfläche kommt? Bei kurzen Leitungen und großen Anstiegszeiten braucht es keine 120 Ohm Wellenwiderstand auf den Leitungen. > Kann man diese Daten-Leiterbahnen EMV-mäßig noch besser gestalten? Wozu? Ein coplanare Leitung ist OK. > Verdrillen und schirmen wie im Kabel geht ja nicht. 4 Lagen scheinen mir > doch etwas übertrieben, wenn man DC-mäßig mit einer Kupferlage > auskommt. Außerdem würde die Impedanz innen nur niedriger und noch > ungenauer? Oft sieht man eine stromkompensierte Drossel. Die ist doch > überflüssig, wenn die Treiber schon Slew Rate Begrenzung machen? Man braucht keine Gleichtaktdrosseln, wenn man auf einer Backplane bleibt. > Es geht bei CAN immer nur um maximale Geschwindigkeit auf langen Kabeln, > ist meine Anwendung völlig unrealistisch? Nein. > Zum Beispiel die Lage des > Samplepoint. Jeder legt den (fast) ganz ans Ende und damit bleibt nur 1 > Quantum um Unterschiede in der Taktfrequenz zu kompensieren Die sind minimal, weil man meist eher mit Quarzen als Taktquelle arbeitet. > und dann > braucht man einen Quarz. Der ist für RS-422 überflüssig. Stimmt so nicht. RS-422 ist nur die physikalische Schicht, die sagt nix über deinen UART aus. > Die Fehlerbehandlung der CAN-Controller sorgt dann für einen > Totalausfall. Na gut, das ist wohl unwahrscheinlich genug. Da der Kram millardenfach in Autos und Automatisierung verbaut ist, scheint dieses Problem lösbar zu sein. > TLDR: ein CAN-Bus statt zehn Punkt-zu-Punkt Verbindungen würde jede > Menge Hardware sparen, aber doch nicht so viel, wie man zunächst glaubt. > Und es gibt ein paar ganz neue Probleme, die in Werbeveranstaltungen > nicht erwähnt werden. There is no such thing as free lunch.
H. schrieb: > Mindestabstände bei CAN einhalten wäre mir neu, allerdings würde ich > immer mindestens einen Abschlusswiderstand platzieren. Der dient nämlich > nicht nur als reiner Abschlusswiderstand sondern gewissermaßen auch als > Arbeitswiderstand für die Endstufe im Transceiver. Wenn das völlig > hochohmig aufgebaut ist sehen die Signale sehr bescheiden aus, auch bei > kurzen Abständen - gerade bei höheren Baudraten. Die Aussage wird gleich > in den Folgekommentaren zerrissen werden aber ihn einfach drauf und > fertig. Leider - Weil heute jeder glaubt nur weil der Bus irgendwie im Labor läuft ist schon alles richtig :(
Bauform B. schrieb: > Genauso geht es bei den 120 Ohm Widerständen immer um Kabel und deren > Impedanz, das sieht doch auf einer Backplane ganz anders aus? Auf Backplanes sind 'normale' Logik-Signale üblich, gerne mit möglichst kleiner Spannung. Wenn du differenzielle Signale willst, nimm M-LVDS. Siehe auch "Comparing Bus Solutions": https://www.ti.com/lit/pdf/slla067
Bauform B. schrieb: > Hallo CAN-Fans & -Gegner, > > vor kurzem gab's hier¹ nebenan eine Werbeveranstaltung von Peter D. > (peda) für CAN statt RS-485. Hallo Belchen Beitrag meinst du hier?
In einem Gerät benutze ich CAN auf der Backplane. Ein 120R sitzt auf dem Master, der andere am Ende der Backplane. In einem anderen Gerät mit Hochspannung wird der CAN-Bus über Flachkabel an bis zu 16 Slaves verteilt. Da sitzt nur ein 120R auf dem Master, d.h. der 2. Abschlußwiderstand fehlt. Transceiver sind noch die alten PCA82C251T. Für die auf HV floatenden Slaves erfolgt die galvanische Trennung des CAN über OPI1266. Der ADM3054 ist lt. Datenblatt nur für 846V zugelassen, ich brauche aber 4000V Isolation.
Peter D. schrieb: > Transceiver sind noch die alten PCA82C251T. > Für die auf HV floatenden Slaves erfolgt die galvanische Trennung des > CAN über OPI1266. Der ADM3054 ist lt. Datenblatt nur für 846V > zugelassen, ich brauche aber 4000V Isolation. Klingt sehr interessant. Mit welchen Baudraten arbeitest du in diesen Projekten? Welche Mikrocontroller verwendest du wenn du Can brauchst? Verwendest du auch höhere Protokolle wie CanOpen? Danke für die Infos
Wegen der Optokoppler benutzen wir nur 250kBit. Das Projekt ist schon recht alt und hat mehrere Redesigns hinter sich: - Infineon C505CA mit externem Flash - Temic T89C51CC01 - AT90CAN128 Jeweils mit Bootloader über CAN. Das Protokoll ist teilweise DeviceNet.
Peter D. schrieb: > - AT90CAN128 Peter D. schrieb: > Das Protokoll ist teilweise DeviceNet. Hast du DeviceNet selbst geschrieben oder einen Stack gekauft? Den AT90CAN128 habe ich auch öfter mit Can Open betrieben. Verwende jetzt aber den STM32....hat mehr von allem ist aber auch sehr viel aufwändiger......
Hansjörg schrieb: > Hast du DeviceNet selbst geschrieben oder einen Stack gekauft? Befriedige bitte meine Neugierde;)
Hansjörg schrieb: > Den AT90CAN128 habe ich auch öfter mit Can Open betrieben. [Besserwisser] Die offizielle Schreibweise ist CANopen. https://www.can-cia.org/canopen/ [/Besserwisser]
Hansjörg schrieb: > Hast du DeviceNet selbst geschrieben oder einen Stack gekauft? Hat ein Kollege geschrieben, um Druckmeßköpfe auszulesen.
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.