Forum: Mikrocontroller und Digitale Elektronik Can Bus Störung Ecoflow Raspberry


von Hannes S. (gfifteen)



Lesenswert?

Hallo in die Runde,

Ich hab an andere Stelle vor einen Ecoflow Powerhub über den Canbus zu 
Nutzen/Auszulesen.

Da ich keine Kommunikation aufbauen konnte, (Seitens des Raspberry PI 
scheint alles in Ordnung) suche ich den Fehler im Ecoflow Gerät.

Ausgehend von der Hersteller Dokumentation, handelt es sich um einen 
Canbus nach J1939 Can Open mit 250kbit/s.

Da ich schon lange nichtmehr als Elektroniker tätig bin, habe ich etwas 
gebraucht um aus dem verstaubten Osziloskop (Hmeg HM204) ein Bild des 
Bus zu bekommen, was schlussendlich am Testaufbau nur mit dem PI und 
SPI-Can Adapter auch einwandfrei funktionierte. (siehe Bild).
Jeweils beidseitig mit 120 Ohm terminiert.
Jeweils mit einer 1:10 Testsonde auf CH1 und 2 gegen GND, eine 
Differenzsonde habe ich nicht.

Beim Ecoflow jedoch ist es schlicht unmöglich irgendetwas brauchbares 
auf dem Can zu sehen.
Ein Triggern ist fast nicht machbar, um ein Stanbild zu erreichen.
Für mich sieht es irgendwie so aus, als sei der Canbus von einem 
Sinusartigem Signal Überlagert, wodurch der Can Transceiver im PI sofort 
auf Error-Passive springt. Eigenartigerweise sieht man diesen Sinus auch 
bei völlig deaktiviertem Gerät, wenn man die t/div verkleinert. Hier 
kann ich aber eine Fehlbedienung nicht ausschließen.
Was kann eine solche Störung verursachen? Oder wird hier schlicht der 
Can Transceiver hin sein ?
Verwirrend finde ich den Can_GND der Laut Datenblatt auf Pin 3 des RJ45 
Steckers liegt.
Pin 1 Can_H,
Pin 2 Can_L

Pin 3 hat keinen Durchgang auf DC GND und auch nicht auf den Schirm des 
Kabels
Jedoch
PIN 6 DC GND
PIN 8 DC GND
PIN 5 HAt 1V
Pin 7 hat 3V
Laut Datenblatt sind aber nur PIN 1-3 überhaupt belegt.

https://manuals.ecoflow.com/us/product/power-link?lang=en_US
https://websiteoss.ecoflow.com/cms/upload/2024/11/13/EcoFlow%20J1939%20Protocol_V1.02_20241112_1731460673096.pdf

Das Fehlerhafte Bild mit der Störung fehlt leider, muss ich nochmal neu 
machen. Das Bild auf dem sich die Pegel sowohl Auf Can High, als auch 
LOW gegenläufig verhalten, ist bei zusammengebautem System, hier Fällt 
diese Sinusartige Schwingung nicht auf, jedoch erschließt sich mir das 
Signal überhaupt nicht.

: Bearbeitet durch User
von Uwe (uhi)


Lesenswert?

Das oberste Bild ist kein CAN. Bei CAN gibt es zwei Zustände auf dem 
Bus: "Rezessiv", die Differenzspannung ist Null, weil kein Teilnehmer 
Spannung anlegt und daher die Abschlusswiderstände die Differenz auf 0 
ziehen. Und "Dominant", wo mindestens 1 Teilnehmer den CANH hochzieht 
und gleichzeitig den CANL runter.

Verwirrend bei der Messung ist oft das Ground-Problem. CAN ist 
differentiell, d.h. ob der Ruhepegel auf 1V oder 5V liegt oder sogar 
schwankt, ist für den Transceiver egal. Innerhalb seiner Grenzen, also 
bei zB 100V wird das nicht mehr funktionieren.

Wenn du 1 oder 2V Sinus (zB 50Hz durch Netzeinkopplung) misst, und diese 
auf CANH und CANL identisch sind, ist alles normal.

von Hannes S. (gfifteen)


Lesenswert?

Morgen,

Doch das sollte ziehmlich sicher der Can sein, da ich in dem Bild nur am 
Can Port des Pi hänge und meine selbst gesendetes Signal darstelle. 
Jedoch habe ich keine Differenzsonde, Sonden nur zwei normale 1:10 und 
ich habe die y Achse auseinandergezogen.
Ich mache gleich nochmal neue Bilder, auch vom Rauschen.

Ich Versuche die Sinusartige Frequenz gleich mal zu ermitteln. Ich kann 
hier einen mess/Bedienfehler nicht ausschließen, was mich aber wundert 
ist, bei gleichen Einstellungen des Oszi, habe ich diesen Effekt beim PI 
nicht.
Die Testumgebung ist die gleiche (Wohnmobil)
Es war kein Netzanschluss vorhanden, und jegliche strahlende Periferie 
war abgeschaltet. (LTE Router/ WLAN etc.)
Der Ecoflow ist keine Klassische Powerstation, sondern für den 
Festeinbau vorgesehen und hat keinen integrierten, sondern externe 
Akkus. Versorgt würde das Multimeter nicht aus der Ecoflow sondern von 
extern.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Hannes S. schrieb:
> 5b031a33db1199ccb8373eb555840ccde3a5e3af_2_999x750.jpeg

Sind dies die Signal auf dem CAN-Bus?
Das sieht doch auf ersten Blick in Ordnung aus.

Hannes S. schrieb:
> Jedoch habe ich keine Differenzsonde, Sonden nur zwei normale 1:10 und
> ich habe die y Achse auseinandergezogen.

Die Sinusschwingung kannst du für die Betrachtung auf dem Oszi 
möglicherweise unterdrücken, indem du die Oszi-Eingänge auf AC-Kopplung 
schaltest, falls die Grenzfrequenz dann immer noch zu niedrig ist, mit 
einem zusätzlichen Hochpass. Das würde dich zwar den 
Gleichspannungsbezug kosten, aber du bist den Sinus erstmal los.
Zeig einmal ein Oszi-Bild, wo man den überlagerten Sinus sieht.

Andererseits ist eine Differenzsonde für so niederohmige Signale mit 
einem OP schnell aufgebaut.
https://ueba.elkonet.de/static/ueba/eoffline/sites/slt/0210153.htm

Die Frage, wo der Sinus her kommt, wäre das nächste Thema - aber alles 
der Reihe nach.

Hannes S. schrieb:
> Doch das sollte ziehmlich sicher der Can sein, da ich in dem Bild nur am
> Can Port des Pi hänge und meine selbst gesendetes Signal darstelle.

Bei CAN gibt es nur einen gemeinsamen Bus für alle, d.h. wenn du auf dem 
Bus misst, siehst du alles, egal wo du auf den Bus guckst. Meinst du mit 
"am Can Port des Pi" den CAN-Bus oder das Signal auf der anderen Seite 
des CAN-Transceivers?
Zeig doch einmal ein Blockschaltbild mit deinen Endgeräten, den 
CAN-Transceivern und dem Bus, aus dem ersichtlich ist, wo du genau 
misst.

: Bearbeitet durch User
von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:
> habe ich etwas
> gebraucht um aus dem verstaubten Osziloskop (Hmeg HM204) ein Bild des
> Bus zu bekommen

So ein 8 Euro USB-Logicanalyzer aus dem Bücherhaus zusammen mit der 
Software Sigrok würde dich schneller ans Ziel bringen. U.A. weil Sigrok 
auch Can decodieren kann.
Abgreifen am CAN-Transceiver auf dem Pi Hat, TXD (Pin1) und RXD (Pin4)
(Da kannst du natürlich auch mit dem Oszi dran)

Uwe

von Hannes S. (gfifteen)



Lesenswert?

Ich versteh es nicht, heute funktioniert alles.
Der Bus hat nicht wie vermutet 250k sondern 1Mbit\s

Was jedoch nicht verstehe, wo kommt dieser Sinus her ? (In der Tat 50Hz, 
Rückkopplung übers Oszi?)
Jetzt war er nur bei Stromlosen! (Keine Energiequelle angeschlossen) Auf 
dem Bus messbar.

Ich hänge mal mehrere Bilder an,
Diese zeigen Gerät aus und NICHT angeschlossen(kein Signal), Gerät aus 
(Sinus), Gerät an(kein Signal/rauschenden Oberwellen).
Und aktive Kommunikation.

Aber, warum sieht der Bus so komisch aus? Einstellungsfehler ?
Auf CanH und CanL, jeweils steigt und fällt eine Flanke gleichzeitig 
invers?

: Bearbeitet durch User
von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:

> Aber, warum sieht der Bus so komisch aus? Einstellungsfehler ?
> Auf CanH und CanL, jeweils steigt und fällt eine Flanke gleichzeitig
> invers?

Ja, invers. Differentielle (oder auch symmetrische) Übertragung. Wie 
beim guten alten Telefon.
https://de.wikipedia.org/wiki/Symmetrische_Signal%C3%BCbertragung

> Was jedoch nicht verstehe, wo kommt dieser Sinus her ? (In der Tat 50Hz,

CAN_H und CAN_L sind nicht auf Masse bezogen, hängen "in der Luft"
Der Sinus ist tatsächlich eingekoppelte Netzspannung. Macht aber nichts 
weil in beide Leiter, hoffentlich verdrillt, phasengleich eingekoppelt.

Um saubere Signale zu sehen kanst du, wie schon beschrieben, auf er 
"anderen Seite" eines CAN-Transeivers abgreifen. Da ist es dann aud 
Masse bezogen.
Mit dem analogen Oszi bekommst du aber keine Info, außer daß sich 
etwas tut, weil du nicht sinnvoll triggern kannst. Daher nochmal den 
Tip mit dem Billiglogicanalyzer.

Uwe

: Bearbeitet durch User
von Rainer W. (rawi)


Angehängte Dateien:

Lesenswert?

Hannes S. schrieb:
> Aber, warum sieht der Bus so komisch aus?

Was ist daran komisch?

> Einstellungsfehler ?

Kommt drauf an, was du meinst. Gleichspannungsmäßig sind deine beiden 
Kanäle gegeneinander verschoben. Der rezessive Pegel auf CAN_L und CAN_H 
ist gleich.

> Auf CanH und CanL, jeweils steigt und fällt eine Flanke gleichzeitig
> invers?
Ja, der CAN-Bus verwendet symmetrische Übertragung über seine beiden 
Datenleitungen.

: Bearbeitet durch User
von Hannes S. (gfifteen)


Lesenswert?

Ich bin mir nicht sicher, aber ich glaube wir reden aneinander vorbei.

Der Can ist sowohl auf den Can High als auch auf dem Can Low jeweils 
invers.

Ich kenne den Can so wie es auf deinem Bild ist, Low ist invers zu High, 
bzw umgekehrt. Aber nicht beides und jeweils.

Oder hat es damit zu tun das der Bus auf 1 Mbit läuft?

Die Y Achsen haben ich absichtlich auseinander geschoben um es besser zu 
sehen.

Woher kommt denn die Netzeinkopplung ?
Das Gerät ist völlig Stromlos ?
Weder der Wechselrichter ist aktiv, noch ist Netz angeschlossen, noch 
ist es überhaupt eingeschaltet ?
Oder Koppel das Oszi das aus seinem eigenen Netz ein?

Aktuell läuft es problemlos, sollte es nochmal kommen, dann versuchen 
ich es mit nem Logikanalyser.

Danke!

von Rainer W. (rawi)


Lesenswert?

Hannes S. schrieb:
> Woher kommt denn die Netzeinkopplung ?

Wo hast du die Masse von deinem Oszilloskop angeschlossen?

von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:

> Der Can ist sowohl auf den Can High als auch auf dem Can Low jeweils
> invers.

Dreh die Zeitbasis herunter bis die die einzelnen Bits tanzen siehst.
Mit der von dir gewählten Ablenkung siehst su viele Bits "übereinander" 
weil, auf welches Bit soll das Kino denn auch triggern?

> Woher kommt denn die Netzeinkopplung ?

Tip mal mit einem Finger fest auf die (nirgens angeschlossene) 
Tastspitze. Was siehst du?

Uwe

von Hannes S. (gfifteen)


Lesenswert?

Rainer W. schrieb:
> Hannes S. schrieb:
>> Woher kommt denn die Netzeinkopplung ?
>
> Wo hast du die Masse von deinem Oszilloskop angeschlossen?

Can GND

von Hannes S. (gfifteen)


Lesenswert?

Uwe B. schrieb:
> Hannes S. schrieb:
>
>> Der Can ist sowohl auf den Can High als auch auf dem Can Low jeweils
>> invers.
>
> Dreh die Zeitbasis herunter bis die die einzelnen Bits tanzen siehst.
> Mit der von dir gewählten Ablenkung siehst su viele Bits "übereinander"
> weil, auf welches Bit soll das Kino denn auch triggern?
>
>> Woher kommt denn die Netzeinkopplung ?
>
> Tip mal mit einem Finger fest auf die (nirgens angeschlossene)
> Tastspitze. Was siehst du?
>
> Uwe

OK, das ist logisch, also ist das oszi zu langsam. Bei 250kbit vom Pi 
ist es nahmlich einwandfrei sichtbar, siehe oben.

Uwe B. schrieb:
> Hannes S. schrieb:
>> Der Can ist sowohl auf den Can High als auch auf dem Can Low jeweils
>> invers.
>
> Dreh die Zeitbasis herunter bis die die einzelnen Bits tanzen siehst.
> Mit der von dir gewählten Ablenkung siehst su viele Bits "übereinander"
> weil, auf welches Bit soll das Kino denn auch triggern?
>> Woher kommt denn die Netzeinkopplung ?
>
> Tip mal mit einem Finger fest auf die (nirgens angeschlossene)
> Tastspitze. Was siehst du?
> Uwe

Blut :D

von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:
> Rainer W. schrieb:
>> Hannes S. schrieb:
>>> Woher kommt denn die Netzeinkopplung ?
>>
>> Wo hast du die Masse von deinem Oszilloskop angeschlossen?
>
> Can GND

Also völlig ohne Bezug zu den CAN-Signalen....

Uwe

von Hannes S. (gfifteen)


Lesenswert?

Uwe B. schrieb:
> Hannes S. schrieb:
>> Rainer W. schrieb:
>>> Hannes S. schrieb:
>>>> Woher kommt denn die Netzeinkopplung ?
>>>
>>> Wo hast du die Masse von deinem Oszilloskop angeschlossen?
>>
>> Can GND
>
> Also völlig ohne Bezug zu den CAN-Signalen....
>
> Uwe

Gibt's dazu noch eine Erklärung?

von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:
> OK, das ist logisch, also ist das oszi zu langsam.

Nein, die Zeitbasis ist zu schnell eingestellt, ein Bit ist fast die 
Hlfte deines Fensters.
Eine andere Dastellung (mit kleierer Zeitbasis) bekommst du mit den 
analogen Scope nicht hin.
Abhilfe wäre ein Triggersignal welches du mit dem Pi auf eine bestimmte 
Message generierst

Jetzt ist aber langsam gut %-(

Uwe

von Hannes S. (gfifteen)


Lesenswert?

Uwe B. schrieb:
> Hannes S. schrieb:
>> OK, das ist logisch, also ist das oszi zu langsam.
>
> Nein, die Zeitbasis ist zu schnell eingestellt, ein Bit ist fast die
> Hlfte deines Fensters.
> Eine andere Dastellung (mit kleierer Zeitbasis) bekommst du mit den
> analogen Scope nicht hin.
> Abhilfe wäre ein Triggersignal welches du mit dem Pi auf eine bestimmte
> Message generierst
>
> Jetzt ist aber langsam gut %-(
>
> Uwe

OK danke!
Kleiner kleiner kann das oszi nicht.

von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:
> Uwe B. schrieb:

>> Also völlig ohne Bezug zu den CAN-Signalen....

> Gibt's dazu noch eine Erklärung?

Ja, in dem von mir oben verlinkten Wikipedia-Artilel. Zum Beispiel.

Uwe

von Uwe B. (uwebre)


Lesenswert?

Hannes S. schrieb:
> Kleiner kleiner kann das oszi nicht.

Ächtz. Andesrum,längere Zeit. Dmit du mehere (viele) Bits auf den Schirm 
bekommst.

Uwe

von Rainer W. (rawi)


Lesenswert?

Uwe B. schrieb:
> Ja, in dem von mir oben verlinkten Wikipedia-Artilel. Zum Beispiel.

Kommst du dir besonders witzig vor?

Genauso gut hättest du schreiben können: "Im Internet. Zum Beispiel."

von Thomas F. (igel)


Lesenswert?

Uwe B. schrieb:
>> Can GND
>
> Also völlig ohne Bezug zu den CAN-Signalen....

CAN-GND stellt genau den Massebezug für beide CAN-Leitungen bereit. Ist 
also völlig richtig diesen zum Messen zu benutzen.
Hier was zum lesen:
https://cdn.vector.com/cms/content/know-how/_application-notes/AN-ANI-1-115_HS_Physical_Layer_Problems.pdf

: Bearbeitet durch User
von Uwe (uhi)


Lesenswert?

In der Theorie würde ich erwarten, dass der CAN-Ground am Ground des 
Transceivers hängt. Aber die Messungen legen nahe, dass das nicht der 
Fall ist, sonst wären die 50Hz nicht zwischen CAN und CAN-Ground. Jeder 
Hersteller hat da seine eigenen Ideen, was "besser" ist. Man könnte die 
Box aufschrauben und schauen wie die Massen geplant waren.

von Uwe B. (uwebre)


Lesenswert?

Thomas F. schrieb:
> Uwe B. schrieb:
>>> Can GND
>>
>> Also völlig ohne Bezug zu den CAN-Signalen....
>
> CAN-GND stellt genau den Massebezug für beide CAN-Leitungen bereit. Ist
> also völlig richtig diesen zum Messen zu benutzen.

Nein. Einen Bezug gibt es nur durch einen Spannungsteiler im Transceiver 
der den Pegel im rezessiven Zustand auf beiden Leitungen auf 1/2 VDD 
(gegen VSS) legt. (Das unterscheidet den CAN Bus vom RS485 Bus der 
komplett überhaupt keinen Bezug zu GND hat)
VSS muss nicht zwangsläufig der herausgeführte GND sein, abgängig vom 
Design der Schutzbeschaltung.

Ein CAN-Bus funktionert problemlos ohne GND-Verbindung solange der 
Gleichtaktbereich der Transceiver nicht verlassen wird. Nur um das zu 
verhindern schafft man die Verbindung der Schaltungsmassen zwischen den 
Busteilnehmern.

Nachtrag: Es gibt natürlich einen Bezug des (CAN-) GND zu VSS des 
Transceivers. Das hat aber für die Funktion des Bus keine Bedeutung. Und 
ist zum Messen ungeeigent.


Uwe

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Uwe B. schrieb:
> Nein. Einen Bezug gibt es nur durch einen Spannungsteiler im Transceiver
> der den Pegel im rezessiven Zustand auf beiden Leitungen auf 1/2 VDD
> (gegen VSS) legt.

Eben, 1/2 VDD ist doch ein Pegel, der durchaus eine Beziehung zu Gnd 
besitzt. Wie stark der ggf. gestört wird, hängt von der Quellimpedanz 
der Störungen und des Spannungsteilers ab. Die dominanten Pegel sind an 
VCC bzw. Gnd noch viel niederohmiger angebunden.

: Bearbeitet durch User
von Thomas F. (igel)


Lesenswert?

Uwe B. schrieb:
>> CAN-GND stellt genau den Massebezug für beide CAN-Leitungen bereit. Ist
>> also völlig richtig diesen zum Messen zu benutzen.
>
> Nein. Einen Bezug gibt es nur durch einen Spannungsteiler im Transceiver
> der den Pegel im rezessiven Zustand auf beiden Leitungen auf 1/2 VDD
> (gegen VSS) legt.

Nicht nur durch den Transceiver. Der geneigte Entwickler kann durchaus 
weitere (ESD-)Konzepte eingesetzt haben.
Beitrag "Re: Analyse CAN Terminierung"

Uwe B. schrieb:
> Ein CAN-Bus funktionert problemlos ohne GND-Verbindung solange der
> Gleichtaktbereich der Transceiver nicht verlassen wird.

Und außerhalb des Gleichtaktbereiches funktioniert er eben nicht. Als 
ist immer ein Massebezug nötig.

Uwe B. schrieb:
> Es gibt natürlich einen Bezug des (CAN-) GND zu VSS des
> Transceivers. Das hat aber für die Funktion des Bus keine Bedeutung. Und
> ist zum Messen ungeeigent.

Also doch. :-)
Und warum soll man nicht den Gleichtaktbereich messen wollen?

Für die Entscheidung des Transceivers zwischen 1 oder 0 ist der 
Massebezug erst mal egal, aber nicht für den generellen Betrieb des 
Busses.

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.