Everything posted by ChadH360
-
Solax inverter - comms with Pylontech US3000C BMS
Hey all. Another year, and another attempt at getting this working. I almost got there, and I think if I was using a US2000C, then I might have just got there. Unfortunately, I can now safely say that with my US3000C batteries, there is practically no chance of getting this running - not without some real jiggery/pokery that will most likely end up returning false information to the inverter. So here is the current situation. The Solax SK-SU3700 BMS port is actually an RS232 serial port running at 1200bps. It transmits a request for information every 5 seconds or so, that looks something like this: ~2001464F0000FD99\r (this is an ascii representation of the code that is being sent) This is basically the same protocol that is used by the RS485 port on the Pylontech battery which is a port that operates at 115200bps or 9600bps dependent on DIP switch settings. However, sending that instruction to the Pylontech battery is completely ignored. Eventually (this was a long time eventually!), I discovered the reason why. At the very beginning of that code (ignoring the ~), the 20 relates to the version number, and the 01 relates to the battery pack number. So the Solax is asking for information relating to battery pack 1. But, for whatever reason, the newer Pylontech batteries now start at 2 and will completely ignore any requests to pack 1 (?!?!)! The last four digits (FD99) are a checksum, so editing the code means the checksum needs editing too, but this is simply a case of if you add one to the main instruction, then you just subtract 1 from the checksum. So, I edited the code to be: ~2002464F0000FD98\r ...and the Pylontech started talking back to me. The response was: ~200246000000FDB2\r Now it was the inverters turn to ignore that due to the fact that the information was related to Pack 2 and not Pack 1. So again, I did some editing of the information and passed it back to the Solax It worked So, I automated this process using an Ethernet to RS232 adapater and an Ethernet to RS485 adapter. Using NodeRed in Home Assistant, I set up some listeners on both of these, and added a function to make the code modifications on the fly and pass the info on to the relevant device. And, holy crap, that worked too I now have a set up whereby if I unplug the BMS cable from the Solax it will actually complain that the BMS has been lost - I haven't had that happen for years. But unfortunately, I've now hit another hurdle, and whilst I think I could overcome this one, I would probably need to get my hands on an Extra2000 battery (or maybe a 2000C), and ultimately would have to get my US3000C battery to lie to the Solax inverter. Currently, my battery charge on the Solax shows as 100%, and it just constantly polls pack 1 for information and doesn't seem to move on to any other packs or any other information. I just discovered why that is! Battery capacity and remaining capacity is stored in 2 bytes of the information that's returned with the pack information. Two bytes allows numbers between 0 and 65535. So this is ideal for storing the number of mA hours capacity and remaining capacity up to 65Ah. But, my US3000C has 72Ah of capacity, and it just won't fit in this space. So, what Pylontech have done is set those two bytes to the maximum, and then added an additional 3 bytes at the end of the data to store the larger number. So not only does my inverter see that the battery is always completely full, it also doesn't quite know how to handle the additional data, and therefore keeps requesting the same information over and over again. This also means that the inverter doesn't move on to the other battery packs or request any other information from the battery. I _could_ configure that particular Pylontech response to lie about the battery capacity/remaining capacity and use some maths to calculate the relevant battery percentage based on the other information, but ultimately I would have to make the battery lie about it's remaining capacity when it's above a certain amount. Chances are, I would probably also need to see the data transfer between a working Extra2000/US2000. I think I'm probably going to put this one to bed for now, but assuming I still have the same inverter next year, I may take another look then Sorry for the resurrection and the long post, but hopefully somebody may find it an interesting read - I've found it interesting learning about the communication protocol although I can't think of any other use for this new knowledge whatsoever
-
Pylontech US3000C Firmware
There are no release notes there. That's just simply a list of instructions for installing the firmware. It would be nice to know what changes are actually made to the firmware to determine whether it's worth the risk of an update! English translation attached. Firmwareupdate Pylontech US2000C_3000C V4_0.de.en.pdf
-
Solax inverter - comms with Pylontech US3000C BMS
I've just had a quick look through the RS485 protocol docs from Pylontech, and it looks like (although it was a very brief look) it's identical to their RS232 communication protocols. As a result, it might be possible to just put a RS232/RS485 converter in between the Solax BMS port and the Pylontech RS485 port. I need to take a break from this now 😆, but I will take a closer look at the RS485/RS232 comm specs and will try it out at some point if it looks feasible!
-
Solax inverter - comms with Pylontech US3000C BMS
OK - I've had a really good look into this, and have got.... somewhere! Just not quite where I want to be. After a little project whereby I can now get my US3000C data from the batteries into Home Assistant via a CAN-Ethernet converter and Node Red, I thought I'd start trying to debug things on the Solax end. This is for my Solax SK-SU3700 which supposedly has CAN on pins 1 and 2, and RS232 on pins 4 and 5. Using the CAN-Ethernet on the Solax connection, there did not seem to be any activity at all on pins 1 and 2, so I don't think CAN actually functions on there. I then used an RS232-Ethernet converter on pins 4 and 5. With that connected, I could see the following data sent every 5 seconds or so at 1200bps: ~2001464F0000FD99\n (the \n is a carriage return) After A LOT of researching online, I was able to determine that this was the RS232 format specified by Pylontech, and that particular command is a request for the communication parameters. I also noted how similar it looks to the command that is used to get the Pylontech batteries into 'debug/communication' mode when connecting through the console/rs232 port. Apparently, if you connect at 1200bps, and then send the command ~20014682C0048520FCC3\n, you can then switch to 115200bps and will see the prompt: pylon> Next, I turned my attention to the Console port on the US3000C and connected using a terminal session on my computer. Initially I connected at 1200bps and sent '~2001464F0000FD99\n' (the same info as sent by the inverter), but just got gibberish. I gradually increased the baud rate, and eventually when connecting at 115200bps and sending '~2001464F0000FD99\n', I received the following: @ Unknown command '[18]˜à[18][1E]x[18][1E]x[06][18][18][18][18]``f˜ø˜[1E]~2001464F0000FD99' - try 'help' $$ pylon_debug> So, it would appear that the US3000C is in 'debug/comms/whatever you want to call it' mode already, and therefore, the query being sent by the Solax is not being processed as it should. Does anybody know if it's possible to get the US3000C console port in to whatever mode earlier versions had? I'm sure that if we can revert it back somehow, it would then work with the Solax inverters by running a cable between the BMS port on the Solax and the Console port on the Battery. For reference, I have the newer hardware revision running the latest v1.8 firmware (as opposed to the older style running v2.8 firmware). I don't know whether this change in the Console port is due to the fact it's a model C or whether it is some change that occurred between the two different hardware revisions.
-
Pylontech US3000C Firmware
Use the tool. It will check whether your battery is the old or new type, and will install the appropriate firmware version. It sounds like all of your batteries are the newer type that use the lower firmware revision, and will update them all to v1.8. Using the tool will make sure that it definitely installs the correct one.
-
Solax inverter - comms with Pylontech US3000C BMS
A year down the line and i was just wondering if anybody has had any luck with this. Every so often, I take another look into it to see if I can work anything out. I did just look up the Extra 2000 specs (the batteries I had before the US3000Cs), and the BMS port on that looks as though it was RS232 only. I have just tried wiring the Solax to the Console port on the US3000C, but I'm not hopeful!
-
Pylontech US3000C Firmware
PS for your serial cable, I think Rx at one end needs to connect to Tx at the other - ie it needs to be a crossover. I'm not 100% on that, but am reasonably sure. Hopefully somebody else can confirm.
-
Pylontech US3000C Firmware
Interesting! Is your inverter a Solax? Which model? What port are you connecting to on the batteries? Documentation on the batteries specifically states that the model C has to be the master, and I don't think any firmware update will change that.
-
Solax inverter - comms with Pylontech US3000C BMS
Nope - no joy yet. I gave up emailing Pylontech and Solax - all of my messages just went unanswered. The manual settings do seem to be working OK for charging and discharging, but it would be nice to get some accurate info from the BMS. Does anybody have any suggestions here? The Solax seemed to work so much better with the old Extra 2000 batteries.
-
Pylontech US3000C Firmware
Thanks for the motivation I ended up upgrading them. All went through without a hitch. All lights went off, and then at around 79% the device rebooted. When updating the Master, everything went through as normal. When updating the secondaries, all lights went off on the master except for a solid red alarm light - it returned to normal when the secondary had rebooted. The third battery had a slight weird issue at the end where it said it had failed to write the coulomb and then prompted for the serial number. But everything seemed normal once it completed. All batteries are now showing 1.4 I still can't get them to talk properly to my Solax SK-SU3700, but I think that's an issue with the inverter. I'm now trying to work out where to get Solax firmware updates from
-
Pylontech US3000C Firmware
I was toying with the idea of upgrading the firmware on my new US3000C batteries, but am going to give it a miss for now. What I did notice, though, is that my new batteries (less than a week old) come with 'Soft version' 1.3 and a release date of 27th December 2021. I also have C3 as characters 8 and 9 of my serial numbers. Looking in the zip file for the latest release, there are 2 .bin files: US_C_NT_V1.4_Crc.bin us_c_v2.7_Crc.bin So, it looks like one is v1.4 for the newer models, and one is v2.7 for the older models. Therefore, if your version is currently higher than 1.4, the you will have the older version. Do Pylontech have any release notes for their firmware updates? I'd like to know what it fixes (if anything) before updating. Thanks.
-
Solax inverter - comms with Pylontech US3000C BMS
Hi. Sorry to bring up an older topic, but I'm really seeking some advice on this as well. I also have an SK-SU3700 and have gone for 3 x US3000C batteries to replace my two Extra 2000 batteries. The previous batteries had an RS232 interface which interacted with the inverter really well - in the status, it would show that BMS was connected, and if I unplugged that cable, it would show a BMS lost error message. With the new set up, I've tried pins 1 & 2 at the inverter, and pins 4 & 5 at the battery (I also included pin 3 at the inverted to pin 6 at the battery for ground). It doesn't seem to complain, but equally doesn't seem to do anything either - it shows BMS disconnected in the status, and unplugging the cable seems to have no effect. I also tried wiring the Console connection from the battery to the inverter (using the documented pinouts for RS232), but that didn't seem to communicate either. I ended up manually configuring 45.9V discharge cutoff voltage (45.5 was too low and caused an alarm), and 52.4v charge cutoff voltage (as recommended by Victron somewhere). I also upped the charge and discharge current to 75A (25A for each battery pack seemed fair, and I have 80A fuses on the DC) These figures seem to allow the battery to operate pretty well with the Solax inverter, but there doesn't seem to be any battery communication at all. The inverter uses the voltage to determine the SOC which is wildly inaccurate!! Pylontech report that the US3000C batteries are compatible with the SK-SU range of inverters, but I'm not sure to what level. I assumed that the BMS would be able to communicate, but am now wondering if my expectations were too high. Does 'compatible' just mean that they'll work together for battery storage provided you get the manual settings reasonably correct? Or is it fully compatible, and should I be able to get the battery to report full information to the inverter?! I'd love to know if anyone has a similar set up, and how they ended up configuring it all. Thanks.