EVCS/ESS give priority to home battery charging over vehicle battery charging

Hi,
While PV power is not sufficient to both charge vehicle and home battery at same time, EVCS will give priority to vehicle.
Is it possible to change that behavior = charge battery at current limit defined in ESS and what’s left used to charge the vehicle (of course if current > 6A/1p)?

In today’s behavior, EVCS will not start charging the vehicle (value set as start charge % soc) until battery reaches the wanted % soc… whereas there could have been enough power left from PV that could be used to anyway charge the vehicle gently, instead of sending back the excess to grid.

The background of this request, is that vehicle may have enough charge for today’s/tomorrow’s drive, but home battery charge is not sufficient to cover overnight energy needs…still charging the vehicle with left over power would be good to increase vehicle autonomy anayway…

Am I mistaken?

Extra settings can be configured over modbus tcp - EV Charging Station NS - Victron Energy
Parameter 5081 represents exactly what you need, the power that is used for charging the backup batteries.

@Lpopescu @kds - yes I also had that question 2 days ago to Lucian.

Wallbox stays at minimum charging rate - 7A 2phase (eGolf) and max charging changed up to 10000W. after that the Wallbox gets the rest.

i also increased the "Grid power for ‘feed in’ detection REG: 5091 from -100 to -500

REG: 5081 - i changed from 500W to 10000W minimum charging speed to the Battery

So it worked?

Thanks for the direction Lucian. The mention of ‘Battery powered’ was ambiguous to me (5081: ‘Battery powered’. BKPB balance power) + despite the actual value was set to default 500w, EVCS is just letting around 100w to the back-up battery??
But I’ll try to play with this register and let you know.

@sega Thanks a well for your example. Good to see you worked it out for your situation.
I am a bit confused with your screen print then (btw nice installation…).
With your settings, I would have expected the back-up battery getting the full ~7000w and not split between back-up batteries and EVCS…

How much power is it available? Maybe that’s all the power available, ev’s can’t charge with less than 6A

Good to ask.
checking the history (homeassistant) last Friday at 10am exactly

  • pv = 5228 w
  • back to grid = -17 w
  • evcs = 4220 w (1p ~18A)
  • back-up battery charging = 378 w
  • other loads = 613 w

In this situation, ideally, I would target:

  • pv = 5228 w
  • back to grid = -17 w
  • evcs =2598 w (1p ~11A)
  • back-up battery charging = 2000 w (due to max charge current chosen in Venus…)
  • other loads = 613 w

Is the evcs charging only single phase?

@kds the screenshot was a bad timing because PV production was dropping… normally the the Battery get’s max. 10000W charging speed… when there is more PV Production Wallbox is increasing power!

Indeed, that’s what meant “1p” in the details provided.

Send me a video please to see this behavior

Ok, so I have set REG 5081=1000W and it is making the job, thanks for that :+1:
But it does the job only if there is enough power to ensure the 6A minimum required to charge vehicle (~1500W).
If otherwise, like the below example, the EVCS will still charge the vehicle to the expense of power available to recharge backup battery = see in below video it is less than the targeted 1000W (~700W).
What I wish is to give full priority to the battery. In other words, even in such situation EVCS should stop charging vehicle.
In my case if, considering the others loads, the total remaining power is less than 2500W (1000W (battery) + 1500W (minimum required to reach 6A on 1p), I would stop charging vehicle and let back-up battery get 1000W (up to 1500W may be sent back to grid, which is not optimal but I wish to limit the max charge current to 20A for my back-up battery -optimal would be 45A indeed…but MPII gets noisy then).
I can do this easily in node-Red, but is there another REG trick I can use?

@Lpopescu any other trick with REG, as 5081 does only cover partially my needs which is probably shared by other EVCS + back-up battery users?

hi, no other tricks, not for the moment, because we have other higher priority things on the list. But why don’t you play a bit with Node Red and try to solve your issue in there? it shouldn’t be that complicated.

Sure, so did I in Node-red and it works fine (wasn’t so easy btw… otherwise you would have implemented in the core EVCS engine :wink: )
Thanks for confirmation it is not embedded for the time being.

it’s not implemented for other reasons, I told you the above

REG5081 is also working for me. But I see a strange behavior with setting REG5081. In my setup I have 2 EVCS one with the IP 192.x.x.21 and the second one with IP 192.x.x.22. But I can only write REG5081 with IP .21 not with IP.22. Reading the value of REG5081 is possible on both IPs and it also changes on both IPs to the value written to IP.21.
In the VRM device list the IP.21 EVCS is instance 41 and the IP.22 tool is instance 42.

@Lpopescu can you explain that behavior? Or is it even wanted like this?

See attached Nodered flow:

[{"id":"a21efdcee74723ed","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"4eee7f0cae628f23","type":"inject","z":"a21efdcee74723ed","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":140,"wires":[["7dd84d66b73040cc"]]},{"id":"7dd84d66b73040cc","type":"function","z":"a21efdcee74723ed","name":"BKPB balance power  5081 IP.21","func":"var fc=3;\nvar unit=1;\nvar sa=5081;\nvar addresses=1;\nmsg.slave_ip=\"192.168.8.21\";\nmsg.payload={value: msg.payload, 'fc': fc, 'unitid': unit, 'address': sa , 'quantity': addresses };\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":140,"wires":[["86f6d5aee1516b50"]]},{"id":"86f6d5aee1516b50","type":"modbus-flex-getter","z":"a21efdcee74723ed","name":"Read EVCS","showStatusActivities":true,"showErrors":true,"showWarnings":true,"logIOActivities":false,"server":"d230201e85f6873c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"delayOnStart":false,"startDelayTime":"","x":690,"y":140,"wires":[[],["7ee992b671eb47de"]]},{"id":"7ee992b671eb47de","type":"function","z":"a21efdcee74723ed","name":"ReadUInt16","func":"const buf= Buffer.from(msg.payload.buffer)\nconst value = buf.readUInt16BE();\nmsg.payload = value;\n\nnode.status({ fill: \"blue\", shape: \"ring\", text: msg.payload });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":140,"wires":[[]]},{"id":"02ce635c56ed93eb","type":"inject","z":"a21efdcee74723ed","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1500","payloadType":"num","x":170,"y":80,"wires":[["7e48b8929601fdd0"]]},{"id":"7e48b8929601fdd0","type":"function","z":"a21efdcee74723ed","name":"BKPB balance power  5081 IP.21","func":"var fc=6;\nvar unit=1;\nvar sa = 5081;\nvar addresses=1;\nmsg.slave_ip=\"192.168.8.21\";\nmsg.payload={value: msg.payload, 'fc': fc, 'unitid': unit, 'address': sa , 'quantity': addresses };\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":80,"wires":[["08d965351667df14"]]},{"id":"08d965351667df14","type":"modbus-flex-write","z":"a21efdcee74723ed","name":"EVCS Write","showStatusActivities":false,"showErrors":true,"showWarnings":true,"server":"d230201e85f6873c","emptyMsgOnFail":false,"keepMsgProperties":false,"delayOnStart":false,"startDelayTime":"","x":610,"y":80,"wires":[[],[]]},{"id":"470d62757ca3cc74","type":"inject","z":"a21efdcee74723ed","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":220,"wires":[["f3f45a48cf028626"]]},{"id":"f3f45a48cf028626","type":"function","z":"a21efdcee74723ed","name":" BKPB balance SOC max 5081 IP.22","func":"var fc=3;\nvar unit=1;\nvar sa=5081;\nvar addresses=1;\nmsg.slave_ip=\"192.168.8.22\";\nmsg.payload={value: msg.payload, 'fc': fc, 'unitid': unit, 'address': sa , 'quantity': addresses };\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":220,"wires":[["6816fa5127554b03"]]},{"id":"6816fa5127554b03","type":"modbus-flex-getter","z":"a21efdcee74723ed","name":"Read EVCS","showStatusActivities":true,"showErrors":true,"showWarnings":true,"logIOActivities":false,"server":"d230201e85f6873c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"delayOnStart":false,"startDelayTime":"","x":670,"y":220,"wires":[[],["e609816e54304ca4"]]},{"id":"e609816e54304ca4","type":"function","z":"a21efdcee74723ed","name":"ReadUInt16","func":"const buf= Buffer.from(msg.payload.buffer)\nconst value = buf.readUInt16BE();\nmsg.payload = value;\n\nnode.status({ fill: \"blue\", shape: \"ring\", text: msg.payload });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":220,"wires":[[]]},{"id":"eb289ff3f7e2352c","type":"inject","z":"a21efdcee74723ed","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"500","payloadType":"num","x":190,"y":180,"wires":[["1f361b2cdca01d41"]]},{"id":"1f361b2cdca01d41","type":"function","z":"a21efdcee74723ed","name":"BKPB balance power  5081 IP.22","func":"var fc=6;\nvar unit=1;\nvar sa = 5081;\nvar addresses=1;\nmsg.slave_ip=\"192.168.8.22\";\nmsg.payload={value: msg.payload, 'fc': fc, 'unitid': unit, 'address': sa , 'quantity': addresses };\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":180,"wires":[["0107fe16fe811901"]]},{"id":"0107fe16fe811901","type":"modbus-flex-write","z":"a21efdcee74723ed","name":"EVCS Write","showStatusActivities":false,"showErrors":true,"showWarnings":true,"server":"7fe63f01e3404b65","emptyMsgOnFail":false,"keepMsgProperties":false,"delayOnStart":false,"startDelayTime":"","x":690,"y":180,"wires":[[],[]]},{"id":"d230201e85f6873c","type":"modbus-client","name":"EVCS 192.168.8.21","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"192.168.8.21","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true,"showErrors":false,"showWarnings":true,"showLogs":true},{"id":"7fe63f01e3404b65","type":"modbus-client","name":"EVCS Daniela","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"192.168.8.22","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"0x3A","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true,"showErrors":false,"showWarnings":true,"showLogs":true}]

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.