Hi there!
I have started my experience with Node Red few weeks ago.
The goal is to manage the power flow between PV (via SOFAR 20 KTL), energy storage, EV charger, and the heat pomp. I had to start with SOFAR and the EV charger.
EV charger is BENY BCP-AT2N-L - it is 11kW 3 phase charger.
I got all necessary protocols for the SOFAR and the Charger.
Both are connected via RS485 but via two adapters (SOFAR baud is 9600bps, EV Charger is 4800bps)
Right now I'm able to read all necessary registers either from SOFAR or EV charger. I can calculate and set the surplus current from PV for the EV charger.
But the problem is that EV charger don't response to any changes! Even writing simple register to STOP charging does not work.
I have got confirmed info from producer that there are no special authorization register or dip switches in charger to enable writing.
I'm using MODBUS_FLEX_WRITE and after MODBUS RESPONSE. I receive info that data has been received but that is all.
I was trying to write numbers, strings and arrays (since I receive arrays when reading registers).
I was trying the FC 6, 16 and also writing decimals and hex values.
Can anyone could help me with the diagnosis ??
Many thanks
MB
start simple. use a single write and set a value - does any work?
Try setting then reading back using single individual operations.
PS, Modbus ONLY accepts 16 bit numbers for FC 6
If you want to send strings, you need to encode them into a number array and use FC16
The buffer-parser parser node package has a helper node ("buffer-maker") that can convert string (and other) values to UINT16BE array (Unsigned 16 bit Integer Big Endian)
Write a single value (ANY valid writable register as per units docs)
Read back the exact SAME register
check it worked!
No, Modbus is the communication protocol and it requires numbers.
Just remember, in computers, everything is a number. Even strings! Modbus wants numbers, it has nothing to do with chargers. In fact, I dont know of many EV chargers that offer Modbus - most common protocol for controlling them is the Open Charge Point Protocol (OCPP).
1.Write a single value (ANY valid writable register as per units docs)
2. Read back the exact SAME register
3. check it worked!
Off course I checked. It didn't work.
I have not heard of any EV chargers that support Modbus - the vast majority are either proprietary or more and more and moving towards either MQTT or OCCP - are you positive your model of charger supports Modbus over RS485 ? (Some of them support Modbus for READING from energy meters or inverters)
In fact just looking up the Australian version of the EV charger you have and it supports wifi in an app for controlling it, but i can find no mention of modbus. It does use Modbus to talk to the energy meters that it supports for its various modes - i think you may be getting confused with this.
Possibly post up a link to the manual and modbus documentation you are using
Only value should between . That's it.
Now. I can confirm that the value is written via ModBus Get message. However it doesn't affect the charger operations. For example I'm writing max charging current value lower or higher than the current one and I observe no change!
How this could be?
Did you update the software to the latest version as the document suggest in the event of an issue ? Also i note that the document has no reference to what chargers it works with - and they talk about networking mode - i wonder if you have a document for a different charger ?
Can you do the basic read that they show to get the charger info and version etc ?
Are you trying to write to the temporary register for charging current - rather than the permanent one (as you will wear out EEPROM quickly doing that - and i imagine they would implement some form of protection ?