Hallo,
ich möchte zu monitorinzwecken das BMS mit CAN ansprechen.
Hat hier jemand Erfahrungen?
Ich habe mit 250 und 500 kbit keine Kommunikation aufnehmen können.
Muss ich dem BMS Spezielle Nachrichten senden, damit es gesprächig wird?
Für RS-485 gibt es ein Bitmuster. Für CAN habe ich so etwas noch nicht gesehen.
Merci!
Unox
Hier gibt es das CAN Protokoll:
https://diysolarforum.com/resources/daly-smart-bms-manual-and-documentation.48/
Wow!
Vielen dank für den Link. Das BMS scheint wohl nur auf request zu antworten.
"All messages are sent by the host, all slave after receiving the message to determine whether the slave address match, only in the case of slave address match is
allowed to return data to the host."
Ich möchte mich jetzt schon mal bedanken!
Hat die CAN Anbindung irgendeinen Vorteil gegenüber Seriell? Für Seriell gibt es z.B. schon dbus-serialbattery für Victron, wo man sich auch für andere Projekte was anschauen könnte.
Ich kenne , hat eher sportlichen Charakter.
Leider habe ich noch keine CAN Antwort aus dem BMS kitzeln können. Die Serielle Schnittstelle müsste ich mal googeln. Bedeutet das, dass ich seriell auch meine (Victron) PV und Booser Werte auslesen kann?
Da ich gerade dbus-serialbattery ausprobiert habe könnte ein großer Vorteil vom CAN Bus sein, dass die Kommunikation deutlich schneller ist, der UART läuft nur auf 9600baud. Ist eventuell auch eine Frage der Implementierung in dbus-serialbattery, aber es gibt ein paar Probleme, wenn man z.B. die Zellspannung abfragt. Ich werde mir das mit dem CAN Bus daher auch mal anschauen...
Hab es heut mal ausprobiert, habe keinen USB CAN adapter, also hab ich es direkt an den Victron Cerbo angeschlossen. Habe aber keine Verbindung hinbekommen. In einem anderem Forum heißt es die meisten Dalys haben gar kein CAN sondern nur RS485 an der anderen Schnittstelle. Kann man das irgendwie testen ob CAN am Daly dran ist?
Wenn oberhalb der Stecker was steht ist es drin. Sonst sind die Kontakte wohl unbelegt. Mein Daly hängt via UART am Cerbo.
Ja das war auch mein Verständnis. Im englischen DIY Solar Forum hieß es aber dass es soviele verschiedene Varianten und auch zugekaufte Varianten gibt, dass keiner weiß wo tatsächlich was drin ist und was nicht. RS485 würde wohl immer da sein wenn es da steht, bei CAN sieht es aber anders aus. Da es aber quasi keine Berichte über Leute gibt, die mit dem Daly via CAN reden ist das schwer zu verifizieren...
Ich hab leider keinen USB CAN Dongle, sonst könnte ich es mit der Daly App mal testen.
Hallo zusammen,
ich sende wie das Bsp in dem Dokument angegeben:
18100180 mit den hex daten 00 00 00 00 00 00 00
keine Antwort.
Das ist aber etwas unlogisch, denn es ist angegeben:
Priority + data ID+BMS address + PC address
1 + 81 + 001 + 80
hier stimmt doch was mit der BMS adress nicht. Ist die wirklich 3 stellig? Die data ID habe ich auch variiert (z.B. 0x91), ohne response.
Was kann ich noch probieren?
Dokument:
2.2 地址分配 Address allocation
模块 Module 地址 Address
BMS 主控 BMS Master 0x01
蓝牙手机 APP Bluetooth APP 0x80
GPRS 0x20
上位机 Upper 0x40
Ich glaube die BMS ID ist einfach als ganzes "18100180" so wie sie da steht. Denn 81 gibt es auch nicht als Daten ID und 10 schon garnicht. Entweder 3 oder 8 bytes müssen es sein meines Wissens nach. Hier haben wir 3, also brauchen wir die vollen 6 Chars/Digits.
Ich habe das so interpretiert, dass man als ID 18100180 nimmt und dann als Daten 95 00 00 00 00 00 00 00 sendet.
Aber ich hab bisher auch noch keine Verbindung hinbekommen, also vielleicht stimmt das so auch nicht ganz.
Wie verbindest du dich mit dem Daly? Hast du ein USB Dongle? Dann könntest du mal kucken, ob du dich über die App verbinden kannst, so wie hier im Video:
Achja, was mir noch aufgefallen ist... mein GND vom RS485/CAN Port hat keinen Durchgang zu GND vom Daly. Vielleicht ist das ein Problem... CAN braucht ja eigentlich auch GND denke ich, vielleicht ist das nicht richtig belegt im Daly... Ist das bei euch auch so? Dass GND entkoppelt ist kann ich mir nur schwer vorstellen...
Und was auch noch seltsam ist... auf den USB CAN bus Dongle Bildern wird nur CAN-HI und CAN-LO verbunden, aber kein GND. Das kann doch so nicht funktionieren...
Nachtrag:
Jetzt hat doch was geklappt:
can0 18100140 [1] 95
can0 18104001 [8] 00 01 01 A5 00 04 12 58
man muss als ID nicht 80 sondern 40 nehmen, wie bei "upper" steht. Ich les mal ein paar Werte aus und guck ob was sinnvolles drin steht...
Nachtrag 2:
Irgendwie kommen da keine konsistenten Werte bei raus...
@Unox du scheinst mit der Daten ID doch recht zu haben...
Aber irgendwie kommt nicht das zurück was in der Doku steht... Die meisten Daten IDs geben irgendwelche random Werte zurück, es gibt aber auch welche, die immer dads selbe zurück geben, z.B.
can0 18500140 [0]
can0 18504001 [8] 00 04 45 C0 00 00 00 00
Daten ID 85 liefert immer die selben Werte egal wie oft es geschickt wird. Ist aber nicht in der Doku drin. Wenn ich z.B. 95 als Daten ID nehme kommen irgendwelche Random Werte und als Daten ID von der Antwort 85 zurück, ebenso bei 91 -> 81 usw...
Ok ich habs...
can0 18950140 [0]
can0 18954001 [8] 01 0D 7C 0D 7C 0D 7D 00
can0 18954001 [8] 02 0D 7E 0D 7E 0D 7C 00
can0 18954001 [8] 03 0D 7D 0D 7D 0D 7D 00
can0 18954001 [8] 04 0D 7C 0D 7D 0D 7E 00
can0 18954001 [8] 05 0D 7D 0D 7E 0D 7D 00
can0 18954001 [8] 06 0D 7E 0D 7E 0D 7D 00
die CAN ID setzt sich zusammen aus 18 + Daten ID + 01 (BMS ID) + 40 (PC ID)
So, hab mal eben dbus-serialbattery mit Daly über CAN Bus erweitert. Scheint so weit ganz gut zu funktionieren. Ich lasses mal über Nacht laufen...
Hallo,
der Aufbau erinnert mich sehr stark an J1939.
Demnach gilt:
18xxDDss 18 = Priority, xx= DataID, DD= Ziel Adresse, ss= Abfrage ID
DD = Adresse des BMS hier 01. ss= Adresse des PCs hier 80
Also zur Abfrage des SOC: 18 90 01 80. xx xx xx xx xx xx xx xx
Noch ein paar allgemein Infos zum CAN: in 95 % der Fälle reicht CAN H und CAN L
Die Leitungen sollten verdrillt werden, wegen der Störsicherheit.
Auf dem CAN Bus muss am Anfang und am Ende mit 120 Ohm terminiert werden. In der Praxis reicht oft auch einmalig 120 Ohm, ist aber Pfusch. Mehr wie 2 Terminatoren solltest du auch vermeiden!
Viele Grüße
Wickie
Hab grad mal GND getrennt und es funktioniert in der Tat immer noch. Es muss also nur CAN low und CAN high verbunden werden. Terminierungsstecker habe ich auch, aber die sind anscheinend nicht notwendig, zumindest nicht wenn nur das Daly dran hängt.