Forum: Mikrocontroller und Digitale Elektronik Titel: CAN-Bus: ACK-Bit zeigt doppelte Differenz-Amplitude am Oszilloskop (Setup: Olimex ESP32 & Vic


von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Hallo zusammen,

ich experimentiere aktuell mit dem CAN-Bus, um die Protokoll-Physik im 
Detail zu verstehen.
Mein Testaufbau:

Knoten 1: Ein OLIMEX ESP32-EVB, das simulierte Batteriedaten 
(Pylontech-Format) sendet.
Knoten 2: Ein Victron Venus OS Gerät als Empfänger.
Verbindung: Ca. 30 cm CAT5-Kabel.
Terminierung: Beidseitig (am Venus reguläre 120 Ω, am Olimex testweise 
ein 100 Ω Widerstand, woraus sich ein statischer Bus-Widerstand von 
knapp 55 Ω ergibt).
Messung: Oszilloskop im reinen Akkubetrieb (kein Netzbezug), Tastkopf 
rein differenziell direkt zwischen CAN_H und CAN_L am 
Abschlusswiderstand geklemmt.
Das Phänomen:
Die Kommunikation läuft absolut fehlerfrei, alle Daten kommen im Venus 
OS an. Auf dem Oszilloskop (siehe angehängtes Bild mit 20 μs Zeitbasis) 
zeigt sich jedoch ein seltsamer Amplitudensprung:
Die normalen Daten- und ID-Bits (gesendet vom Olimex) haben einen 
differenziellen Hub von gut 1 V.
Exakt an der Stelle des ACK-Bits schießt die Amplitude als absolut 
sauberes, perfektes Rechteck auf den exakt doppelten Wert nach oben. Die 
Bit-Zeit wird sauber eingehalten.
Ein induktiver Spike oder eine Einstreuung scheidet aufgrund der 
perfekten Rechteckform und der zeitlichen Konstanz im Frame-Verlauf aus.
Wenn ich das rein theoretisch über das klassische Ersatzschaltbild 
(Parallelschaltung zweier identischer Treiber-Endstufen gegen die 55 Ω 
Buslast) durchrechne, dürfte sich die Differenzspannung durch die 
Innenwiderstands-Halbierung zwar leicht erhöhen, aber niemals 
verdoppeln.
Woher kommt dieser massive Amplitudensprung im ACK-Slot? Arbeitet der 
Transceiver auf dem Olimex eventuell intern auf 3,3 V-Basis und liefert 
daher einen geringeren Hub, während das Venus-Gerät im ACK-Slot mit 
einer harten 5 V-Industriestufe dagegenhält? Oder übersehe ich einen 
dynamischen Effekt im Widerstandsnetzwerk beim Umschalten der Treiber?
Ich werde als Nächstes noch mal beide Adern separat gegen GND messen, 
bin aber vorab auf eure fundierten Meinungen gespannt!
Viele Grüße
von Helmut -. (dc3yc)


Lesenswert?

Wo ist das angehängte Bild? Wie sieht die Differenz zwischen CanH und 
CanL aus (am Ausgang des Transceivers)? Nur die ist relevant.
: Bearbeitet durch User
von Frank O. (fop)


Lesenswert?

Mischverbau von High-Speed CAN und Low-Speed CAN Transceivern ?
von Rainer W. (rawi)


Lesenswert?

Karl-alfred R. schrieb:
> Messung: Oszilloskop im reinen Akkubetrieb (kein Netzbezug), Tastkopf
> rein differenziell direkt zwischen CAN_H und CAN_L am
> Abschlusswiderstand geklemmt.

Kapazitiv ist das Oszi trotzdem an den Rest der Welt angekoppelt.

An Stelle eines Romans könntest du einfach den relevanten Schaltplanteil 
zeigen (inkl. CAN-Bus Treiber).
von Uwe (uhi)


Lesenswert?

Ist normal, dass verschiedene Transceivertypen verschiedene dominante 
Pegel liefern. Im Zweifelsfall schauen, welche Transceiver drauf sind 
und die Datenblätter vergleichen.
von Frank K. (fchk)


Lesenswert?

Karl-alfred R. schrieb:

> Woher kommt dieser massive Amplitudensprung im ACK-Slot? Arbeitet der
> Transceiver auf dem Olimex eventuell intern auf 3,3 V-Basis und liefert
> daher einen geringeren Hub, während das Venus-Gerät im ACK-Slot mit
> einer harten 5 V-Industriestufe dagegenhält?

Schau doch einfach, was bestückt ist.

Reine 3.3V Transceiver können natürlich die 3.5V für CAN_H im dominanten 
Zustand nicht liefern. Die tricksen daher und liefern 3.0V an CAN_H und 
1.0V statt 1.5V an CAN_L, damit die Differenz weiterhin 2V beträgt. Ist 
zwar nicht normgerecht, funktioniert aber meistens. Wenn Du mischt, 
kann/wird es jedoch zu Sprüngen in den Amplituden der Teilsignale 
kommen. Das ist dann halt so. Wenn das zu Problemen führt, ersetze den 
Transceiver durch einen mit zwei Versorgungsspannungen wie MCP2562.

fchk
von Karl-alfred R. (karl-alfred_roemer)


Angehängte Dateien:

Lesenswert?

Hier das angehängte Bild. Ist irgendwie verschluckt worden. Ich hatte 
den Thread zweimal abgesendet und einmal wieder gelöscht.
von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Vielen Dank für Eure Antworten. Habe sie mir gerade noch mal genauer 
durchgelesen.

Mir war nicht klar, dass unterschiedliche Transceiver mit 
unterschiedlichen Spannungen arbeiten können. (bzw können ja, aber dass 
das erlaubt wäre)  Ich dachte, das wäre im Standard felsenfest 
festgelegt.
Das kann gut sein, dass der Olimex mit 3,3 V arbeitet und der Victron 
Venus mit 5 V. Tatsächlich habe ich auch ganze Datenpakete mit höherer 
Spannung gesehen. Das waren dann wahrscheinlich die Anfragen des Victron 
Venus an den Bus, und die Antworten mit der geringeren Amplitude kamen 
immer vom Olimex.
Und das ACK vom Victron direkt nach der Antwort vom Olimex sieht dann 
genau so aus wie auf dem Bild. Damit ist die Sache für mich physikalisch 
und schaltungstechnisch absolut geklärt. Solange das im Alltag so 
tolerant und fehlerfrei funktioniert, ist ja alles bestens.
: Bearbeitet durch User
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.