How to read 3 phase voltages through a GX device using ModbusTCP

Note: After posting here, I got pointed to this new place, sorry for the double/cross post!

I apologize beforehand if I missed a post or wiki containing the answer, I’ve been searching and reading for 2 days, but haven’t come across an answer.

The context / setup:

Talking ModbusTCP with a GX device (could be CerboGX, CCGX, RaspPi, Multiplus-II GX etc), that has a 3 phase setup behind it(could be Multiplus/Quattro, one or two per phase), potentially other things connected such as meters or BMV etc.

The goal:

I want to gather data over ModbusTCP, ideally with the least knownledge of the system itself, other than the IP address of the GX device obviously.

Data like battery SOC/Voltage/Current/Power but also per phase voltage/current and 3phase power/frequency or alarms.

The research:

From documentation I understood that I can talk to the GX unit using unit-ID 100 and using registers 800-882(com.victronenergy.system) I can get some system information regardless of what is behind the GX device. This covers the DC side quite well, but the information on the AC side of things in a 3phase setup is a bit lacking from what I can tell.

The question(s):

What is the best way to get phase specific information from a 3 phase setup over modbusTCP?

Do you need to know all unitIDs and iterate over them querring registers 3-109? Or maybe only one unitID(random/master?) is enough? Can I get that unit ID through ModbusTCP? Or will it always be a certain unitID (i.e. 227 on Cerbo, 228 on Multiplus-II GX, 242 on Venus and 246 on CCGX)

Notes:

  1. Judging from https://community.victronenergy.com/questions/180603/modbus-tcp-parallel-system-per-quattro-information.html, parallel inverters will be considered as 1.

Q5: In a parallel or three-phase system, how can I address a single unit?

You cannot interface with them individually if they are configured for parallel-working; or as a three-phase system. Neither is it necessary to address units individually as Modbus-TCP provides system-totals as well as ‘per phase’ information.

This seems to suggest that next to system totals, there should be per phase information, or is that referring to the power information in .system only?

Recently the com.victronenergy.acsystem category was added, with registers in 4900-4920 range.
Although was added for RS category of products, it may very well work for your inverter too.
You have there the voltage, current and power for all 3 phases, for both input and output.
Try to see if it works. But you need to update to the latest (beta) version.
LE.
Is there any d-bus paths that are providing this information to you?

Thanks for the reply @alexpescaru! I haven’t been able to test with a setup yet, which I will hopefully get to soon. For now I’ve implemented all the modbus registers from system and acsystem(the latter has almost everything I was looking for indeed) and I’ll have a look whether I get the data on different types of configurations.

I guess I’ll get more clarity (and more questions) once I start testing with hardware :+1:

What do you mean with the d-bus paths question? Do you mean whether there is information in dbus · victronenergy/venus Wiki · GitHub that is not exposed on the modbus?

I had one additional question, I saw there are different voltages available (Lx) but I’d assume they are line to neutral voltages. Is there any Line to Line data available?

  1. Yes, because if there is a dbus path and you don’t have it on modbus, you can add it.
  2. Don’t think so, but you can compute them. Take a look here.