Enabling State-of-Charge update using MODBUS-TCP with a CCGX

Updating state of charge in a Victron Energy CCGX using MODBUS-TCP



The ZCell BMS can update the state of charge (SoC) value used (and displayed) by a Victron Energy CCGX using MODBUS-TCP.


You should either update SoC via the approach noted here or use CANBus interfacing to communicate detailed ZCell energy system status to the CCGX, but not both.

The strong preference for new installations is to use CANBus because it provides the capacity for tightly integrated control over charge and discharge current and voltage limits in addition to updating SoC. In some limited circumstances new installations may need to revert to using this (MODBUS-TCP) approach instead.


If this (MODBUS-TCP) approach is used, the maximum system charging voltage configured into all Victron charging elements (AC and DC) should be 56.5 Volts or lower. This ensures that there will not be unacceptably high voltage spikes generated by charging devices in the absence of CANBus-controlled charge and discharge current and voltage control. 


Note that this approach requires that the CCGX and BMS are on the same Ethernet/IP network and that the CCGX is configured to always appear on the local ethernet on the same IP address, either via static configuration in the CCGX or via a static DHCP entry in the local Internet router. A DHCP entry on the router is preferable.

It is essential that the CCGX does obtain the same IP address each time it starts up, or the configuration described below will stop working each time the CCGX IP address changes.


How to enable MODBUS-TCP and SOC updates on the CCGX
  • Configure the CCGX to use a static IP address (either using the CCGX configuration menu or by configuring a DHCP static mapping in your Internet router)
  • Enable MODBUS-TCP support in the CCGX (Settings -> Services -> Modbus/TCP, turn setting ON)
  • Ensure you have configured the SoC source to be the MultiPlus or Quattro (e.g. "Multiplus 48/3000 via VE.Bus" or similar - as per the screen shot example below) rather than 'automatic', just to avoid the potential for SoC to be derived from another source. Note that you don't need separate battery monitors (BMV-702 or Lynx Shunt or similar) with a ZCell system, as the ZCell BMS derives SoC from the downstream ZCells directly.
  • Enable and configure the update of SoC into the CCGX on the ZCell BMS as per the screen shot examples below


Configuration Screen Shots from CCGX to allow it to accept MODBUS SoC Updates and use them for system operation


Ensuer MODBUS-TCP is enaled in the CCGX:


MODBUS enable setting 


Select your Multi or Quattro device on VE.Bus as the "Battery Monitor" information source:

SoC source via VE.Bus


Configuration  Screen Shots to set up the BMS to update SoC via MODBUS:


Create a MODBUS-TCP endpoint via the BMS Configuration->Digital I/O menu and the 'Endpoints' tab for SoC update.

The IP address you enter should be the correct one for the CCGX in your local system.

The other values should be as shown below - be careful to set the Unit Number, Register Number and Register Type correctly.


BMS MODBUS SOC Update Endpoint

IMPORTANT: You must use the 'Save' button after entering the information on the Periodic entry below or the changes you make will not be saved.


If there is AC PV attached on the downstream (load) side of the Victron inverter/charger, you may need to create a second MODBUS-TCP endpoint to disable any AC PV attached to the output side of the Victron inverter/charger when necessary, to avoid the potential for overloading the energy system and causing an AC system shutdown when all ZCell units are full or otherwise unable to accept further charge. 


Again, be careful to make all the fields correct as per the below - unit number, register, etc:


MODBUS endpoint for AC PV control


Now create "Periodic" update rules to send the State of Charge value and (if needed) the AC PV Disable signal from the BMS to the CCGX via the endpoints you have just created. 


The update rate you choose for these periodic update functions is not critical -  10-20 seconds is generally fine:


Periodic rules for MODBUS update


Be sure to press 'Save' at the end of each line after you enter the line in, or it will not take effect.


Finally, restart the BMS and activate your changes using the "Apply Changes" tab and selecting 'Restart'.

Your changes will not take effect until you do this:


Apply Changes button


It will take about one minute after "Apply Changes" is selected, before the BMS will commence updating information to the CCGX - be patient. 


If the SoC on the CCGX does not update after a couple of minutes, you can try using the Tools->DIO Endpoint Tool to manually set SoC values and see if they appear on the CCGX. If you get an error back from the BMS when you try to manually set the value, it is likely that you have not enabled MODBUS-TCP on the CCGX or that there is a problem with the TCP/IP network connection between the BMS and the CCGX.


AV PV Disable function notes

The AC PV Disable command triggers shutdown of the AC PV Inverter using AC Frequency shifting signals to the PV inverter(s) attached to the system.

The AC PV Disable outcome will not be functional except when the Multi/Quattro is running in invert mode with no upstream AC connected (e.g. off grid or on-grid but during grid failure). The system cannot frequency-shift if it is synchronised to an operative upstream AC energy source.

It also requires that either the "ESS Assistant" or the  "PV Support Assistant" is loaded into the inverter (these assistants are what actually implement the frequency-shift cutoff when needed)