Solar Charger RS485


ALL NEW - Battery Finder Search for 12/24/36/48v or by capacity www.batteryfinder.net

grundholm

Member
Joined
Oct 3, 2020
Messages
152
Billede beskeder(3458204440), kopi 2.jpg

Recently I bought this solar charger on Aliexpress, it has RS485 - I have been playing around with the RS485 port and with som help from the nice people in China i'm now able to get some data :)

Anyone here have experience with this charger?
 
Please do share details. What inverter is this? Link to aliexpress page?
 
I got it from here:
https://de.aliexpress.com/item/1005004417934706.html

I bought this charger because it is very universal and easy to setup. The max. solar voltage is 230VDC and battery between 12V and 96V. In the menu it's possible to choose the battery type, Lead Acid, GEL, LiFePo4, Li-Ion and User - and how many batteries in series.

It has a RS485 port - On the pictures it looks like a normal RJ45 network port but I was surprised to find out that it's a RJ12 6P6C (not included)
The settings for the port is: 2400 baud, check bit NONE, data bit 8, stop bit 1
If I send 0x01 0x03 0x00 0x00 0x00 0x14 0x45 0xc5 then I get 45 bits back, the string contains all registers
 
Last edited:
I have updated the link... missing the l in html :)

Some pictures of the menu:

IMG_0601-1.JPEG

IMG_0602-1.JPEG


IMG_0603-1.JPEG


IMG_0604-1.JPEG


And modbus:

Modbus Response (COM4)
Address: 1
Function: 3 (0x03) - Read Holding Registers
Byte Count: 40
Values: 00 01 00 01 00 00 02 00 00 4c 00 00 00 03 02 c1 02 c1 01 dc 00 c9 02 dd 02 9a 00 6f 02 8b 00 00 00 2b 00 00 00 00 12 65
Register0: 1
Register1: 1
Register2: 0
Register3: 512
Register4: 76
Register5: 0
Register6: 3
Register7: 705
Register8: 705
Register9: 476
Register10: 201
Register11: 733
Register12: 666
Register13: 111
Register14: 651
Register15: 0
Register16: 43
Register17: 0
Register18: 0
Register19: 4709
Checksum: 0xbc0d - OK
 
Last edited:
Finally we got some sun here and i'm testing the charger. It works very well and I did a little programming in ESPHome / Home Assistent.
 

Attachments

  • Billede beskeder(905247627).jpeg
    Billede beskeder(905247627).jpeg
    130.3 KB · Views: 56
I got it from here:
https://de.aliexpress.com/item/1005004417934706.html

I bought this charger because it is very universal and easy to setup. The max. solar voltage is 230VDC and battery between 12V and 96V. In the menu it's possible to choose the battery type, Lead Acid, GEL, LiFePo4, Li-Ion and User - and how many batteries in series.

It has a RS485 port - On the pictures it looks like a normal RJ45 network port but I was surprised to find out that it's a RJ12 6P6C (not included)
The settings for the port is: 2400 baud, check bit NONE, data bit 8, stop bit 1
If I send 0x01 0x03 0x00 0x00 0x00 0x14 0x45 0xc5 then I get 45 bits back, the string contains all registers
Hello,
How did you connect device, please?
According to picture on the device pins are 1. RS485-A, 2. 0 V, 3. RS485-B, 4. 0V, 5&6 5V.
However no any response from device using CP2102 device in RS485 mode.
I can see TX LED shows activity, but RX LED no any activity.

As no success with stty & echo I tried also mbpoll:
mbpoll /dev/ttyUSB0 -m rtu -b 2400 -P none -d 8 -s 1 -v -a 1 -r 1 -t4:hex -c20
but also no any response.
 
A -> B and B -> A no ground

I tried with different RS485 devices but the one on the picture works very well with an ESP32 (because of the 3.3V)
 

Attachments

  • 5c6848e0-aafe-4409-be98-25fa3065df7c.jpg
    5c6848e0-aafe-4409-be98-25fa3065df7c.jpg
    113.6 KB · Views: 58
This is the modbus documentation for this device.
 

Attachments

  • External MPPT communication MODBUS..pdf
    109.1 KB · Views: 149
Using this Peacefair RS485 reader cabled as grundholm showed..

TBD0602081301A.jpg

I was able to use mbpoll:
$ mbpoll /dev/ttyUSB0 -m rtu -b 2400 -P none -d 8 -s 1 -v -a 1 -r 1 -t4:int16 -c20 -1 debug enabled iGetIntList(1) Integer found: 1 iCount=1 iGetIntList(1) Integer found: 1 iCount=1 Set function=4 Set format=int16 Set number of values=20 Set device=/dev/ttyUSB0 mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2015-2023 Pascal JEAN, https://github.com/epsilonrt/mbpoll This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; type 'mbpoll -w' for details. Opening /dev/ttyUSB0 at 2400 bauds (N, 8, 1) Set response timeout to 1 sec, 0 us Protocol configuration: Modbus RTU Slave configuration...: address = [1] start reference = 1, count = 20 Communication.........: /dev/ttyUSB0, 2400-8N1 t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, output (holding) register table -- Polling slave 1... [01][03][00][00][00][14][45][C5] Waiting for a confirmation... <01><03><28><00><01><00><01><00><01><02><10><00><45><00><00><00><04><02><3A><02><36><01><E0><02><BC><06><BC><02><1C><00><3E><02><1C><00><00><00><2C><00><00><00><0F><A2><A2><FF><E5> [1]: 1 [2]: 1 [3]: 1 [4]: 528 [5]: 69 [6]: 0 [7]: 4 [8]: 570 [9]: 566 [10]: 480 [11]: 700 [12]: 1724 [13]: 540 [14]: 62 [15]: 540 [16]: 0 [17]: 44 [18]: 0 [19]: 15 [20]: -23902

From the documentation you can see the battery voltage is currently [15]: 540 or 54V.
The measured voltage is actually 52.9 so this is a long way out.
The documentation seems to suggest it could be as simple as writing the correct value??
If I understand the documentation total energy produced is 1541.790Wh?
 
Using this Peacefair RS485 reader cabled as grundholm showed..

View attachment 29658
I was able to use mbpoll:
$ mbpoll /dev/ttyUSB0 -m rtu -b 2400 -P none -d 8 -s 1 -v -a 1 -r 1 -t4:int16 -c20 -1 debug enabled iGetIntList(1) Integer found: 1 iCount=1 iGetIntList(1) Integer found: 1 iCount=1 Set function=4 Set format=int16 Set number of values=20 Set device=/dev/ttyUSB0 mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2015-2023 Pascal JEAN, https://github.com/epsilonrt/mbpoll This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; type 'mbpoll -w' for details. Opening /dev/ttyUSB0 at 2400 bauds (N, 8, 1) Set response timeout to 1 sec, 0 us Protocol configuration: Modbus RTU Slave configuration...: address = [1] start reference = 1, count = 20 Communication.........: /dev/ttyUSB0, 2400-8N1 t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, output (holding) register table -- Polling slave 1... [01][03][00][00][00][14][45][C5] Waiting for a confirmation... <01><03><28><00><01><00><01><00><01><02><10><00><45><00><00><00><04><02><3A><02><36><01><E0><02><BC><06><BC><02><1C><00><3E><02><1C><00><00><00><2C><00><00><00><0F><A2><A2><FF><E5> [1]: 1 [2]: 1 [3]: 1 [4]: 528 [5]: 69 [6]: 0 [7]: 4 [8]: 570 [9]: 566 [10]: 480 [11]: 700 [12]: 1724 [13]: 540 [14]: 62 [15]: 540 [16]: 0 [17]: 44 [18]: 0 [19]: 15 [20]: -23902

From the documentation you can see the battery voltage is currently [15]: 540 or 54V.
The measured voltage is actually 52.9 so this is a long way out.
The documentation seems to suggest it could be as simple as writing the correct value??
If I understand the documentation total energy produced is 1541.790Wh?
0x000F and 0xA2A2 = 0x000FA2A2 = 1021474 (1021.474 kWh)
 
@grundholm My query tool is updated today and working now (see description / example output at GitHub).
Currently i am asking in china how to write back system charging current limit from maybe 60 to zero to turn off charging.
I am planning to watch voltage and the highest cell of the BMS and turn off the charger it its too high.
Unfortunately i had no success writing back. Even if its described in the protocol.

Regards Christian
 
@grundholm The Victron Venus OS driver is ready for testing.


Edit: Such devices are not welcome in the VRM portal, so the code is now non-public. The query tool remains online.

Regards, Christian
 
Last edited:
Back
Top