-
-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Daly BMS to Solis inverter. #81
Comments
Which communication (CAN/RS485/ModBus) does your Solis inverter support? |
CAN/RS485 |
@DMIINC could you please attach the communications protocol so that I can check? |
Hi @DMIINC, This states that it supports the Pylontech. Have you tried to configure the PYLON_HV_CAN binding for your inverter? I think that should work. You might have to do a corresponding configuration in your Solis inverter. |
Ok. Will try here in day or two. I will report my findings here. Thank you . |
2024-11-21 20:33:27.904 | INFO | Thread-2 | toinverter.core.Port:111 | Opening can_0 ... 2024-11-21 20:33:27.907 | ERROR | Thread-2 | stoinverter.core.BMS:192 | Error requesting data! Tried can0 also but no dice. What you think. Thanks, Using board from your recommend list Waveshare 2CH-CAN hats. Anything special for it? |
2024-11-21 21:44:59.909 | INFO | Thread-2 | toinverter.core.Port:111 | Opening can0 ... 2024-11-21 21:44:59.912 | ERROR | Thread-2 | stoinverter.core.BMS:192 | Error requesting data! |
Or how would you setup this board. Please do tell. Thanks |
Hi @DMIINC, |
I think I solved that issue. I have another one. What do you think? I got this one https://www.waveshare.com/wiki/2-CH_CAN_HAT%2B 024-11-23 06:12:48.119 | ERROR | Thread-2 | stoinverter.core.BMS:192 | Error requesting data! |
We are getting somewhere. dalibor@powerwall2:~ $ sudo ./start.sh 2024-11-23 07:08:03.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:04.458 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:05.458 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:06.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:07.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:08.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:09.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:10.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:11.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:12.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:13.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:14.459 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-23 07:08:14.460 | INFO | main | verter.BmsToInverter:290 | Starting inverter sender... 2024-11-23 07:08:14.479 | INFO | Thread-2 | verter.BmsToInverter:390 | BMS alarms: 2024-11-23 07:08:15.495 | ERROR | Thread-3 | verter.core.Inverter:198 | Failed to send frame to inverter PYLON_HV_CAN :Buffer (HEX): [null] tel.schich.javacan.platform.linux.LinuxNativeOperationException: Unable to read from the socket - errorNumber=11, errorMessage='Resource temporarily unavailable' |
dalibor@powerwall2:~ $ ifconfig can1: flags=193<UP,RUNNING,NOARP> mtu 16 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 dalibor@powerwall2:~ $ |
Hi @DMIINC,
But sometimes I get the same error that
if the device is not connected properly. For now - to test the BMS - I would recommend to set the inverter to the NONE binding. |
Thanks for the reply. I can use either interface board or can lines from BMS itself. I know I get canbus data out from BMS since in some combinations on inverter and BMS i will get at least correct SOC. I will try above script and see if it helps. Thank you. |
ok, great. Yes, then I think its either the BMS id or a wrong CAN configuration (e.g. baudrate). You can set the BMS id via the DIP switches on the interface board. |
Dip switches on interface board are all in off position. Do you suggest something different. What baud rate would you try? |
no previous error as of now. I do get this G | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:20.281 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:20.281 | DEBUG | Thread-2 | .DalyBmsCANProcessor:46 | SEND: Buffer (HEX): [0x40, 0x01, 0x98, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:20.282 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x98, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:20.282 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-11-24 08:07:21.281 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:21.281 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:21.281 | INFO | Thread-2 | verter.BmsToInverter:320 | 2024-11-24 08:07:21.282 | INFO | Thread-2 | verter.BmsToInverter:390 | BMS alarms: 2024-11-24 08:07:21.514 | DEBUG | Thread-3 | verter.core.Inverter:150 | Inverter PYLON_HV_CAN received: Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x50, 0x4E, 0x00] 2024-11-24 08:07:21.514 | DEBUG | Thread-3 | verter.core.Inverter:160 | Inverter PYLON_HV_CAN received (after running plugins): Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x50, 0x4E, 0x00] 2024-11-24 08:07:22.282 | INFO | Thread-2 | verter.BmsToInverter:268 | Reading BMS #1 DALY_CAN on can0... 2024-11-24 08:07:22.283 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x90, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:22.283 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-11-24 08:07:22.284 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:22.284 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:22.284 | DEBUG | Thread-2 | .DalyBmsCANProcessor:46 | SEND: Buffer (HEX): [0x40, 0x01, 0x91, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:22.284 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x91, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:22.285 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-11-24 08:07:23.281 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:23.281 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:23.282 | DEBUG | Thread-2 | .DalyBmsCANProcessor:46 | SEND: Buffer (HEX): [0x40, 0x01, 0x92, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:23.282 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x92, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:23.282 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-11-24 08:07:23.515 | DEBUG | Thread-3 | verter.core.Inverter:150 | Inverter PYLON_HV_CAN received: Buffer (HEX): [0x5C, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:23.515 | DEBUG | Thread-3 | verter.core.Inverter:160 | Inverter PYLON_HV_CAN received (after running plugins): Buffer (HEX): [0x5C, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.281 | DEBUG | Thread-2 | ocol.can.JavaCANPort:82 | CAN read frame Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.282 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.282 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x00, 0x42, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.282 | DEBUG | Thread-2 | .DalyBmsCANProcessor:46 | SEND: Buffer (HEX): [0x40, 0x01, 0x93, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.283 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x93, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-11-24 08:07:24.283 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... |
It do not feel like it is transmitting to inverter at all dalibor@powerwall2:~ $ ifconfig can1: flags=193<UP,RUNNING,NOARP> mtu 16 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
but I think inverter is listening |
I think you need to set your DIP with the no. 1 switch to ON. Then you should received data from your BMS. Also select the BMS binding DALY_CAN and the ID 1 and baudrate 500000. |
Tried that and it does not work. Same outcome as before. |
Tried reversing call from can0 to can and it worked. Either can outputs on the boar are misprinted or software is coded reverse |
Great! You're getting data. That's a start 😄 |
Yes. The latest version. Thank you. |
Right, I made some changes to process the received data if it is valid response but not necessarily the requested response. Could you please try again and attach the log file? |
Here you go.... |
Attached logs includes me running my power wall today. Charging and discharging. Just FYI. |
So here are my findings: but were actually mixed up so max discharge current held the value of max charge current and vice versa as per spec the dis-/charge current limits are offset by 3000A (with unit 0.1A = 30000). The inverter then does this for: Disharge current limit: wrong value: -1000 as unsigned int_16 = 64536 -> 6453.6A So long story short, I fixed the Daly dis-/charge current limits. Now you should get the correct values if my assumptions are correct 😄 |
lol. I will test in a moment and let you know. |
BMS-to-Inverter.log |
Hi @DMIINC, |
Hi @DMIINC, |
You are welcome on the beer. Enjoy. I have one more request since I am not software guru like you. I am more of mechanical/electrical engineer. On Raspberry Pi how do I get CANBUS and your software to auto start upon boot: #!/usr/bin/env bash and ./start.sh |
I can not get CANBUS command to execute at all. I have been fighting this for couple of weeks now. Actually since we started this. I am not software guru like you but I know know enough to get PI going. LOL. I am doing something wrong but do not know what. |
Unless I manually execute sudo ip link set down can0 ./start.sh will have errors. |
Copy this to a file called startcan.sh to your home folder:
Give the read and execute permissions to the file:
Open the
Add the following two calls at the end of the
Save and exit the nano editor with |
Did you get it to start at boot time now? |
Unfortunately no. I have done exactly as you said but it does not start. |
Hmm, that is strange. Which PI version and OS do you have? |
Latest from November/24 Fully up to date. Raspberry Pi4b |
Hello. Upon further testing I have found that Multi BMS per inverter causes invalid information to be seen by inverter. See attache d pic and log file..No matter what setting I use in regards to communication the outcome is the same. I am using interface/parallel boards. |
I will check that. Maybe something is wrong during aggregation or the BMSes. But the total current and minimum cell voltage should really be working. I have also 8 Daly's in my setup. |
@ai-republic could you please share Pylon_HV can protocol document? Thank you. |
Thank you very much |
As a title say. What can be done and what would you need?
Nice project you got going. Sorry if I did not read everything and possibly asking this question the wrong way.
Thanks,
The text was updated successfully, but these errors were encountered: