-
-
Notifications
You must be signed in to change notification settings - Fork 147
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
Wrong Charge Voltage Limit (FLOAT instead of MAX) #421
Comments
I'm having the same problem, in the picture you can see the gragh for CVL it starts at 13.8v (linear false). Then enabled you can see CVL goes to 13.4v, then I upped the float voltage to 3.4 and it then goes to13.6v. Finally disabled linear setting and back to 3.45/13.8v. I posted in 3 other places but they were either closed topics or old posts and likely would not be seen. Came on here again this morning and found yours. |
Are there any updates on this topic? In my understanding, when looking at the code, linear mode is not usable as it will only charge up to the FLOAT voltage instead of the MAX voltage. |
Inside battery.py change FLOAT_CELL_VOLTAGE to MAX_CELL_VOLTAGE and linear might be working. def manage_charge_voltage_linear(self):
|
I think this will not fully sove the issue. By doing this, you would most probably be able to charge to MAX voltage, but it will never switch to FLOAT, which is also not the desired behavior. |
Do we really need floating after some max_voltage time? |
Exactly what I thought - If we use LiFePo4 cells it is unnecessary ;-) |
The step mode does reduce to the float value currently and certainly it is out of the LiFePo4's comfort zone if you keep the high voltage forever. |
Bug repair tested and working. (without switching to float) Makes my home solar every day charging cycle more smooth and fluent. Take care with setting penalties. If someone adds lineard tDiff for floating floating, it would be perfect. Here is my example of setting (16x Lifepo4 200Ah) . Set Steps to reduce battery current. The current will be changed linear between those steps if the cell voltage reaches 3.55V, then reduce current battery-voltage by 0.01V Thanks and I think you can pull this simple bug repair into code. |
|
Floating time added. Not complete testing. |
The code from battery.py was not complletely copied.. sorry. Now corrected and working correctly with driver 14.3 and venus 2.90. |
Someone knows, why this was changed? 3685d15#diff-9d9b25b4a5dcc9b6f162c96264601c1986789dd796a6b170586076a746fabbc0R126-R130 |
@pkali1 you are right, that the time counter for the max voltage is missing. I added this to my fork. Please try it and let me know. https://github.com/mr-manuel/venus-os_dbus-serialbattery/tree/issue-421 You can install it by executing this commands: cd /tmp
wget https://github.com/mr-manuel/venus-os_dbus-serialbattery/archive/refs/heads/issue-421.zip
unzip issue-421.zip
cp -rf /tmp/venus-os_dbus-serialbattery-issue-421/etc/dbus-serialbattery/ /data/etc
chmod +x /data/etc/dbus-serialbattery/*.sh
chmod +x /data/etc/dbus-serialbattery/*.py
chmod +x /data/etc/dbus-serialbattery/service/run
chmod +x /data/etc/dbus-serialbattery/service/log/run
bash /data/etc/dbus-serialbattery/reinstalllocal.sh Pay attention, that in this release the configuration is not done anymore in the |
Is this enabled? dbus-serialbattery/etc/dbus-serialbattery/default_config.ini Lines 88 to 89 in 6471152
Currently the config file is a bit confusing, I will fix that. |
I think the whole linear is not activated |
Have you a voltage curve how the linear and how the step mode should look? I need some more days for further testing. The curve would help me a lot. |
No, after the install of your Version the data is lost 👎 |
In VRM Portal? Check if the VRM ID changed |
But i chosed linear, the changing was under step. Therefore i belive that linear is not avaliable. I check tomorrow the VRM again. I believe the usb Port hast changed. This Bug comes with changing from 14.2 to 14.3. |
@WaldemarFech maybe you can help us with that? How should the linear mode you implemented work exactly? |
Sorry - where's the beginning of the "problem"? 😅 short:
anyway:
What's my solution? A: I've implement the penalty mode.
check? :) I haven't looked into the newer versions anymore - so i don't know what was changed. can you post your relevant settings in your utils.py and a short description of your bug or the behavior that you would expect? |
Here are my driver v14.3 and Venus 2.90 with Daly BMS working files. I hope it helps you. |
Hello, however, all the innovations would be "nice to have" as well as the Bluetooth version |
And even more strange things seem to happen, the battery is discharging by exactly 1.0A some seconds and then charging again with CCL. Seems being in a cycle. I have seen this also in non-linear mode but it occured only after swithing to float (53.6V). NOW CVL is much higher (as I said before it didn't change to fload mode) and still this discharging occures. You know why? For your comment above, yes my penalty and max values were the same at 3.5V. I will change the first penalty voltage a bit higher and test the result.. |
The effect you are seeing (charging/discharging) is triggered when the battery hits the CVL voltage. It doesn't matter what the voltage is. As the reasons I described above, the voltage is not lowered. I update the config file to make that more clear, since it is not clear and I took a lot to understand how all is working. |
If you use the latest version from my fork and branch issue-421 you see also more informations about the current charge mode. It was uploaded just now. |
OK I will give it again a try with latest version. Where exactly is it specified that a discharging by 1 A is done? Is it a Victron "feature"? P.S.: The charge/discharge is the same for me when I set the first value of penalty at 3.51 and the Max_cell_voltage to 3.5 |
Nowhere. The battery is used as a buffer and when the battery voltage is the same or very close to CVL then this is the normal behaviour of Victron to maintain stability.
No. CVL is reduced in step mode and also in linear mode when the battery voltage is the same as CVL for x seconds.
Thats true. Please read the linked comment for the penalty. #297 (comment) |
So, I have been testing your script, that's the result of yesterday: About 3pm I changed the penalty above the max (3.51V vs 3.5V) with no visible result in behavior. |
Have you also checked also the cell voltages? Without them it‘s hard to tell what happens. Also I added the Charge mode field to the GUI to see whats happening. Probably your cell voltage difference is to high. As described above it switches only to float, if the battery voltage reached CVL and all cell voltages are below penalty voltage. For the linear mode I‘m also a bit sceptic that it changes every second. Maybe it would be better to do it all 60 seconds. I don’t know how it behaves when two batteries want to change the CVL. More secure would be to respect the lower requested voltage. |
@morres83 I just uploaded a new version, where you can set, how often the penalty voltage is calculated ( |
@mr-manuel this version seems to work quite well. For a real test I have to wait until it is sunny. When do you think you can put out a new version with your new additions and also the bluetooth for the jkbms? |
After this is merged: #459 |
Mr-manuel I'm trying to install/test your work, I'm new so have some questions. I copied/pasted each line into putty from your note below and hit enter after each one. After the very last one I rebooted, then went in and verified that "charge mode" shows under my serial batteries and it does. cd /tmp wget https://github.com/mr-manuel/venus-os_dbus-serialbattery/archive/refs/heads/issue-421.zip cp -rf /tmp/venus-os_dbus-serialbattery-issue-421/etc/dbus-serialbattery/ /data/etc chmod +x /data/etc/dbus-serialbattery/.sh bash /data/etc/dbus-serialbattery/reinstalllocal.sh After doing each of the above+enter for each line I logged in and checked the "nano /data/etc/dbus-serialbattery/utils.py" and looked through everything and see it's changed with no options to really adjust charge settings. Then I went in and tried "nano /data/etc/dbus-serialbattery/config.ini" and all I have is a blank screen with no script. Do I just copy/paste everything from this link https://github.com/mr-manuel/venus-os_dbus-serialbattery/blob/7562c7432988146a19443691a5ae92707116662f/etc/dbus-serialbattery/config.default.ini#L13-L37[](url) into the config.ini on the putty screen? |
You have to edit: config.default.ini |
@Bonzai10 this is wrong. You should not change the @rcrc1978 you have only to insert the values in |
Thanks for the help Bonzai! I was able to get in there and adjust things, will test and see how everything goes. Manuel i'm confused on that portion, there was no data available on the config.ini section. Do I copy and paste everything from the config.default.ini screen and then adjust those and save later so I can paste back in after updates? |
No. You create an empty MAX_BATTERY_CHARGE_CURRENT = 70.0
MAX_BATTERY_DISCHARGE_CURRENT = 90.0 |
Hi Manuel, One question: Thx! |
@locke981 you should just be able to use ./reinstalllocal.sh and it does everything for you. But is it normal that on reboot ports get changed such that it is not recognized in NodeRed anymore? Seems strange to me... Do the BMS blocks in NodeRed are really (only) dependent on the USB port (and not the name or something else)? |
Thanks will try that the next time I change something.
In Node Red the Node is not connected anymore, I have to select the Node inside the configuration of the Node again to get it working. I'm not aware if it's possible to change the node to something which is static like the name. If someone has a hint I would really appreciate it. |
There are a few issues and discussions about this. One of them is #481 |
mr-manuel, Your fork is working great for me so far, took me a while to get things adjusted properly so it would drop to float voltage. But after messing around for a bit things are working pretty good. I'm using two BMS's so sometimes one will drop to float voltage before the second does. So it does go to float voltage before the second BMS's can finish the bulk cycle. I'm slowly bumping up the max voltage time to give it more time to finish and balance, so far i'm at about 45m. One thing I have noticed is when being blocked from charging due to batteries being to cold the system is not letting the solar chargers make enough current to let the BMS battery heater circuit to come on. There is enough power available but the Solar charges are being held back from producing any output. I can tell by the high voltage on the PV side and plenty of sun available. If I disable DVCC setting the solar chargers produce enough amperage the heater circuit kicks in to heat the batteries. After that gets going I just re enable the DVCC setting, not sure if it did this before trying your fork though. The system is new this year so no prior testing with using the solar chargers only for charging. With Louis's v.0.14.3 version the battery heater would come on when powering the Multiplus from the AC input, have not tested yours with the AC input but will try if it's cold enough here the next couple of days. |
Should the heater circuit not come on even if there is no sun and the temperature is to low? |
The JBD BMS heater circuit only works if charging current is available (higher system voltage than battery voltage). The BMS will let current out of the battery to maintain system voltage but not let any current to flow into the battery when below cold temp cutoff. What I'm seeing during cold temp cutoff the driver is preventing the solar chargers from producing enough current to completely stop all drain from the battery even though there is some available. I guess it may be a little hard to explain, there is always current flowing from the battery during cold temp cutoff. So in able for the heater circuit to kick in the current from the batteries has to go to zero so system voltage can rise above battery voltage to start the heater circuit. The driver is not allowing the solar chargers to bring the system voltage above battery voltage to stop current the coming out of the batteries. When I turn off DVCC it takes away the drivers control from the solar chargers and then uses the internal solar charger settings. This way it brings the system voltage up high enough to stop battery consumption and then starts the heater circuit, the BMS does block any current to flow into the battery during this state. Current just goes into the heater circuit. Hopefully this explains it, I may just remove the BMS heater control circuit and use one of the relays on the solar chargers or cerbo gx to control it. At least that way I could turn them on regardless if charge current was available. |
I did not see the issue again with https://github.com/mr-manuel/venus-os_dbus-serialbattery/tree/issue-421. I will open a pull request for this next week. |
This is fixed in the next version. If you already want to try it you can execute this command wget -O /tmp/install-nightly.sh https://raw.githubusercontent.com/Louisvdw/dbus-serialbattery/jkbms_ble/etc/dbus-serialbattery/install-nightly.sh && bash /tmp/install-nightly.sh and select |
* added balancing switch status * added balancing switch status * changed default config file - added missing descriptions - changed name * indentation was wrong * adding fix for Venus OS >= v3.00~14 QML files * added cell balancing status for JKBMS * changed ConsumedAmpHours should be None instead of 0, if not available * TimeToSoc fixes - Added: Show TimeToSoc only, if enabled - Changed: description in config file - Changed: default value TIME_TO_SOC_VALUE_TYPE = 1 * resorted functions * fix CPU overload - changed: how often Time-To-Soc is calculated in seconds * fix Time-to-Go and Time-to-SoC - changed: Time-To-Go has to be always a positive int since it's used from dbus-systemcalc-py - changed: how Time-to-SoC is string is generated and displayed (format like Time-To-Go) * small fixes * Show MOSFET temperature from JKBMS Pull request from @baphomett #440 * bump version to 1.0.0 respecting semantic versioning * added uninstall script and fixed reinstall - `/data/conf/serial-starter.d` was not recreated if deleted * small fixes - added description in utils.py - change qml files in destination not source * typo * fixed cell balancing color for cells 13-24 * updated description in default config file * Updated logging to get relevant informations * clearer config file * make config file clearer * fix #421 - #421 * missing removals * corrected typo, added missing +x in release.yml * added info for new issue * fix black lint errors * optimize installation scripts * added script to install directly from repository * fixed serial-starter.d #520 * smaller fixes * fix #351 * fix System Switch in IO page * fix #239 by @TimGFoley * fix black lint errors * run code analyse only on code change * fix #311 * Separate Time-To-Go and Time-To-SoC activation * remove duplicated and incorrect log message on handle_changed_setting * properly log max battery currents on startup * optimize uninstall script * fix typo in log_settings * add charge mode display * Added: Temp name for sensor 1 & 2 Added the possibility to give a name to temperature sensor 1 & 2 This allows to see which sensor is low and high * Added: Choose how battery temperature is assembled * fix black lint errors * Added/Changed alarms for JKBMS * Added: HighInternalTemperature alarm for JKBMS * Changed: Temperature alarm to not trigger all in the same condition * Removed Alarms/HighCellVoltage It does not exist on the dbus * Changed: Moved charge mode from IO page to Paramaters page * Merge branch 'master' into master * Added: Show (dis)charge current limitation reason * Added changelog * corrected file permissions * Update readme * Small word case changes * fix dbus-daemon memory leak `poll_battery` is already called from the dbus mainloop in a separate thread. Opening a new thread here (and especially never closing it) will accumulate threads and leads to problems like `dbus-daemon` memory usage increasing over time, leading to eventual reboot by @seidler2547 * Added: Show specific TimeToSoC points in GUI Only if 0%, 10%, 20%, 80%, 90% and/or 100% are selected * fix black lint error * removed wildcard import, fixed black lint errors * removed wildcard import, fixed black lint errors * remove old log message in handle_changed_setting() * simplified condition for Time-To-Go/Soc * fix renogy import * added BMS info and cleanup * MNB * Revov * Sinowealth * moved BMS to subfolder * Added self.unique_identifier to the battery class Used to identify a BMS when multiple BMS are connected planned for future use * fix small errors * added linear voltage recalculation interval In the config file can now be defined how often CVL, CCL and DCL is recalculated * revert Daly adaption * replaced penalty voltage calculation with automatically calculated penalty voltages to simplify config max voltage is kept until batteries are balanced * flake config change * updated changelog * disabled ANT BMS by default #479 * fix typo * fixed wrong variable assignment `str` instead of `int` * updated battery template * updated nightly script * Fix for #450 #450 * Read charge/discharge limit JKBMS #4 * updated release workflow * updated readme * deploy to github pages only on changes in master or docusaurus branch * cleanup * GitHub pages config change * Renamed scripts for better reading #532 * update docusaurus dependencies * limitation reason cleanup * changed default config settings FLOAT_CELL_VOLTAGE from 3.350V to 3.375V LINEAR_LIMITATION_ENABLE from False to True * small typo fixes * updated changelog * fix disconnection behaviour & small fixes * on disconnect, show '---' after 10s and 'not connected' after 60s by @transistorgit * small fixes in shell script * added restart driver script * fixed file permission * Added: apply max voltage if CVCM_ENABLE is False before float voltage was applied * Added: BMS disconnect behaviour * Choose to block charge/discharge on disconnect * Trigger Venus OS alarm * Changed: Remove wildcard import from dbushelper.py * Added: Show additional data in device page * show self.unique_identifier as serial number * show self.production as device name * Added: JKBMS unique identifier & fixed data length * move config.ini before update * read production date by @tranistorgit this adds the battery production date --------- Co-authored-by: Daniel Hillenbrand <[email protected]>
* added balancing switch status * added balancing switch status * changed default config file - added missing descriptions - changed name * indentation was wrong * adding fix for Venus OS >= v3.00~14 QML files * added cell balancing status for JKBMS * changed ConsumedAmpHours should be None instead of 0, if not available * TimeToSoc fixes - Added: Show TimeToSoc only, if enabled - Changed: description in config file - Changed: default value TIME_TO_SOC_VALUE_TYPE = 1 * resorted functions * fix CPU overload - changed: how often Time-To-Soc is calculated in seconds * fix Time-to-Go and Time-to-SoC - changed: Time-To-Go has to be always a positive int since it's used from dbus-systemcalc-py - changed: how Time-to-SoC is string is generated and displayed (format like Time-To-Go) * small fixes * Show MOSFET temperature from JKBMS Pull request from @baphomett #440 * bump version to 1.0.0 respecting semantic versioning * added uninstall script and fixed reinstall - `/data/conf/serial-starter.d` was not recreated if deleted * small fixes - added description in utils.py - change qml files in destination not source * typo * fixed cell balancing color for cells 13-24 * updated description in default config file * Updated logging to get relevant informations * clearer config file * make config file clearer * fix #421 - #421 * missing removals * corrected typo, added missing +x in release.yml * added info for new issue * fix black lint errors * optimize installation scripts * added script to install directly from repository * fixed serial-starter.d #520 * smaller fixes * fix #351 * fix System Switch in IO page * fix #239 by @TimGFoley * fix black lint errors * run code analyse only on code change * fix #311 * Separate Time-To-Go and Time-To-SoC activation * remove duplicated and incorrect log message on handle_changed_setting * properly log max battery currents on startup * optimize uninstall script * fix typo in log_settings * add charge mode display * Added: Temp name for sensor 1 & 2 Added the possibility to give a name to temperature sensor 1 & 2 This allows to see which sensor is low and high * Added: Choose how battery temperature is assembled * fix black lint errors * Added/Changed alarms for JKBMS * Added: HighInternalTemperature alarm for JKBMS * Changed: Temperature alarm to not trigger all in the same condition * Removed Alarms/HighCellVoltage It does not exist on the dbus * Changed: Moved charge mode from IO page to Paramaters page * Merge branch 'master' into master * Added: Show (dis)charge current limitation reason * Added changelog * corrected file permissions * Update readme * Small word case changes * fix dbus-daemon memory leak `poll_battery` is already called from the dbus mainloop in a separate thread. Opening a new thread here (and especially never closing it) will accumulate threads and leads to problems like `dbus-daemon` memory usage increasing over time, leading to eventual reboot by @seidler2547 * Added: Show specific TimeToSoC points in GUI Only if 0%, 10%, 20%, 80%, 90% and/or 100% are selected * fix black lint error * removed wildcard import, fixed black lint errors * removed wildcard import, fixed black lint errors * remove old log message in handle_changed_setting() * simplified condition for Time-To-Go/Soc * fix renogy import * added BMS info and cleanup * MNB * Revov * Sinowealth * moved BMS to subfolder * Added self.unique_identifier to the battery class Used to identify a BMS when multiple BMS are connected planned for future use * fix small errors * added linear voltage recalculation interval In the config file can now be defined how often CVL, CCL and DCL is recalculated * revert Daly adaption * replaced penalty voltage calculation with automatically calculated penalty voltages to simplify config max voltage is kept until batteries are balanced * flake config change * updated changelog * disabled ANT BMS by default #479 * fix typo * fixed wrong variable assignment `str` instead of `int` * updated battery template * updated nightly script * Fix for #450 #450 * Read charge/discharge limit JKBMS #4 * updated release workflow * updated readme * deploy to github pages only on changes in master or docusaurus branch * cleanup * GitHub pages config change * Renamed scripts for better reading #532 * update docusaurus dependencies * limitation reason cleanup * changed default config settings FLOAT_CELL_VOLTAGE from 3.350V to 3.375V LINEAR_LIMITATION_ENABLE from False to True * small typo fixes * updated changelog * fix disconnection behaviour & small fixes * on disconnect, show '---' after 10s and 'not connected' after 60s by @transistorgit * small fixes in shell script * added restart driver script * fixed file permission * Added: apply max voltage if CVCM_ENABLE is False before float voltage was applied * Added: BMS disconnect behaviour * Choose to block charge/discharge on disconnect * Trigger Venus OS alarm * Changed: Remove wildcard import from dbushelper.py * Added: Show additional data in device page * show self.unique_identifier as serial number * show self.production as device name * Added: JKBMS unique identifier & fixed data length * move config.ini before update * read production date by @tranistorgit this adds the battery production date * Changed: Merged all install files into one * updated install docs for nightly build * changed config backup * changed release workflow * changed release workflow * changed release workflow * optimized USB install method * Daly improvements * Set SoC on button press by @transistorgit * Improved driver stability by @transistorgit & @mr-manuel * moved production date and added custom field --------- Co-authored-by: Daniel Hillenbrand <[email protected]>
see #415
After installation of v.0.14.3 FLOAT_CELL_VOLTAGE is used for CVL instead of MAX_CELL_VOLTAGE .
MIN_CELL_VOLTAGE = 2.9
MAX_CELL_VOLTAGE = 3.45
FLOAT_CELL_VOLTAGE = 3.35
With v.0.14.2 the CVL limit works like expected!
Here you can see that I installed the v.0.14.3 at 12.Jan - there was the CVL "jump" down.
The text was updated successfully, but these errors were encountered: