Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Youda's off-grid LAB

Featured Replies

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:

  1. battery announces itself as Pylontech
  2. Venus will see it, announces itself as Victron, sending "unlock"
  3. battery starts to broadcast diagnostic IDs

I've now connected the pi to the pack and it is showing the cell voltages etc ok.

image.thumb.png.1f02e4dab5951d01ca7d453ebb9f4b90.png

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.

CAN_Protocol_Table.png

  • Replies 421
  • Views 225.7k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • ***DISCLAIMER: Use at you own risk. You may brick and/or damage your batteries How to upgrade firmware of the Pylontech batteries If it works okay, do not touch it! If it does not

  • Hi guys, so, if you want to check the status of your Pylontech Phantom-S, US2000 or US3000, there's a great diagnostic tool for this called BatteryView. *DISCLAIMER: *Please note that wi

  • I'm really sorry @Luminous , but there's not much interesting to share. Just everyday's boring stuff. For example, I had to clearly label the bays in my space-shuttle landing dock, as some (femal

Posted Images

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.

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 by PylonHV

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 by Tinbum

  • 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?

  • 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]};

 

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 by Tinbum

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 by PylonHV

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 by PylonHV

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!!

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 by Tinbum

  • 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.

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 by PylonHV

  • 2 weeks later...
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 by Sleeper85

  • 2 weeks later...

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 ?

Screenshot 2024-11-26 151106.jpg

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.