-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
SMA CAN Help #34
Comments
Hi @ironcowboysolar, Before we get you up and running I have a couple of questions on your setup:
Best regards, |
Thanks for the response! I purchased the BMS from Amazon. They’re Daly Smart BMS with Parallel Module and the Comm interface board. The technical documentation mentioned that they were ready for both CAN and RS485. Included is a picture of the batteries I build. I’m really hoping to be able to work this out otherwise in future builds I may switch reluctantly to Batrium. I bought a wave share can hat. |
Those boxes look great :) Did you already receive/install your Waveshare 2CH CAN hat? If you need any help I can assist you with that. You count the pins from the left side when the clip of the RJ45 plug is facing down. Then you are basically ready to run the Configurator app, choose log-level debug in the general settings and then add your BMSes with IDs 1-3 on port can0. Choose inverter as NONE for now. And then start the application. Please read also the Wiki - How to use for guidance. If you encounter any problems, just contact me :) |
Thanks for the response. Looks like I ordered the wrong CAN hat - the one I ordered is the single channel unit. I ordered the 2 channel unit which should be here tomorrow. -Edit- I finally found your detailed instructions. I have installed Java SDK on my computer and completed the configurator parameters as detailed for SMA. Created a clean install file. Most of the questions I have are mostly related to setting up the Rpi. Here's my questions:
Thanks again! |
Alright, cool. So
|
Ok, I have some good news and some not good news. The good news is that I got the CAN hat installed and was able to validate the function of can1 sending and can0 receiving. I ended up installing configurator directly on the rPi. I created a clean install file. here’s where I ran into an issue: When I execute the shell script “Start” nothing happens. If I select execute in terminal, the terminal window opens and quickly closes without any indication that it’s doing anything. so I tried to open terminal to manually execute the start file from root user. When I do that, it says “cannot access the jarfile” In response to this, I copied the jarfile path from the “lib” folder, as detailed the “start” file, then from terminal I executed the file directly “Java -jar lib/bms-to-inverterblahblah.jar” In a nutshell, it seems like the start sh file may not be working, but the .jar file it says it doesn’t have access to definitely works. thoughts? |
Did you change the permissions like described in the Wiki:
I think that will solve your issue. For easier starting and more control I changed the So please download the latest Configurator application choose your installation folder and just click Update configuration. |
@ironcowboysolar did it solve your issue? |
Oh man lots of information here to share. First thing is to get the shell script to work I had to put the _specified_file paths for all of the files detailed in the shell script. I also had to set chmod permissions to 755. To make the shell script execute automatically upon startup I had to add a bash script for the start.sh file and I had to add chmod +x to the rc.local file and all the configurator files. Now when I execute start.sh in terminal I can see all the processes running as it tries to open ports and send and receive data. Now for the complicated stuff. I have not been able to verify that the CANBUS ports on the interface boards actively transmit any data. Using the DALY app, I have been able to set the communication protocol to SMA CAN, as well as save the setting, but i'm still unable to read anything and I'm not sure if it's actually doing anything. I have a CAN reader for my laptop but the software that comes with it sucks so I'm going to get a better one. With the BMS to inverter running, when I try to give the command "ifconfig can0" it doesn't show that its receiving any information packets, nor does candump can0. Maybe you're correct about the BMS being shipped without CAN capabilities, but the amazon page where I bought it from states that it's supposed to have CAN/UART/RS485 support. I have a few options at this point. Seemingly, the worst case scenario would be that I translate from Daly RS485 to SMA CAN, but from what I can tell, my CAN hat does not support RS485. Seems like I'll need to get a two channel CAN hat that supports both protocols to be able to do this. I can also get a decent CAN reader from my laptop so that I could verify whether or not the CAN ports transmit data. Due to some of what the log file states, I am suspicious that maybe the CAN hat is improperly installed. Here is a brief copy and paste from the log file: **2024-08-07 16:53:04.588 | INFO | Thread-2 | toinverter.core.Port:113 | Opening port can0 SUCCESSFUL 2024-08-07 16:53:04.589 | ERROR | Thread-2 | ractDalyBmsProcessor:70 | Failed to initialize BMS! 2024-08-07 16:53:04.592 | ERROR | Thread-2 | stoinverter.core.BMS:149 | Error requesting data! I'm interested to hear your ideas on this. Thanks! |
You could loop both canhat channels together and send some can commands with one and recieve with the other, that way you'll see that the hat works atleast. |
I have opened two terminal windows and did a candump can0 and then cansend can1 000#11 22 33 44 55 This works like its supposed to. |
Check this out, may need to send a message first to get it to start sending data, |
|
I can recommend chatting to a Daly representative directly. They are very responsive. Here's a WhatsApp link from their Website: Or just send them an email. You'll probably have to send a picture of the BMS and S/N. |
You have configured the DALY_RS485 BMS binding but specified You could also test it via the PI serial ports pins 8 and 10: Then you need to connect your PI and Daly pins TX->RX and RX -> TX: |
Once the CAN is connected it usuallly works out of the box. To be sure you can restart the BMS (either via their PC software, or interface board or disconnecting the battery cable shortly). |
If you use the DALY_CAN BMS binding then please set the 'Inverter Manager' to NONE and not to SMA! Or you could set the SMA_CAN BMS binding, but I recommend the Daly binding for your Daly 😉 Now I hope all that information will bring you forward! Happy reading 😆 and don't hesitate to ask questions! |
Sorry, I accidentally posted the part of the log where it was tinkering with the Daly RS485. Here's the same log from when it was set to Daly_CAN "2024-08-07 16:56:40.607 | INFO | main | erter.core.util.Util:35 | Loading config.properties from: /home/pi/configurator/config/config.properties 2024-08-07 16:56:44.755 | DEBUG | Thread-2 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x40, 0x02, 0x50, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-07 16:56:44.759 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-08-07 16:56:45.818 | DEBUG | Thread-2 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x40, 0x02, 0x90, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-07 16:56:45.819 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... |
Did you configure your CAN hat properly and have you pulled the can0 interface up with:
sudo ip link set can0 type can bitrate 500000
sudo ifconfig can0 up
|
This was copy pasted from my rc.local file so that it executes upon startup. #!/bin/bash Initialize CAN BUSsudo ip link set can0 up type can bitrate 1000000 |
Thanks @ironcowboysolar - could you try setting the bitrate to 500000 please? I think the Daly only supports that. |
OK, so every time I try this I get further and I think I'm very close to getting this to work. I was able to get a voltage on the CAN pins on the Daly, but since I'm unsure about it, I installed the RS485 CAN Hat and decided to go with the DALY_RS485 binding. After I dialed it in some, I was able to confirm that the rPi was definitely receiving RS485 information from the BMS. Upon reboot, my rPi boots to terminal and the start.sh script is executed automatically after it boots. As it started scrolling through all the data, I could briefly see where the rPi was collecting data, such as the voltages of the various cells and the state of charge, etc. Also, when this was running, I did a candump and could see lots of CAN data. ifconfig also said that there were numerous packets being sent etc. Now my problem is that I can't seem to get the Sunny Island to recognize the CAN data. When I set up the inverter for Li_Batt_EXT_BMS, upon boot up it works for a minute and then I get a BMS timeout error. During the time that it does run, it does not receive the SOC information from the rPi. The configurator is set to SMA_CAN binding on port can0 with a baudrate of 500,000. There is a resistor on the rPi and a resistor on the other SMA. Do you have any suggestions or tips? I feel like I'm close to a breakthrough. Thanks for your detailed responses. -EDIT- So I noticed above that you said that the RX goes to the TX in between devices and vice versa. Is that the same for A and B? The Daly has a wiring harness for RS485 that has A and B labeled. Are you saying that A on the Daly should go to B on the rPi and vise verse? |
Hi @ironcowboysolar,
For the RS485 you do not have to connect A->B, B->A, just connect A->A, B->B. That would only be for serial communication using RX, TX. So assuming you're running RS485 on your Daly: can we test just the Daly binding first please? |
I have the BMS to Inv program set to execute on startup after the rPi boots into terminal instead of the desktop environment. When it starts up, it goes through the boot process, and after that I can see it quickly processing data packets on the screen and I can catch bits of the data as it rains down. I can see that from the Daly, it receives the BMS info such as cell voltage, temps, SOC and other things. Lots of RECEIVED on serial0 and SENDING on can0. Here's the log file details: 2024-08-11 19:24:17.764 | INFO | Thread-2 | n.DalyMessageHandler:164 | BMS #1: 53.0V, -7.5A, 70.9SOC 2024-08-11 19:24:17.799 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:17.800 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:17.801 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x91] 2024-08-11 19:24:17.802 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:17.803 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:17.804 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:17.805 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0F] 2024-08-11 19:24:17.806 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:17.807 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xEA] 2024-08-11 19:24:17.808 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x10] 2024-08-11 19:24:17.809 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x02] 2024-08-11 19:24:17.810 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xC5] 2024-08-11 19:24:17.811 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x1A] 2024-08-11 19:24:17.893 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x91, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E] 2024-08-11 19:24:17.987 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x91, 0x08, 0x0C, 0xF3, 0x0F, 0x0C, 0xEA, 0x10, 0x02, 0xC5, 0x1A] 2024-08-11 19:24:17.988 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x91, 0x08, 0x0C, 0xF3, 0x0F, 0x0C, 0xEA, 0x10, 0x02, 0xC5, 0x1A] 2024-08-11 19:24:17.988 | INFO | Thread-2 | n.DalyMessageHandler:184 | Battery 2 Min/Max/Diff: 2024-08-11 19:24:18.019 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.020 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.021 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x92] 2024-08-11 19:24:18.022 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.023 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x47] 2024-08-11 19:24:18.024 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x02] 2024-08-11 19:24:18.025 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x47] 2024-08-11 19:24:18.026 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.027 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xEA] 2024-08-11 19:24:18.028 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x10] 2024-08-11 19:24:18.029 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x02] 2024-08-11 19:24:18.030 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xC5] 2024-08-11 19:24:18.031 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x92] 2024-08-11 19:24:18.117 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x92, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F] 2024-08-11 19:24:18.211 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x92, 0x08, 0x47, 0x02, 0x47, 0x01, 0xEA, 0x10, 0x02, 0xC5, 0x92] 2024-08-11 19:24:18.211 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x92, 0x08, 0x47, 0x02, 0x47, 0x01, 0xEA, 0x10, 0x02, 0xC5, 0x92] 2024-08-11 19:24:18.212 | INFO | Thread-2 | n.DalyMessageHandler:204 | Battery 2 Temperature: 2024-08-11 19:24:18.259 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.260 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.261 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x93] 2024-08-11 19:24:18.262 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.263 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x02] 2024-08-11 19:24:18.264 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.265 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.266 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF5] 2024-08-11 19:24:18.267 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.268 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x03] 2024-08-11 19:24:18.269 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x3E] 2024-08-11 19:24:18.270 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xDC] 2024-08-11 19:24:18.271 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x57] 2024-08-11 19:24:18.341 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x93, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80] 2024-08-11 19:24:18.435 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x93, 0x08, 0x02, 0x01, 0x01, 0xF5, 0x00, 0x03, 0x3E, 0xDC, 0x57] 2024-08-11 19:24:18.436 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x93, 0x08, 0x02, 0x01, 0x01, 0xF5, 0x00, 0x03, 0x3E, 0xDC, 0x57] 2024-08-11 19:24:18.436 | INFO | Thread-2 | n.DalyMessageHandler:241 | Battery 2 Dis-/Charge data: 2024-08-11 19:24:18.469 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.470 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.471 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x94] 2024-08-11 19:24:18.472 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.473 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x10] 2024-08-11 19:24:18.474 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x02] 2024-08-11 19:24:18.475 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.476 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.477 | INFO | Thread-6 | verter.BmsToInverter:264 | Sending to inverter SMA_SI_CAN on can0... 2024-08-11 19:24:18.478 | DEBUG | Thread-6 | verter.core.Inverter:89 | Inverter received: Buffer (HEX): [null] 2024-08-11 19:24:18.478 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.479 | INFO | Thread-6 | InverterCANProcessor:48 | Sending SMA frame: Batt(V)=53.0, Batt(A)=-7.5, SOC=70.8 2024-08-11 19:24:18.480 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x51, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02, 0xA0, 0xF6, 0x60, 0x09, 0x78, 0x01] 2024-08-11 19:24:18.481 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.481 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x51, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02, 0xA0, 0xF6, 0x60, 0x09, 0x78, 0x01] 2024-08-11 19:24:18.482 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xB2] 2024-08-11 19:24:18.482 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x55, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.483 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x55, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.484 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x56, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xB4, 0x14, 0xB5, 0xFF, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.485 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x56, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xB4, 0x14, 0xB5, 0xFF, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.486 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.487 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:18.565 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x94, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81] 2024-08-11 19:24:18.659 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x94, 0x08, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4B, 0xB2] 2024-08-11 19:24:18.660 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x94, 0x08, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4B, 0xB2] 2024-08-11 19:24:18.661 | WARN | Thread-2 | alyBmsRS485Processor:150 | Command 0x94 to BMS 1 successfully sent and received! 2024-08-11 19:24:18.699 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.700 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.701 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x95] 2024-08-11 19:24:18.702 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.703 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.704 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.705 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.706 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] I can see that this information is being transmitted via the can0 port. |
Here's some more logs that may be useful: 2024-08-11 19:24:18.725 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xEF] 2024-08-11 19:24:18.726 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.727 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.728 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.729 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.730 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.731 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x88] 2024-08-11 19:24:18.744 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.745 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.746 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x95] 2024-08-11 19:24:18.749 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08, 0x03] 2024-08-11 19:24:18.752 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C, 0xF1] 2024-08-11 19:24:18.752 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.753 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.754 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.755 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.756 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.757 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x8A] 2024-08-11 19:24:18.769 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.770 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.771 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x95] 2024-08-11 19:24:18.772 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.773 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x04] 2024-08-11 19:24:18.774 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.775 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.776 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.777 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.778 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.779 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF2] 2024-08-11 19:24:18.780 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.781 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x8D] 2024-08-11 19:24:18.789 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x95, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82] 2024-08-11 19:24:18.789 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.790 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.791 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x95] 2024-08-11 19:24:18.792 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.793 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x05] 2024-08-11 19:24:18.794 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.795 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.796 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.797 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.798 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.799 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.800 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.801 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x90] 2024-08-11 19:24:18.809 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.810 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.811 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x95] 2024-08-11 19:24:18.812 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.813 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x06] 2024-08-11 19:24:18.814 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.815 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xEA] 2024-08-11 19:24:18.816 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.817 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.818 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x0C] 2024-08-11 19:24:18.819 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xF3] 2024-08-11 19:24:18.820 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.821 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x88] 2024-08-11 19:24:18.882 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x01, 0x0C, 0xF2, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x8B] 2024-08-11 19:24:18.883 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x01, 0x0C, 0xF2, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x8B] 2024-08-11 19:24:18.884 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 0, Cell No: 1. 3314mV 2024-08-11 19:24:18.887 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x02, 0x0C, 0xEF, 0x0C, 0xF2, 0x0C, 0xF3, 0x4B, 0x88] 2024-08-11 19:24:18.888 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 1, Cell No: 4. 3311mV 2024-08-11 19:24:18.892 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x03, 0x0C, 0xF1, 0x0C, 0xF2, 0x0C, 0xF2, 0x4B, 0x8A] 2024-08-11 19:24:18.892 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 2, Cell No: 7. 3313mV 2024-08-11 19:24:18.895 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x04, 0x0C, 0xF3, 0x0C, 0xF2, 0x0C, 0xF2, 0x4B, 0x8D] 2024-08-11 19:24:18.895 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 3, Cell No: 10. 3315mV 2024-08-11 19:24:18.899 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x05, 0x0C, 0xF3, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x90] 2024-08-11 19:24:18.899 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x05, 0x0C, 0xF3, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x90] 2024-08-11 19:24:18.900 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 4, Cell No: 13. 3315mV 2024-08-11 19:24:18.904 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x06, 0x0C, 0xEA, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x88] 2024-08-11 19:24:18.905 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x95, 0x08, 0x06, 0x0C, 0xEA, 0x0C, 0xF3, 0x0C, 0xF3, 0x4B, 0x88] 2024-08-11 19:24:18.905 | DEBUG | Thread-2 | n.DalyMessageHandler:289 | BMS #1, Frame No.: 5, Cell No: 16. 3306mV 2024-08-11 19:24:18.908 | WARN | Thread-2 | alyBmsRS485Processor:150 | Command 0x95 to BMS 1 successfully sent and received! 2024-08-11 19:24:18.949 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:18.950 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.951 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x96] 2024-08-11 19:24:18.952 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:18.953 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:18.954 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x47] 2024-08-11 19:24:18.955 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x47] 2024-08-11 19:24:18.956 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.957 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.958 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.959 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:18.960 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x4B] 2024-08-11 19:24:18.961 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x1E] 2024-08-11 19:24:19.037 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x96, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83] 2024-08-11 19:24:19.133 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x96, 0x08, 0x01, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x1E] 2024-08-11 19:24:19.134 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x96, 0x08, 0x01, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x1E] 2024-08-11 19:24:19.135 | INFO | Thread-2 | n.DalyMessageHandler:327 | BMS #1, Frame No.: 1, Sensor No: 1. 31�C 2024-08-11 19:24:19.189 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:19.191 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:19.192 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x97] 2024-08-11 19:24:19.193 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08, 0x00] 2024-08-11 19:24:19.194 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.195 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.197 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.198 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.199 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.200 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.200 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.202 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x45] 2024-08-11 19:24:19.277 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x97, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84] 2024-08-11 19:24:19.374 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x97, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45] 2024-08-11 19:24:19.375 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x97, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45] 2024-08-11 19:24:19.377 | INFO | Thread-2 | n.DalyMessageHandler:378 | BMS #1, Cell Balance State: 2024-08-11 19:24:19.409 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0xA5] 2024-08-11 19:24:19.410 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x01] 2024-08-11 19:24:19.411 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x98] 2024-08-11 19:24:19.412 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x08] 2024-08-11 19:24:19.413 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.414 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.416 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.417 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.418 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.419 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00, 0x00] 2024-08-11 19:24:19.421 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x00] 2024-08-11 19:24:19.422 | DEBUG | Thread-11 | s485.JSerialCommPort:200 | Received: Buffer (HEX): [0x46] 2024-08-11 19:24:19.488 | INFO | Thread-6 | verter.BmsToInverter:264 | Sending to inverter SMA_SI_CAN on can0... 2024-08-11 19:24:19.491 | INFO | Thread-6 | InverterCANProcessor:48 | Sending SMA frame: Batt(V)=53.0, Batt(A)=-7.5, SOC=70.8 2024-08-11 19:24:19.495 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x51, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02, 0xA0, 0xF6, 0x60, 0x09, 0x78, 0x01] 2024-08-11 19:24:19.496 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x55, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.497 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x55, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.499 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x56, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xB4, 0x14, 0xB5, 0xFF, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.500 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x56, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xB4, 0x14, 0xB5, 0xFF, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.501 | DEBUG | Thread-6 | verter.core.Inverter:94 | Inverter send: Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.502 | DEBUG | Thread-6 | ocol.can.JavaCANPort:113 | CAN frame sending: Buffer (HEX): [0x59, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-08-11 19:24:19.514 | DEBUG | Thread-2 | alyBmsRS485Processor:67 | SEND: Buffer (HEX): [0xA5, 0x40, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85] 2024-08-11 19:24:19.609 | DEBUG | Thread-2 | s485.JSerialCommPort:149 | Next frame: Buffer (HEX): [0xA5, 0x01, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46] 2024-08-11 19:24:19.611 | DEBUG | Thread-2 | alyBmsRS485Processor:85 | RECEIVED: Buffer (HEX): [0xA5, 0x01, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46] 2024-08-11 19:24:19.611 | WARN | Thread-2 | alyBmsRS485Processor:150 | Command 0x98 to BMS 1 successfully sent and received! 2024-08-11 19:24:19.613 | INFO | Thread-2 | verter.BmsToInverter:360 | BMS alarms: |
This battery is about 45 minutes from me, so every trip I take costs me a fair bit of time and money. If it's possible, I'd like to go out there with a specific goal or few different things to try unless you would be able to support in realtime. Thank you! |
Hi @ironcowboysolar, For me to access your PI remotely you would need to either install a RDP application (like pi-connect, teamviewer, etc.) or create port forwarding to your PI's internal IP on the SSH port (22) on your router and send me the external IP of your router and a user login user/pwd on your PI. |
I have still been unable to realise communication between the rPi and the SMA. When you say this part "I have added support for inverter and BMS plugins and for your case I added a plugin to use preset values for batteries if the battery information has not yet been read. I also fixed a few other things concerning aggregation of some values. I also updated and fixed the Configurator app" Does this mean that I just need to re-download configurator, and extract the contents over the old files? When you mention plugins, I'm not sure exactly what you mean and how to apply them. In exactly what way did you add the support and how do I utilise it? A few weird things: The first is that the BMS-to-Inverter log file, it doesn't show the data that appears every time the app is running. It seems to log sporadic sections of data and I haven't been able to figure out what conditions need to be met for it to record into the log. For this reason I can't even show you what the latest logs of the app were because i can't copy and paste from terminal. The information is gone now. In my rc.local file, I added code to initialise the CAN driver upon startup and to set the bitrate. Here's the code: sudo ip link set can0 type can bitrate 500000 Is it possible that the BMS-to-Inverter app already has this code somehwere, which would conflict with the rc.local script happening upon start up? Maybe the app sees that can0 is already in use? Should I start the app with can0 down? From what I can tell the RS485 to the rPi is working. When the app is running in terminal, I can see that it receives all the data including voltage, cell voltages, balance status, temperature, internal resistance and crap like that. The issue seems to be transmitting the data via CAN, the can numbers that it appears to send out don't change. A candump does show lots of data and ifconfig shows packets, but it seems to be the same numbers over and over again, which is maybe a null. I went back to the Waveshare Wiki for the RS485 CAN hat and realised that i didn't have the python plugin for "can" downloaded. I did that and tested the can via python receive.py and send.py and it worked. I think this is just used for testing but maybe it had something to do with this problem. I can see that when I execute the send and receive test via python, if can0 is up when it starts it will say "busy" or network is down or something similar. Excited to hear any ideas you may have with this information and I'm really hoping to discover what I'm doing wrong. Thanks! -EDIT- I'm currently using the Daly RS485 binding, and for debug purposes, I have tried it with "none" under inverter type as well as "SMA_CAN" inverter type. |
Hi @ironcowboysolar,
|
In response to number two: I understand about the logs folder and the logs file. What I was saying is that the file "BMS-to-Inverter.log" does not always log what happens in terminal as the program runs. If I open the file now it only shows logs from earlier that day and doesn't show any of the things I was seeing before I decided to give up. |
Hi @ironcowboysolar, |
Right, I added the manufacturer code and battery type and -capacity settings also. Let me know how it goes 😄 |
Freaking sweet! Is it ready to download and install? Thanks for your continued support. |
@ironcowboysolar yes. You'll need to get the latest Configurator application and do a clean install. If you choose an existing installation folder it'll load your existing configuration file |
@ironcowboysolar did you get a chance to test everything? How's everything working out? |
I was able to get the app to work enough so that the inverter stays on. Felt great. There's a few bugs that need to be worked out but for the most part at least its running. Thanks for your help! A few things I noticed that were strange: It doesn't let me manually change the battery charge values. Does the inverter get this information from the BMS? Because I never set voltages for the Boost, Absorb, etc charges on the BMS, only low battery disconnect and high battery disconnect. The default charging settings on the SMA are based for a (24) cell lead acid battery, so you have to take the desired charge voltage voltage and divide it by 24 to be able to input the parameter on the SMA, the default setting is @2.4v per cell (57.6v) and I need to lower that charging value to about 55.4v @2.3v per cell because 57.6v is the cutoff voltage on the BMS. When I try to change the setting it defaults back to 2.4v immediately after changing it. What happens is when the inverters charge the battery, the voltage quickly climbs to 56 and then past 57, triggering the cutoff on the BMS. The second issue may or may not be related to your app. I have an AC coupled inverter connected to the SMA which has been working in open loop mode (VRLA), but since I've had it running on closed loop, the inverter frequency seems to stay shifted up which is keeping the AC coupled inverter throttled down. In a nutshell in closed loop the Sunny Island inverter is not allowing the AC coupled inverters to send it power by keeping the frequency above a certain level. Even at 30-40% SOC the GT inverter never reaches a frequency low enough to be allowed to activate. I'm going out there today to see if the AC coupled inverter still works if I put it back in closed loop and I'm going to play with the settings on the BMS to see if I can get the charging settings to work better. Thanks for all your help. Interested to hear any tips or tricks you used to get your system dialed in. |
With the SI set to Lithium and successfully receiving Canbus from a BMS then the SI only takes the target V to charge up to from the BMS, you may be able to change it as I can on my SI5048 but 5 mins later it is back to the BMS target V. There is one wrinkle to this, when the SI is off grid then as the Frequency Shifting to curtail the PV output lags then the target V is exceeded so SMA reduce the SI Target V by 1V when the SI is off grid, when the SI is on grid then excess can be sent to the grid so the 1V is added back. So as I run 100% off grid my BMS target V for a 48V nominal Lithium is set to 56,2V and the SI displays its target V as 55.2V. SI SOH is always 100%, even if the BMS reports 100% SOC at a low V the SI should still charge to the Target V. So instead of a 24 cell V on Boost, Full and Float the SI works to this parameter Parameter BatChrgVtgMan 55.2V There is also a rare bug whereby in Lithium mode the SI frequency goes out of control and shuts the PV inverters down before the Target V. My setup has never exhibited this at all, only been told of one instance. Only fix so far is to revert to SI lead acid and go open loop comms. |
I get that there would be some discrepancies with the frequency, but when I was running off of closed loop I looked at the screen on my Sunny Boy inverter and it said the frequency was at 69 hz with the battery at 30%. I’m not sure why the SI would respond in that way but due to being AC coupled, the system is still non-op in closed loop. I’m very happy to have made progress though. |
Until there is a fix for this Frequency shifting bug then stay on open loop. If you tell the SI the battery is 46V initially then you go lower than 2.3V per cell so the SI does not go too high on V. There is a ticket into SMA on the Freq jump on lithium and also user testing. He has a number of SI's and only 2, which were linked as master slave, are affected, he has others that work and my master/slave works too. Which SI do you have, the faulty pair are SI6048US's. |
The high frequency bug fix on an SI6048US is to completely turn it off, remove all power connections using the breakers and wait at least 30mins. This discharges the capacitors so the boards are no longer powered and the temporary memory chips are wiped clean. You can then reboot and the memory is refreshed with good settings from the longer term memory chip. This needs to be done simultaneously on all connected SI's just in case one of the slaves is not updated properly from the master on reboot. As the capacitors will be empty you will need to set up a scheme to cope with the inrush current if the BMS does not recognise it as being different from an accidental short and shutdown. |
Hi guys, @ironcowboysolar if you want to manipulate the data from the BMS, i.e. max voltage limit, you could also try to use the ManipulateBatteryPackDataPlugin inverter plugin. Happy to hear the app is working well for you 😄 |
@ai-republic Did your Deye inverter get locked recently? I've seen some sources say that non Sol-Ark Deye inverters have been remotely deactivated by the company in China because selling them on the US market in competition with Sol-Ark is a breach of contract. If it hasn't been bricked, be careful connecting it to the internet. On a separate note, I'm having a strange issue and I would like to recruit your help, I'm willing to send a donation that is equivalent to your normal rate. As detailed in the comment a few weeks ago, in Li_Ion_EXT_BMS mode, the frequency walks all the way up to 70hz, which is actually high enough to damage any connected electronic devices. I've done some further troubleshooting, and even when the SMA is in VRLA mode (open loop), if I plug in the Raspbery Pi with the app running the frequency begins the walk up on the inverter. When this happens, it will stay at 70hz, even if I unplug the Raspberry Pi. After this, even with the Pi disconnected, if I put the inverter into stand-by and restart it, it will not fix the frequency issue. The only way to correct the issue is for me to turn the master inverter completely off and then turn it back on without the Pi connected. This tells me that there's something in the CAN data that causes the software on the inverter to react this way, even if the inverter isn't in closed loop mode.
@kommando828 These are the SI6048's
@kommando828 Tried this and it didn't correct the issue. The frequency walk begins as soon as the RPi with the CAN data is connected in ANY battery mode. I will attach a few photos and videos that show the issue. |
Here’s a video showing what happens. It does this in open loop mode and due to it being required to be plugged in to operate in ExtBMS mode, freq stays at 70hz any time the inverter is running. My.Movie.1-360p30.mov |
That looks similar to the other faulty SI6048, trouble is the turning off, waiting for total power down and then turning back on was the only fix tried and it worked first time. So any further possible fixes are untried, untested and so potentially could make the situation worse. If you are ok with that risk then this is how I would proceed. First I would make sure the SI is on the latest firmware and upgrade if necessary. Latest is FW 1 7.304 FW2 7.300 Second I would redo the turning off of the SI but leave it turned off for a lot longer ie several hours. It worked on one machine so its worth trying again just in case a residual charge kept the setting unchanged. If its still not working then these are the untried untested items to try. Note 1 relies on you having one good SI, if you don't have access to a working SI then you cannot try this one out. No point in me sending my version as mine are based on 230v 50hz and would mess your SI up, you need a set from a fellow SI6048US user already on the latest firmware but not necessarily on Lithium. The fault is likely one of these three. A. Firmware corruption on the SI chip. B. Parameters gone bad C. Hardware issue
On your good master, use the menu to copy the parameters to the SD card using 510.02 ParaSto and copy the parameters to set 1 and set 2. Take the SD card out and make a copy, put the original back into the good SI.. Now separately without connection to any good SI's fire up the defective SI and set it up as your good SI with the copied SD card in the slot, then as soon as its fired up go into 510.02 and load in from the SD card either set 1 or 2. If that fixes the issue then it was a parameter issue. If not then it's back to 1 or 3. To test A then you need to reload the firmware. This is the procedure for going back to a previous firmware, my guess is it will also work to reload the current firmware completely and hopefully overwrite any corruption. Description Procedure Then setup the SI and test. If that does not work then it makes 3 most likely, what component it could be is beyond my knowledge, it would have to be a component that works in lead acid but not in Lithium. |
@ironcowboysolar my Deye didn't get locked but then again I'm not residing in the US. |
Interesting video. I see that as soon as you plug it in the frequency starts to ramp up. Mine was doing something completely different. My system had been running off grid trouble free for several months. Then one morning about 7 am the UPS power supplies all started beeping at the same time and all the items are running off of the battery. Eventually, the batteries ran out and everything on those power supplies shut off. The only reason I heard or discovered there was a problem was because the UPS power supplies were all beeping at the same time. There was still 120/240 V power available so I did not know what caused the trouble. Somehow I managed to look at the frequency and saw that it was 70 Hz. I put info on the DIY solar forum. Spent a week trying to troubleshoot it and then the end discovered that removing all power sources and checking 0.0 V on both the AC and the DC solve the problem. Once all the power sources removed and the Sunny Island sat there for half hour or so then turning it back on it ramped up to normal 60 Hz. Before removal of power sources, the problem persisted in all 4 Sunny Island’s. Regardless of the setting and which one was the master and which ones was the slave they always ramped up to 70 Hz. I did try to set it to VRLA settings that also solved the problem. The Sunny Island ran at 60 Hz in open loop without communication. This seems to be different than what you experienced. But the only way to get the communication back up and running close loop was to actually remove the power sources. Still no idea what caused the trouble. SMA says it’s a safety issue so the SI does not charge the battery. Since it happened at 7 AM in the morning, the batteries were nowhere near 100% full. The Sunny Boys were also not producing any power at the time and moments before the frequency was 60 Hz. The error happened just around the time the sunny boys were waking up, but still certainly not producing a lot of power at all. Note. Turning the JKPBBMS off at the switch does not actually mean that there’s 0 V dc on it. Somehow voltage still leaks through there and only physically disconnecting the DC wires from the Sunny Island let everything reset back to normal. Like Kommando says, maybe it’s some sort of memory issue. Maybe between your experience in my experience, we can narrow it down a little? I have the SI logs from that time and need to see if anything unusual happened. Since you are working on the programming, maybe you can find somethgin there that causes it and resolve it? I did try to put a brand new Sunny Island on the same battery with lithium close loop settings and that particular unit ran perfectly fine with the same battery. So it does not seem to be the battery that is the cause of the problem. It was only the other Sunny Islands that had the problem. The problem seem to come out of nowhere. |
Si 70Hz Log 702 am 10-28-24.xlsx |
Note that like myself Calvin uses JK PB BMS series and has these in closed loop with the SI, no need for an intermediary. The JK PB BMS has a number of Canbus Protocols such as Pylontech etc but also one called FSS-ConnectingBat-TI-en-10 which when you look at the SMA SI protocol PDF I posted is the footer entry. When you select this on the JK then you get a working closed loop with an SMA SI but with an extra decimal on the figures eg SOC is 88.8% not 88% over Pylon which fits in with the PDF. I have never had the 70hz bug but the possibility is that the PDF has an error. IE two coders using the same document of the protocol but on different platforms cause the same issue then the smoking gun is the document. |
Hey @ai-republic on new builds with Daly BMS, in DALY_CAN mode, I keep getting this error: 2024-12-11 12:18:49.339 | INFO | main | til.SystemProperties:22 | Loading config.properties from: /home/pi/configurator/config/config.properties 2024-12-11 12:18:52.069 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x50, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-12-11 12:18:52.073 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-12-11 12:18:52.079 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x01, 0x80, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-12-11 12:18:52.081 | WARN | Thread-2 | .DalyBmsCANProcessor:94 | Message has wrong address and command id: Buffer (HEX): [0x01, 0x80, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-12-11 12:18:52.083 | DEBUG | Thread-2 | .DalyBmsCANProcessor:46 | SEND: Buffer (HEX): [0x40, 0x01, 0x53, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-12-11 12:18:52.086 | DEBUG | Thread-2 | ocol.can.JavaCANPort:115 | CAN frame sending: Buffer (HEX): [0x40, 0x01, 0x53, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 2024-12-11 12:18:52.088 | DEBUG | Thread-2 | ocol.can.JavaCANPort:76 | CAN frame read... 2024-12-11 12:18:52.094 | DEBUG | Thread-2 | .DalyBmsCANProcessor:75 | RECEIVED: Buffer (HEX): [0x01, 0x80, 0x07, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
|
@Calvin983 I've got some time now, I'll take a look at the logs you've sent. How's your experience been with JKBMS? I'm at the point where not only am I considering a switch, I'm going to retrofit my previous units. I've had nothing but trouble with Daly BMS and I consider myself relatively smart, so it almost has to be the BMS. Been looking at Batrium BMS too. Apparently REC is also a good BMS but they're super expensive. |
Hi. Didn’t know if I’d hear back but good to hear from you. With the JK so
far so good. Since we’re using Sunny Island‘s, it’s really the only game in
town other than REC.And REC would break the bank. I have eight jk right now
and just ordered eight more. Plus spares
the 70 Hz problem has not happened again so fingers crossed.
I did get a reply from SMA and they said it was a safety thing that the SI
went to 70 Hz. But other than that, they were not very helpful. They were
about as vague as they could be in terms of help so I kind of gave up on
them.
I did look around and check things and found that I had some stray AC and
DC voltage across the circuits. If you’re interested, I can send you a list
but what it was was a missing ground. Once I put the ground on all those
stray AC/DC voltages went away. So I’m not sure if that was anything
related to the 70 Hz but it certainly could’ve been.
Write the rec is like $800 for Sunny Island and I would need to buy 16
units and that’s just not practical moneywise.
Thanks,
Oliver
…On Wed, Dec 11, 2024 at 13:04 ironcowboysolar ***@***.***> wrote:
@Calvin983 <https://github.com/Calvin983> I've got some time now, I'll
take a look at the logs you've sent. How's your experience been with JKBMS?
I'm at the point where not only am I considering a switch, I'm going to
retrofit my previous units. I've had nothing but trouble with Daly BMS and
I consider myself relatively smart, so it almost has to be the BMS.
Been looking at Batrium BMS too. Apparently REC is also a good BMS but
they're super expensive.
—
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BNNPAH2JOZXDNOPLRHAD2ID2FCSHPAVCNFSM6AAAAABJ2KGBT2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMZXGE3TKNZWGA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@Calvin983 What model JK are you using? Are you available for a phone chat? |
JK. PB 200a 16 S 2 amp balancer.
Phone, yes I’m out of the country right now but next week would be OK.
Thanks,
Oliver
…On Wed, Dec 11, 2024 at 15:00 ironcowboysolar ***@***.***> wrote:
@Calvin983 <https://github.com/Calvin983> What model JK are you using?
Are you available for a phone chat?
—
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BNNPAHZY7NWFB7VEGOHAWKD2FC7XRAVCNFSM6AAAAABJ2KGBT2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMZXGM3TGNRQHE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I use the same JK BMS as Calvin, PB series 200A 2A active balancing. I use latest SI6048US firmware on an SI5048EM which is the 230V 50hz single phase version of the Sunny Island, one master and one slave. The only issue I have is SOC drift where in winter the SOC drifts lower than the V would suggest over time. Currently testing the latest 15.35 BMS firmware which is supposed to fix this, Two days testing says its better than the 15.24 I was running before. |
@ironcowboysolar so your DALY_CAN binding doesn't receive and proper data with the latest version? I just did a Clean install and it shows all correct values: |
This appears to be correct.Seth BaxterOwner/Operator, Iron Cowboy ***@***.*** 15386 Little Valley Rd, Grass Valley, CA 95949 On Dec 13, 2024, at 5:37 PM, Torsten Oltmanns ***@***.***> wrote:
@ironcowboysolar so your DALY_CAN binding doesn't receive and proper data with the latest version?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Any idea what’s causing the message address thing or where to look first? |
Update. I've tried using all of the other CAN bindings with a clean install just to see what happens, and while none of the others transmit the correct data, none of the others have the same message address and command ID error. |
@ironcowboysolar yes, this is only in the DALY_CAN / RS485 binding. This happens usually when the request is sent out to a BMS with a certain id and command but the response is for another id or command. This sometimes happened to me sometimes after I connected the Dali PC app or Bluetooth app to the BMS and it seems to go in a constant sending mode. After restarting the BMS again a couple of time it went back to the normal request/response mode. |
@ironcowboysolar I updated the Daly CAN binding to be more flexible. So when a response is received that does not match the request but is a valid response with a valid address and command id it will still be processed. This should get rid of those "message has wrong address and command" errors. |
Hi! I love what you’ve got going here. I recently built a battery pack with three Daly BMS and I am attempting to establish EXTBMS comms with SMA.
I saw your post on a forum and I have some rPi 4b’s laying around. I’m a novice in programming and raspbian. The most I’ve done on a rPi is emulation and tweak config files.
I’m also new to GitHub and I’m not even sure if this is where I post this kind of stuff.
Anyways, I’m looking for some dumbed down guidance on creating this tool. I’ll gladly support this project and I’ll send more to keep this project going and for your time.
Thanks!
The text was updated successfully, but these errors were encountered: