November 6, 20241 yr On 2024/11/02 at 9:01 PM, Youda said: Hi @Tinbum, nice work! Let's see how it will do once connected to the real Pylontech US battery.🤔 I am just guessing, but maybe that there's a small handshake needed? Something like: battery announces itself as Pylontech Venus will see it, announces itself as Victron, sending "unlock" battery starts to broadcast diagnostic IDs I've now connected the pi to the pack and it is showing the cell voltages etc ok. But I'm really baffled as I can't see the 0x70 and 0x371 in the CAN communication. In a document I have showing the CAN protocols they are shown in a different color so I'm wondering if their is something special about them.
November 6, 20241 yr 19 hours ago, PylonHV said: Thanks again! When you say a very long time for cell voltages to balance, can you define any ball park figure i.e. Days, Month or even a Year? Here again a question comes to mind (having seen the behavior of Pylontech Balancing algorithm), during every charging cycle (if example of individual module is taken) the top end voltages of the cell cross above 3.5V but the bms does not cut off the current till the higher cell reaches 3.6V while the lowest voltage cell also reaches 3.5V, at this point the voltage delta can be 100milliVolts. The balancing is performed afterwards bringing the voltages close to 3.4V. Technically BMS/BMU balances the cells with every charge cycle, however during Discharge the Module which had imbalance at the top are exposed, as these modules drop charge at around 50%. Why doesn't the BMS cuts power to the highest voltage cell while at the same time charging the lower voltage cell to come upto 3.5V? so that 15cells of the module can be balanced at around 3.5V You must be right in assuming that both HV & LV would be similar, therefore you have seen the behavior of LV cells and balancing. It is pertinent to ask you here that if an external Variable Voltage DC power supply is set at 52.5V (3.5V per cell), would it be able to restrict the higher cells to stop taking charge/increase their voltage once they reach 3.5V and at the same time force the lower voltage cells to come upto 3.5V so that all the cells happily live at 3.5V? any ideas? I'm honestly not sure, but balancing starts at lower voltages , 3.360v if I recall correctly on the LV battery. Again I'm not sure on the time it will take, but yes i thinks weeks is possible. It does depend on how far out they are.
November 6, 20241 yr 2 hours ago, Tinbum said: I'm honestly not sure, but balancing starts at lower voltages , 3.360v if I recall correctly on the LV battery. Again I'm not sure on the time it will take, but yes i thinks weeks is possible. It does depend on how far out they are. Thanks for your reply! One thing which is a bit out of ambit here is that if the Pylontech Main BMS and/or the baattery brick BMU balances the voltages across the cells on daily basis during charge and discharge cycle, then why would there be Cells Imbalance? is it something deeper than just the superficial voltages of the cells? Edited November 6, 20241 yr by PylonHV
November 6, 20241 yr Author 1 hour ago, Tinbum said: I'm baffled!! Here is the CAN sniffing file; victron_0001.csv 158.88 kB · 1 download You've did it @Tinbum, that's great! So, the Victron is really getting that info from 0x372 and up. Nice work!
November 6, 20241 yr 12 minutes ago, Youda said: You've did it @Tinbum, that's great! So, the Victron is really getting that info from 0x372 and up. Nice work! No, it think that is the victron venus rebroadcasting it. I can't understand why their is no 0x70 and 0x371. Edited November 6, 20241 yr by Tinbum
November 6, 20241 yr Author Hmm, I would understand Victron rebroadcasting that on it's other VE.CAN interfaces, but it does not make sense to rebroadcast on the CAN that's dedicated just for the battery. Just unplug the cable from that RPi with Venus OS, put it in your PLC and listen for those ID's. If you still see them, then it's Pylontech speaking. What do you think?
November 6, 20241 yr Yep, will try that tomorrow. pretty certain they will disappear as they don't show on the Teensy that I use to alter the pylontech CAN messages to the inverter.
November 6, 20241 yr Author @Tinbum I have a feeling that you are very close to make this work Maybe that you will need to announce yourself using "0x307 EXT: 0 LEN: 8 DATA: 0x12 0x34 0x56 0x78 0x56 0x49 0x43 0x00" / 12345678VIC at first, but then all those IDs 0x372 and up will start coming As for decoding, you can reverse-engineer that encoder written by Sleeper85 (looks like he's a very clever and organized guy): https://github.com/Sleeper85/esphome-yambms/blob/main/packages/yambms/yambms_canbus.yaml Copy of 0x373 part here: - if: # 0x373 - Actual Min Cell V, Max Cell V, Min Cell Temp (Kelvin), Max Cell Temp (Kelvin) ( Victron ) condition: lambda: return id(${canbus_id}_can_frame) == 13; then: - canbus.send: canbus_id: ${canbus_node_id} can_id: 0x373 data: !lambda |- // Byte [00:01] : Min cell voltage (1 mV) // Byte [02:03] : Max cell voltage (1 mV) // Byte [04:05] : Min cell temperature (1 Kelvin) // Byte [06:07] : Max cell temperature (1 Kelvin) int min_cell_voltage_i = id(${yambms_id}_min_cell_voltage).state * 1000.0; int max_cell_voltage_i = id(${yambms_id}_max_cell_voltage).state * 1000.0; int min_temp_kelvin = id(${yambms_id}_min_temperature).state + 273.15; int max_temp_kelvin = id(${yambms_id}_max_temperature).state + 273.15; uint8_t can_mesg[8]; can_mesg[0] = min_cell_voltage_i & 0xff; can_mesg[1] = min_cell_voltage_i >> 8 & 0xff; can_mesg[2] = max_cell_voltage_i & 0xff; can_mesg[3] = max_cell_voltage_i >> 8 & 0xff; can_mesg[4] = min_temp_kelvin & 0xff; can_mesg[5] = min_temp_kelvin >> 8 & 0xff; can_mesg[6] = max_temp_kelvin & 0xff; can_mesg[7] = max_temp_kelvin >> 8 & 0xff; ESP_LOGI("canbus", "send can_id: 0x373 hex: %x %x %x %x %x %x %x %x", can_mesg[0], can_mesg[1], can_mesg[2], can_mesg[3], can_mesg[4], can_mesg[5], can_mesg[6], can_mesg[7]); return {can_mesg[0], can_mesg[1], can_mesg[2], can_mesg[3], can_mesg[4], can_mesg[5], can_mesg[6], can_mesg[7]};
November 7, 20241 yr Well, I couldn't wait till tomorrow so turned the pi off and you were right. Oh actually it is tomorrow!! The messages carried on, so yes, the battery is sending them. It's strange though as the CANalyst II sees them but my Teensy doesn't. Their is still no 0x70 or Ox371 anywhere so I think that table may be wrong. Next I'm going to put the CANalyst II on another pack of batteries, read the messages and see what that shows. Then I will put the Victron Pi on that CAN bus and see if it opens up the battery to 0x372 and above if they were not already being sent. If it is the pi opening it up I will also be able to see what it has sent from it.. I'm then going to have to investigate why my Teensy isn't seeing these extra messages. It may be it's not fast enough or the buffers need to be bigger. (I initially started off with an Arduino but that missed messages so went I on to the Teensy). victron_0002_0001.csv Yes that coding makes sense- ties in with the table I posted above. Strange how temps are in K not Degrees C Edited November 7, 20241 yr by Tinbum
November 7, 20241 yr On 2024/11/05 at 1:36 AM, Youda said: IMHO, hire someone who did this before. You're not the first one to have this kind of issue when adding H48050 packs. Greetings Youda! Still in conundrum of Balancing the Cells for individual H48050 Batt Pack. IF a Separate module/brick is charged directly at a low current to 52.5V, how to Balance Individual Cells? Kindly share your knowledge about Adding H48050 batt. packs(once UnBalancing has been created by the BMS with the addition of extra batt. Packs). Your guidance will be highly appreciated. Edited November 7, 20241 yr by PylonHV
November 7, 20241 yr Author Like I wrote pages before: I have no knowledge of hv bat. Sorry buddy, you are on your own.
November 8, 20241 yr 11 hours ago, Youda said: Like I wrote pages before: I have no knowledge of hv bat. Sorry buddy, you are on your own. Thanks again for the reply Youda. If by any chance you have information about any resource where they have successfully Re-Balanced cells for Pylon HV Battery system kindly share. Also if an LV Batt. has UnBalanced cells, how would you Balance them? Can that Technique apply to HV Batt.? Youda, you are a resourceful person in the world of Pylontech batteries, if it is not a huge hassle for you, can you kindly ask someone for information regarding balancing the individual Pylon HV H48050 batt. pack. Looking forward to your opinion, Thanks Edited November 8, 20241 yr by PylonHV
November 8, 20241 yr 4 hours ago, PylonHV said: Thanks again for the reply Youda. If by any chance you have information about any resource where they have successfully Re-Balanced cells for Pylon HV Battery system kindly share. Also if an LV Batt. has UnBalanced cells, how would you Balance them? Can that Technique apply to HV Batt.? Youda, you are a resourceful person in the world of Pylontech batteries, if it is not a huge hassle for you, can you kindly ask someone for information regarding balancing the individual Pylon HV H48050 batt. pack. Looking forward to your opinion, Thanks As I have said, many times, you need to speak to Pylontech. I emailed them last night about something and had the reply this morning!!
November 8, 20241 yr @Youda Here's something nice to have a look at. 2.0.1 in 2021/4/2 is interesting note. So you have to send both 0x305 and 0x307. I've not looked at it properly yet. Pylon CAN bus protocol V2.0.5 20230327.pdf Edited November 8, 20241 yr by Tinbum
November 8, 20241 yr I found the problem with the Teensy setup, I had 4 receive mailboxes set as standard and 4 as extended. The 4 as standard were not enough so I added another 4 standard and can now get all the messages. I can confirm that if you send 0x305 and 0x307 it opens up the 0x372 > onwards. (Tried it on my Teensy instead of the Venus Pi). I don't know where the 0x70 and 0x371 come from on that chart but I'm sure it's wrong. Edited November 8, 20241 yr by Tinbum
November 8, 20241 yr Author 1 hour ago, Tinbum said: I don't know where the 0x70 and 0x371 come from on that chart but I'm sure it's wrong. IMHO, that's from intermediate version of the protocol. Also, for example, Seplos batteries are using this too. Anyway, you're a real CAN expert! SEPLOS BMS CAN Protocoll V1.0.pdf
November 8, 20241 yr Thank you guys! This thread is really a valueable source of information! Just wanted to say that. 🙂
November 9, 20241 yr Greetings all! Have a question. Is there any method / command line for Battery View Software to Limit the Charging Current to 0.5A? Thanks
November 9, 20241 yr Author No, there is not. Although Phantom BMS has a broad command line capabilities, hardware-wise it is unable to actively modulate in/out current. Safety Mosfets in the BMS are just doing ON/OFF not PWM. More info: The BMS periodically communicates to the inverter desired charging and discharging current based on the SOC and state of cells. But it's the inverter that has to listen to this info and alter the current accordingly. If this communication is not working properly, then the current limit must be set on the side of the inverter and/or charger manually. When using HV batteries, working communication is mandatory. On top of that, some HV inverters have a configuration parameter that allows the user to limit current even further. Inverters for LV batteries have this feature always.
November 9, 20241 yr 5 hours ago, Youda said: No, there is not. Although Phantom BMS has a broad command line capabilities, hardware-wise it is unable to actively modulate in/out current. Safety Mosfets in the BMS are just doing ON/OFF not PWM. More info: The BMS periodically communicates to the inverter desired charging and discharging current based on the SOC and state of cells. But it's the inverter that has to listen to this info and alter the current accordingly. If this communication is not working properly, then the current limit must be set on the side of the inverter and/or charger manually. When using HV batteries, working communication is mandatory. On top of that, some HV inverters have a configuration parameter that allows the user to limit current even further. Inverters for LV batteries have this feature always. Youda! once again Thanks for the Valuable Information. The Communication between the Inverter and the Main Pylontech BMS via CAN is 100% Normal. Yes the Current can be set through the inverter(but not as low as 0.5A) and Yes when the BMS demands the Inverter does comply and reduces the current as demanded by the Pylon BMS. The strange thing is that the Pylontech BMS charges all the Cells to 100% state of charge and then Balances all the cells to around 3.4V, so it does Not seem to be the Balancing issue. It is during Discharge that some of the Cells in multiple H48050 modules start to lose voltage/charge and by 45% SOC the difference in Voltage reaches high enough that those modules just go Low on Charge up to the Cut off SOC/Voltage, while the others remain at High State of Charge. Up to this point all the Pylontech H48050 batt modules / Packs are only connected to Pylontech BMS SC0500-40 to keep the Warranty Intact. So far all the valuable input from you guys and based on the behavior of Batteries connected to Pylontech BMS, it seems that H48050 modules can Not hold charge and this is a Valid Case to Invoke Warranty. As previously stated the Warranty Route will be followed First and Foremost. Once again thanks for all the valuable knowledge you and other members have shared! Edited November 9, 20241 yr by PylonHV
November 18, 20241 yr On 2024/11/08 at 11:27 AM, Tinbum said: @Youda Here's something nice to have a look at. 2.0.1 in 2021/4/2 is interesting note. So you have to send both 0x305 and 0x307. I've not looked at it properly yet. Pylon CAN bus protocol V2.0.5 20230327.pdf 705.53 kB · 5 downloads Really interesting, thanks for sharing this document.
November 18, 20241 yr On 2024/11/08 at 1:21 PM, Tinbum said: I don't know where the 0x70 and 0x371 come from on that chart but I'm sure it's wrong. 0x70 and 0x371 come from the SEPLOS 1.0 document which says to be compatible with PYLON 1.3 and GoodWe 1.5. I had never managed to find the PYLON 1.3 protocol or higher that's why I named this protocol PYLON + in my application YamBMS because I couldn't really put a version number without having had an official document in my hands. I will now be able to update my code with the PYLON 2.0.5 protocol 😍 As you have discovered you must respond every second with an ID 0x305 what I called the inverter heartbeat in my code. Edited November 18, 20241 yr by Sleeper85
November 26, 20241 yr Hey Youda, I have an issue (and hope that you have some useful hints for me): My Pylontech did have some strange behaviour, the chargin voltage was kind of jumping. So my approach was to update the firmware. I followed your instructions and everything was running fine unti about 80% and then I got an error message. After this the Pylontech Battery was kind of 'dead' I still had some charging voltage on the display of my MultiplusII but no led on the Pylontech was visible. Then I started your described procedure again. Unfortunately I now get in the last step when turning the Pylontech on with the red button pressed down the error message in the screenshot. Do you have any idea how to solve ?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.