diy solar

diy solar

Epever modbus register 3201 D1 - weird value

999cgm

New Member
Joined
Dec 13, 2023
Messages
12
Location
Ro
Hi,
On my Epever xtra 4415 , I see weird value for bit D1 on 0x3201 register (based on modbus pdf documents , Charging equip status , 0=normal , 1=fault).

Everytime when there is float(1) or bulk(2) (which is read from D3-2 on 0x3201 ), I see D1=1, which indicates Fault . When it goes back to no_charge(0), D1 reads as 0.

Did anyone seen this? I can say that it works to charge .. (MPPT works fine ).. so I do not think the charger have problems
 
Probably just another MODBUS error in the firmware. Lots and lots of those, across the whole industry. Mgfrs STILL assume that most of us will be using the (usually insufficient) "app" they provide to deal with things, in which they code "fixes" for stuff like this so we never know about them.

If it's consistent, just reverse the logic states in whatever code you're using to read it and move on.

You might wanna try alternative EPEVER "Modbus-reading" code instances (there are several) to see if it acts the same. It might be isolated to whatever you're using.
 
I do not think is the code or module (py minimalmodbus) , reading 2 regs with read_registers(0x3200,2,4)
I was curios if this was noticed by others
 
@v_green57 I see that you have some Epevers as well , can you pls list which value you see in D1 on 3201 register during no-charge,float, boost? Thank you :)
 
@v_green57 I see that you have some Epevers as well , can you pls list which value you see in D1 on 3201 register during no-charge,float, boost? Thank you :)

This is what it is right now, dark, no sun:

++++++++++++++++++++++=
pi@zero2w1:~ $ epevermodbus --portname /dev/ttyUSB0 --slaveaddress 1
Real Time Data
Solar voltage: 6.75V
Solar current: 0A
Solar power: 0.0W
Load voltage: 12.16V
Load current: 0A
Load power: 0.0W
Battery voltage: 12.16V
Battery current: 0.0A
Battery power: 0.0W
Battery state of charge: 38%
Battery temperature: 20.64°C
Remote battery temperature: 0°C
Controller temperature: 17.32°C
Battery status: {'wrong_identifaction_for_rated_voltage': False, 'battery_inner_resistence_abnormal': False, 'temperature_warning_status': 'NORMAL', 'battery_status': 'NORMAL'}
Charging equipment status: {'input_voltage_status': 'NORMAL', 'charging_mosfet_is_short_circuit': False, 'charging_or_anti_reverse_mosfet_is_open_circuit': False, 'anti_reverse_mosfet_is_short_circuit': False, 'input_over_current': False, 'load_over_current': False, 'load_short_circuit': False, 'load_mosfet_short_circuit': False, 'disequilibrium_in_three_circuits': False, 'pv_input_short_circuit': False, 'charging_status': 'NO_CHARGING', 'fault': False, 'running': True}
Discharging equipment status: {'input_voltage_status': 'NORMAL', 'output_power_load': 'LIGHT', 'short_circuit': False, 'unable_to_discharge': False, 'unable_to_stop_discharging': False, 'output_voltage_abnormal': False, 'input_over_voltage': False, 'short_circuit_in_high_voltage_side': False, 'boost_over_voltage': False, 'output_over_voltage': False, 'fault': False, 'running': True}
Day time: True
Night time: False
Maximum battery voltage today: 12.73V
Minimum battery voltage today: 11.49V
Device over temperature: False
++++++++++++++++++++++++++++++++

I will leave it up to you to figure out which param is the bit you're interested in.

Other states when the sun is up, etc. will have to wait when I am able to read things at that point.
 
@v_green57 tyvm! So in Charging equipment status: we see fault': False, ' . If you can also post when you have solar.. 10x again!
 
@v_green57 another thing , I noticed you have a RPI2 zero (like me), I set mine to use as low current as possible (by disabling the not needed hardware via /boot/config.txt), in case it helps you (and whoever else read this )..

[root@pi2z ~]# cat /boot/config.txt|grep -v '^#' uart_2ndstage=1 enable_uart=1 disable_poe_fan=1 disable_splash=1 force_eeprom_read=0 enable_tvout=0 ignore_lcd=1 start_x=0 enable_dpi_lcd=0 hdmi_ignore_hotplug=1 gpu_mem=8 dtoverlay=disable-bt dtparam=audio=off dtparam=hdmi=off camera_auto_detect=0 display_auto_detect=0 boot_delay=0
 
Ah.. reading docs on epevermodbus / driver.py :

fault": bool(
extract_bits(register_value, 1, 0b1)
), # this does not seem to be functioning correctly. Fault status is returned when no fault.
 
Full sun:

++++++++++++++++++++++++
pi@zero2w1:~ $ epevermodbus --portname /dev/ttyUSB0 --slaveaddress 1
Real Time Data
Solar voltage: 29.91V
Solar current: 5.71A
Solar power: 171.31W
Load voltage: 14.91V
Load current: 0A
Load power: 0.14W
Battery voltage: 14.92V
Battery current: 11.43A
Battery power: 171.58W
Battery state of charge: 100%
Battery temperature: 22.48°C
Remote battery temperature: 0°C
Controller temperature: 24.53°C
Battery status: {'wrong_identifaction_for_rated_voltage': False, 'battery_inner_resistence_abnormal': False, 'temperature_warning_status': 'NORMAL', 'battery_status': 'NORMAL'}
Charging equipment status: {'input_voltage_status': 'NORMAL', 'charging_mosfet_is_short_circuit': False, 'charging_or_anti_reverse_mosfet_is_open_circuit': False, 'anti_reverse_mosfet_is_short_circuit': False, 'input_over_current': False, 'load_over_current': False, 'load_short_circuit': False, 'load_mosfet_short_circuit': False, 'disequilibrium_in_three_circuits': False, 'pv_input_short_circuit': False, 'charging_status': 'BOOST', 'fault': True, 'running': True}
Discharging equipment status: {'input_voltage_status': 'NORMAL', 'output_power_load': 'LIGHT', 'short_circuit': False, 'unable_to_discharge': False, 'unable_to_stop_discharging': False, 'output_voltage_abnormal': False, 'input_over_voltage': False, 'short_circuit_in_high_voltage_side': False, 'boost_over_voltage': False, 'output_over_voltage': False, 'fault': False, 'running': True}
Day time: True
Night time: False
Maximum battery voltage today: 15.24V
Minimum battery voltage today: 10.22V
Device over temperature: False
+++++++++++++++++++++

Thx for the power saving info. I'll put it in my"Rpi stuff" colleciton.
 
Ah.. reading docs on epevermodbus / driver.py :

fault": bool(
extract_bits(register_value, 1, 0b1)
), # this does not seem to be functioning correctly. Fault status is returned when no fault.


OR it is working fine and EPEVER has made a mistake in the MODBUS implementation.

Since all the other register reads in epevermodbus work correctly, and you get the same problem with minimalmodbus, I would go with EPEVER screwing up. I trust the folks who write epevermodbus and minimalmodbus more.

Just put a comment in your code:

*/implementation is broken for D3-2 on 0x3201 - false is true and true is false/*

and code accordingly.
 
@v_green57 - Thank you for providing the info and confirming 3201(D1) is not showing up a real fault.
On the same note RPI2Z tweaks.. I also tried to disable unneeded init functions from kernel to speed up booting. My kernel is 5.15.X , and my kernel command line (related to speedup booting)

raid=noautodetect
initcall_blacklist=raid6_select_algo,calibrate_xor_blocks,arm_pmu_hp_init,crc_t10dif_mod_init,md_init,dm_init_init,dm_init,dm_raid_init,raid5_init,tracer_init_tracefs,inet6_init,fq_codel_module_init

Again, I hope this will help others :)
 
Back
Top