Benachrichtigungen
Alles löschen

[Oben angepinnt] PACE BMS - Informationssammlung

820 Beiträge
120 Benutzer
82 Reactions
60 K Ansichten
(@mrkask)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 111
 

Das ist schick! Bist zu zufällig auf die Protokolle gestoßen?

Ich habe mir das angeschaut aber assembler ist absolut nicht meins.


   
AntwortZitat
(@teoli)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 17
 

Leider nein. Aber ich weiß ehrlich gesagt nicht nach was ich schauen soll, bzw. was geändert werden muss. Deiner Meinung nach müssen die unterschiedlichen Protokolle einfach nur aktiviert werden?

Man braucht für so ein reverse Engineering immer einen guten Anhaltspunkt. Irgendwelche Zahlen/Daten die sich aus der Menge "heben" damit man danach suchen kann. Ebenso ist ein Vergleichskriterium (eine andere ähnliche  Binary) ist sehr hilfreich. Eine Binary wo man weißt, dass dort die Protokolle gut implementiert sind. Dann kann man anfangen die relevanten Bereiche zu vergleichen.

Ich hab zum Beispiel geschaut, wie/wo die Default Schutz/Alarm-Parameter gesetzt werden (weil die Default-Werte in der binary die ich gefixt habe, schlecht sind, und man muss sie dann nach dem Flashen extra setzen): bin nicht weit gekommen, weil ich keine andere Binary habe, wo ich weiß wie die Default ausschauen.
BTW: Kann mir jemand, der eine andere Firmware geflasht hat, die Defaultwerte mitteilen, und welche Firmware es war? Dann kann ich vergleichen und die genaue Stelle orten.

Wie gesagt um die Protokolle zu fixen, muss man eine Firmware haben wo die Protokolle funktionieren, und man nimmt an, dass die Protokolle in diese Firmware zumindest vorhanden sind, aber nicht aktiviert. Weil wenn komplett neuer Code reinkommen muss, funktioniert das patchen der Firmware nicht mehr so einfach, da die Größe der Firmware sich ändert.


   
AntwortZitat
(@mrkask)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 111
 

Hier gibt es irgend wo im Thread ein google doc so eine Art Kompendium. Da sind die standard Werte drin von Batterie XY.


   
AntwortZitat
(@teoli)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 17
 

Stimmt, ich könnte es mit der Firmware auch versuchen. Weißt du vielleicht, ob die Firmware auch die Option für die unterschiedlichen Protokoll richtig eingebaut hat?

FIY:
Habe nun auch versucht, hardwaremäßig aus dem MCU die Memory auszulesen. Das sind die Ergebnisse.

Die ausgeführten Kontakte  sind für ein eine SWD-Verbindung:

Mit dem J-Link habe ich zum MCU eine Verbindung herstellen können, aber J-Link meldet leider Read und Write Protection... 🙄 Hier die Ausgabe.

Die Meldung, dass es geschützt ist, kam beim erstellen der Verbindung, und j-link fragte mich, ob ich die Protection aufheben will, jedoch wird dann ALLES aus dem Flash gelöscht, also habe ich lieber auf "nein" gedrückt.

 

Also ist der JWD Port eher unnötig, und mein HW-reverse engineering ebenfalls, aber zumindest wissen wir es jetzt.

Mein Plan ist (wenn ich Zeit habe), mit einem Serial Sniffer zu schauen, welche Nachrichten beim Flaschen an MCU geschickt, werden, und vielleicht kann man anstatt ein "flashen"-Befehl, ein "read"-Befehl schicken?


   
AntwortZitat
(@mrkask)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 111
 

Mein Plan ist (wenn ich Zeit habe), mit einem Serial Sniffer zu schauen, welche Nachrichten beim Flaschen an MCU geschickt, werden, und vielleicht kann man anstatt ein "flashen"-Befehl, ein "read"-Befehl schicken?

Meinst du nicht so schlau waren schon andere? Dann wäre der ganze Protection quatsch ja unnütz wenn es so einfach wäre.

Aber ich lasse mich gerne eines besseren belehren. Das Equipment hast du ja zum Probieren.

Edit.: Oder meinst du über die RS-232 Schnittstelle? Das könnte eventuell eher funktionieren. Das kannst du aber auch über das reverse engineering eventuell rausfinden was da so möglich ist bei der Schnittstelle.


   
AntwortZitat
Gisbert
(@gisbert)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 80
 

Hallo zusammen,

ich hab mich an das PACE BMS herangetraut. Das bei Amazon erhältliche Kabel hat funktioniert. Kleine Anmerkung: man muss das Passwort (123456) eintippen,  (sonst nichts) machen, damit die Write-Buttons freigegeben werden.

Ich hab einen Delong Akku LFP 51200, als auf dem Boden stehendes Gerät, mit Rollwagen.

BMS-Version:

Vers.: P16S200A-21382-2.02
BMS S/N: 213822124900275H
Pack S/N: (leer)

Ich hab auf der Parameter Setting-Seite die Werte soweit aus dem Google Drive-Dokument übernommen, wie sie mir sinnvoll erschienen. In der Tendenz bin ich insgesamt vorsichtiger rangegangen, um keinen Schaden anzurichten.

Der Akku wurde Anfang Januar in Betrieb genommen; das konnte man auf der Memory Info-Seite sehen.

Angehängt sind die Parameter, die ich geschrieben habe:

<?xml version="1.0"?>
<DocumentElement>
  <Param Index="1" Name="Cell OV Alarm(V)">3.54</Param>
  <Param Index="2" Name="Cell OV Protect(V)">3.65</Param>
  <Param Index="3" Name="Cell OVP Release(V)">3.40</Param>
  <Param Index="4" Name="Cell OVP Delay Time(mS)">1000</Param>
  <Param Index="5" Name="Pack OV Alarm(V)">55.70</Param>
  <Param Index="6" Name="Pack OV Protect(V)">58.40</Param>
  <Param Index="7" Name="Pack OVP Release(V)">54.40</Param>
  <Param Index="8" Name="Pack OVP Delay Time(mS)">1000</Param>
  <Param Index="9" Name="Cell UV Alarm(V)">2.80</Param>
  <Param Index="10" Name="Cell UV Protect(V)">2.70</Param>
  <Param Index="11" Name="Cell UVP Release(V)">2.95</Param>
  <Param Index="12" Name="Cell UVP Delay Time(mS)">1000</Param>
  <Param Index="13" Name="Pack UV Alarm(V)">44.80</Param>
  <Param Index="14" Name="Pack UV Protect(V)">43.20</Param>
  <Param Index="15" Name="Pack UVP Release(V)">47.20</Param>
  <Param Index="16" Name="Pack UVP Delay Time(mS)">1000</Param>
  <Param Index="17" Name="CHG OC Alarm(A)">100</Param>
  <Param Index="18" Name="CHG OC Protect(A)">105</Param>
  <Param Index="19" Name="CHG OCP Delay Time(mS)">1000</Param>
  <Param Index="20" Name="DSG OC Alarm(A)">100</Param>
  <Param Index="21" Name="DSG OC 1 Protect(A)">105</Param>
  <Param Index="22" Name="DSG OCP 1 Delay Time(mS)">1000</Param>
  <Param Index="23" Name="DSG OC 2 Protect(A)">110</Param>
  <Param Index="24" Name="DSG OCP 2 Delay Time(mS)">100</Param>
  <Param Index="25" Name="SCP Delay Time(uS)">300</Param>
  <Param Index="32" Name="CHG OT Alarm(℃)">50</Param>
  <Param Index="33" Name="CHG OT Protect(℃)">55</Param>
  <Param Index="34" Name="CHG OTP Release(℃)">50</Param>
  <Param Index="35" Name="DSG OT Alarm(℃)">50</Param>
  <Param Index="36" Name="DSG OT Protect(℃)">55</Param>
  <Param Index="37" Name="DSG OTP Release(℃)">50</Param>
  <Param Index="26" Name="Balance Threshold(V)">3.50</Param>
  <Param Index="27" Name="Balance ΔVcell(mV)">100</Param>
  <Param Index="28" Name="Sleep Vcell(V)">3.15</Param>
  <Param Index="29" Name="Delay Time(min)">5</Param>
  <Param Index="38" Name="CHG UT Alarm(℃)">5</Param>
  <Param Index="39" Name="CHG UT Protect(℃)">0</Param>
  <Param Index="40" Name="CHG UTP Release(℃)">10</Param>
  <Param Index="41" Name="DSG UT Alarm(℃)">-15</Param>
  <Param Index="42" Name="DSG UT Protect(℃)">-20</Param>
  <Param Index="43" Name="DSG UTP Release(℃)">-15</Param>
  <Param Index="30" Name="Pack FullCharge Voltage(V)">55.20</Param>
  <Param Index="31" Name="Pack FullCharge Current(mA)">2000</Param>
  <Param Index="53" Name="SOC Low Alarm(%)">5</Param>
  <Param Index="44" Name="MOS OT Alarm(℃)">90</Param>
  <Param Index="45" Name="MOS OT Protect(℃)">115</Param>
  <Param Index="46" Name="MOS OTP Release(℃)">85</Param>
  <Param Index="47" Name="ENV UT Alarm(℃)">-15</Param>
  <Param Index="48" Name="ENV UT Protect(℃)">-20</Param>
  <Param Index="49" Name="ENV UTP Release(℃)">-15</Param>
  <Param Index="50" Name="ENV OT Alarm(℃)">50</Param>
  <Param Index="51" Name="ENV OT Protect(℃)">55</Param>
  <Param Index="52" Name="ENV OTP Release(℃)">50</Param>
</DocumentElement>

Sieht das für euch ok aus?

Mich würde auch noch interessieren, ob es eine neuere Firmware gibt?

Viele Grüße

Gisbert


   
AntwortZitat
(@mdenzer2023)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

@gisbert Hallo habe den gleichen Speicher.. wenn ich die Werte änder und auf das BMS schreiben will, bekomm ich „out of range“ angezeigt..?! Liegt es an meiner Software!?


   
AntwortZitat
(@disaster123)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 103
 

Veröffentlicht von: @gisbert

Hallo zusammen,

ich hab mich an das PACE BMS herangetraut. Das bei Amazon erhältliche Kabel hat funktioniert. Kleine Anmerkung: man muss das Passwort (123456) eintippen,  (sonst nichts) machen, damit die Write-Buttons freigegeben werden.

Ich hab einen Delong Akku LFP 51200, als auf dem Boden stehendes Gerät, mit Rollwagen.

BMS-Version:

Vers.: P16S200A-21382-2.02
BMS S/N: 213822124900275H
Pack S/N: (leer)

Ich hab auf der Parameter Setting-Seite die Werte soweit aus dem Google Drive-Dokument übernommen, wie sie mir sinnvoll erschienen. In der Tendenz bin ich insgesamt vorsichtiger rangegangen, um keinen Schaden anzurichten.

Der Akku wurde Anfang Januar in Betrieb genommen; das konnte man auf der Memory Info-Seite sehen.

Angehängt sind die Parameter, die ich geschrieben habe:

<?xml version="1.0"?>
<DocumentElement>
  <Param Index="1" Name="Cell OV Alarm(V)">3.54</Param>
  <Param Index="2" Name="Cell OV Protect(V)">3.65</Param>
  <Param Index="3" Name="Cell OVP Release(V)">3.40</Param>
  <Param Index="4" Name="Cell OVP Delay Time(mS)">1000</Param>
  <Param Index="5" Name="Pack OV Alarm(V)">55.70</Param>
  <Param Index="6" Name="Pack OV Protect(V)">58.40</Param>
  <Param Index="7" Name="Pack OVP Release(V)">54.40</Param>
  <Param Index="8" Name="Pack OVP Delay Time(mS)">1000</Param>
  <Param Index="9" Name="Cell UV Alarm(V)">2.80</Param>
  <Param Index="10" Name="Cell UV Protect(V)">2.70</Param>
  <Param Index="11" Name="Cell UVP Release(V)">2.95</Param>
  <Param Index="12" Name="Cell UVP Delay Time(mS)">1000</Param>
  <Param Index="13" Name="Pack UV Alarm(V)">44.80</Param>
  <Param Index="14" Name="Pack UV Protect(V)">43.20</Param>
  <Param Index="15" Name="Pack UVP Release(V)">47.20</Param>
  <Param Index="16" Name="Pack UVP Delay Time(mS)">1000</Param>
  <Param Index="17" Name="CHG OC Alarm(A)">100</Param>
  <Param Index="18" Name="CHG OC Protect(A)">105</Param>
  <Param Index="19" Name="CHG OCP Delay Time(mS)">1000</Param>
  <Param Index="20" Name="DSG OC Alarm(A)">100</Param>
  <Param Index="21" Name="DSG OC 1 Protect(A)">105</Param>
  <Param Index="22" Name="DSG OCP 1 Delay Time(mS)">1000</Param>
  <Param Index="23" Name="DSG OC 2 Protect(A)">110</Param>
  <Param Index="24" Name="DSG OCP 2 Delay Time(mS)">100</Param>
  <Param Index="25" Name="SCP Delay Time(uS)">300</Param>
  <Param Index="32" Name="CHG OT Alarm(℃)">50</Param>
  <Param Index="33" Name="CHG OT Protect(℃)">55</Param>
  <Param Index="34" Name="CHG OTP Release(℃)">50</Param>
  <Param Index="35" Name="DSG OT Alarm(℃)">50</Param>
  <Param Index="36" Name="DSG OT Protect(℃)">55</Param>
  <Param Index="37" Name="DSG OTP Release(℃)">50</Param>
  <Param Index="26" Name="Balance Threshold(V)">3.50</Param>
  <Param Index="27" Name="Balance ΔVcell(mV)">100</Param>
  <Param Index="28" Name="Sleep Vcell(V)">3.15</Param>
  <Param Index="29" Name="Delay Time(min)">5</Param>
  <Param Index="38" Name="CHG UT Alarm(℃)">5</Param>
  <Param Index="39" Name="CHG UT Protect(℃)">0</Param>
  <Param Index="40" Name="CHG UTP Release(℃)">10</Param>
  <Param Index="41" Name="DSG UT Alarm(℃)">-15</Param>
  <Param Index="42" Name="DSG UT Protect(℃)">-20</Param>
  <Param Index="43" Name="DSG UTP Release(℃)">-15</Param>
  <Param Index="30" Name="Pack FullCharge Voltage(V)">55.20</Param>
  <Param Index="31" Name="Pack FullCharge Current(mA)">2000</Param>
  <Param Index="53" Name="SOC Low Alarm(%)">5</Param>
  <Param Index="44" Name="MOS OT Alarm(℃)">90</Param>
  <Param Index="45" Name="MOS OT Protect(℃)">115</Param>
  <Param Index="46" Name="MOS OTP Release(℃)">85</Param>
  <Param Index="47" Name="ENV UT Alarm(℃)">-15</Param>
  <Param Index="48" Name="ENV UT Protect(℃)">-20</Param>
  <Param Index="49" Name="ENV UTP Release(℃)">-15</Param>
  <Param Index="50" Name="ENV OT Alarm(℃)">50</Param>
  <Param Index="51" Name="ENV OT Protect(℃)">55</Param>
  <Param Index="52" Name="ENV OTP Release(℃)">50</Param>
</DocumentElement>

Sieht das für euch ok aus?

Mich würde auch noch interessieren, ob es eine neuere Firmware gibt?

Viele Grüße

Gisbert

 

Von Delong selbst gibt es eine neuere Firmware und zwar die 2.05 für deine Batterie. Ich habe sie mir per Mail schicken lassen, aber bisher nicht geflashed. Meine Batterie läuft ja... 

 


   
AntwortZitat
(@teoli)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 17
 

Veröffentlicht von: @mrkask

Meinst du nicht so schlau waren schon andere? Dann wäre der ganze Protection quatsch ja unnütz wenn es so einfach wäre.

Aber ich lasse mich gerne eines besseren belehren. Das Equipment hast du ja zum Probieren.

Edit.: Oder meinst du über die RS-232 Schnittstelle? Das könnte eventuell eher funktionieren. Das kannst du aber auch über das reverse engineering eventuell rausfinden was da so möglich ist bei der Schnittstelle.

Ich meine damit ein RS-232 sniffer, der die Daten mit liest, die von BMS Flasher an der Batterie geschickt werden. Die Daten sind über die RS232 Schnittstelle (sehr wahrscheinlich) nicht verschlüsselt..., man muss die hex Zahlen nur richtig interpretieren, so ähnlich wie bei der Firmware. Es geht nur drum, der batterie zu sagen, anstatt das sie jetzt in der memory die Firmware schreibt, dass sie die aktuelle Firmware in Flashspeicher über die Serielle console hergibt.

 


   
AntwortZitat
(@teoli)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 17
 

Bezüglich der Kalibrierung der SOC und FW 2.5, hab ich etwas interessantes entdeckt, ich weiß nicht ob hier in Forum schon darüber berichtet wurde:

Wenn man eine bestimmte/neuere BmsTools Version verwendet, taucht bei der Kommunikation mit der Firmware 2.5, ein neuer Reiter auf, "Other Setting":

Ich verwende hier die Version Gobel_PC-BMS_Tools_HS2.0.3_Win32

Hier wird entschieden wie die SOC angepasst werden soll. Nach oben oder nach unten. Ganz genau hab ich jetzt die Werte nicht studiert, und bin auch nicht schlau geworden wie Werte angewendet werden. Im Screenshot sieht man die Werte die aus der BMS ausgelesen wurden.

Intuitiv würde ich die Einstellung so verstehen:

  1. Wenn die Batterie nur 50V hat, und der SOC aber bei 95% ist, dann reduziere den SOC auf 70%. Ehmmm... sollten 50V nicht heißen, dass der SOC schon bei unter 20% liegt? (oder ist da die gemessene Spannung während der Entladung gemeint?)
  2. Wenn die Batterie 53V hat, und der SOC bei 85%, dann erhöhe die SOC, auf... wie viel? 100% ? Oder wird da noch ein Over-Voltage Auslöser miteinbezogen?

Also entweder habe die Werte falsch interpretiert, oder die eingestellten Werte sind schwachsinnig 😳 

Was ich diesbezüglich in einen anderen Forum über SEPLOS gelesen habe ist:

Yes, they calculate the real capacity that going in/out from the shunt.
But the real case is, the battery may not get to 0 or 100% for months, without the calibration through voltage, the SOC would be deviation over time.
The detailed calibration as follows:
Adjust the SOC to 95%, when the overvoltage occurs, and the SOC is lower than 90%.
Adjust the SOC to 70%, when the voltage reaches 3.4v*series.

Deswegen meinte ich, vielleicht wird die overvoltage noch miteinbezogen. Aber um ehrlich zu sein, habe ich den letzten Satz nicht ganz verstanden. Wieso soll die SOC bei 70% liegen, wenn die 3.4V * 16=54,4V erreicht worden sind? Das ist eigentlich in Rest-Zustand schon die volle Kapazität. Oder wird das so gemeint?: Die Batterie wird gerade geladen, und der berechnete SOC liegt unter 70%, aber die gemessene Spannung ist schon bei 54,4V => dann nehme an, dass der SOC zumindest schon bei 70% liegt.

Was meint ihr?


   
AntwortZitat
Gisbert
(@gisbert)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 80
 

Veröffentlicht von: @mdenzer2023

@gisbert Hallo habe den gleichen Speicher.. wenn ich die Werte änder und auf das BMS schreiben will, bekomm ich „out of range“ angezeigt..?! Liegt es an meiner Software!?

 

Hallo Mdenzer2023,

ich kann dir nicht wirklich weiterhelfen. In Windows hast du da das Dezimalkomma in einen Dezimalpunkt umgewandelt? Als Software hab ich diejenige benutzt, die in PbmsTools HS1.0.6.zip enthalten ist. Die Software ist hier weiter vorne im Thread verlinkt.

Ich hab die Werte durch Scrollen im jeweiligen Pulldown/Up-Menu geändert - vielleicht hilft das auch.

Viele Grüße

Gisbert

 


   
AntwortZitat
Gisbert
(@gisbert)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 80
 

@disaster123,

Hallo,

könntest du mir die 2.05 Firmware für den Delong LFP HS-51200 zusenden, und falls du hast, eine Anleitung zum Flashen der Firmware?

Viele Grüße

Gisbert 


   
AntwortZitat
(@tkharde)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

Weil hier auch immer wieder vom auslesen der Parameter der Akkupacks geschrieben wird möchte ich noch eine Alternative nennen:
Habe Solar-Assistant gekauft und mit einem Raspberry in Betrieb genommen. Auch weil der Deye-Wechselrichter nur in sein (lausige)
Cloud kommunizieren will.
Damit bin ich sehr zufrieden und bekomme alle Daten von Akku und WR schön aufbereitet und das ganze lässt sich noch per MQTT
in iobroker auslesen. Top!


   
AntwortZitat
(@disaster123)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 103
 

anbei die Delong FW für die 200A Batterie in Version 2.05

 


   
ΘeoLI reacted
AntwortZitat
(@simon987)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 6
 

Wisst ihr, warum beim PACE BMS eine Sleep Voltage von 3,15 V eingestellt ist? Unterhalb dieser Spannung legt sich das BMS nach 5 Minuten schlafen und ist nicht mehr erreichbar. Auch wenn die Kommunikation noch aktiv ist.

Ein BMS sollte doch in allen Bereichen aktiv sind und die Batterie überwachen. Es macht doch keinen Sinn, es vorher abzuschalten.

Wie sieht ihr das?


   
AntwortZitat
Seite 18 / 55
Teilen: