Titel: CAN-Bus: ACK-Bit zeigt doppelte Differenz-Amplitude am Oszilloskop (Setup: Olimex ESP32 & Vic

OP #8061586
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

#8061638
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

OP #8061689
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
#8062130
Lesenswert?

das ist normal, am Ende einer fehlerfreien Nachricht schalten alle empfangenden Steuergeräte gleichzeitig den Bus auf den dominanten Pegel, um den Empfang zu bestätigen. Da hierbei viele Transceiver-Endstufen parallel Strom auf die Busleitungen treiben, sinkt der Gesamtwiderstand der Treiber und der dominante Spannungspegel steigt oft sicht- und messbar an. Dieses Phänomen wird in der Praxis häufig als ACK-Bump oder ACK-Aufschlag bezeichnet.

Das kann man prima zum triggern benutzen, falls das Oszi nicht auf auf die Pause der EOF + IFS Bits triggern kann.

Umso mehr Teilnehmer am Bus hängen desto ausgeprägter ist diese Spitze.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren