I have a Multiplus-II GW with a 15Kw LiFePo4 and 4Kw of Solar just installed everything working perfectly using a CT clamp on the grid connection. However, the Multiplus doesn’t know anything about the PV inverter (Growatt) or the Grid Meter (Estron SDM230), so according to the VRM I am creating electricity from thin air. Both are modbus, conforming to their own standard. I could write and install dbus code inside the GX to connect over a pair of USB RS485s but I would rather not modify the GX. I could do Modbus/TCP writing a adapter, but my home network isnt 100% reliable.
My BMS is talking Victron BMS over Can at 500kbit and my BMS looks like I can change the rate to 250Kbit which would allow me to switch the MultiPlus to BMS + Ve.CAN at 250Kbit. Busload is < 1% on can0. I can write a Modbus → CAN adapter that talks to both the Growatt and Eastron and know the formats of all the standard PGNs in this area.
My question is: What PGNs other than the VeCan register PGNS, and the BMS messages (ie CanID = ~0x300) does a MultiPlus II take notice of, and is there any info of special source IDs it will filter on ?
I am not after the format of the PGNs since thats under NDA most of the time, just the PGN numbers it will receive. Most manufacturers list all the PGNs they recieve (I guess I could send a 126464 or one of the ISO requests or snoop the bus on startup if there is nothing documented.)
Yes, I know Modbus TCP is supposed to be the way, but I like writing Can devices and being hardwired for critical things. Seems like connecting by Canbus is the way to go, for me.
Any info would be gratefully received.
Obviously I will put the code on github.
The GX board in the MultiPlus is only listening on CAN for the battery info.
In a way is a passive node, looking for the battery info.
The connection between GX board and MultiPlus is over VE.Bus.
The GX passes to MultiPlus on VE.Bus only battery relevant information, previously “listened” on VE.Can/BMS.Can.
So, in order for a command sent on VE.Can/BMS.Can to reach Multiplus, through the GX board, you need to write a software bridge between VE.Can and VE.Bus, to relay your messages.
As root I can see 2 dBus processes, vecan-dbus and can-bus-bms which when I scan them for strings indicate that the are writing to different locations in the dbus hierarchy. The can-bus-bms is limited to battery, but the vecan-dbus has references to most locations in the dbus relating to most Victron produces with a VE.can interface. (eg PV chargers). The manual does state that originally the MultiPlus only supported BMS.Can, but later models support both Ve.CAN and BMS.Can confirmed by the menu items.
Here is the list of locations mentioned in the vecan-dbus binary.
What I do not know yet, is if these are read or write. Are you saying that vecan-dbus only writes information and I cant connect a Victron SmartSolar over Ve.Can to a MultiPlus II GX (late model) and see its state in the MultiPlus II GX UI ?
If thats the case, I’ll write a can0 → dbus converter as well.
Yes, agree that the manual section 4.1.2 says that, but its not the whole story.
There is a footnote table in one of the manuals for the MultiPlus-II GX that states the early models had the Can ports marked Ve.CAN which was wrong, because they only supported BMS.Can. Then the marking was changed to BMS.Can a year or so later. And in about 2023 Ve.CAN and BMS.Can was enabled on the ports at the same time, as shown in the screenshot. My MultiPlus II GX was manufactured after that date, however the hardware for Ve.CAN and BMS.CAN is identica (probably a TL1050 driver chip or a TI one, there is a schematic somewhere in github of the GX part), the Linux OS uses socketcan drivers and so this is only a software feature. I upgraded the OS to the latest, others should be able to do the same.
I am trying to find that table again, but I have opened so many manuals in the past week it might take a while. I have not enabled Ve.CAN + BMS.Can at 250Kbit since I need to first reconfigure my BMS to talk Victron BMS.CAN at 250Kbit (assuming it can). When I do, will see if the vecan-dbus process starts. If it doesn’t, then expecting will work will not work.
Assuming it will work, I am interested to know if anyone knows anything about PGNs that are emitted by the SmartSolar MTTP units with the Ve.Can interface. IIUC Instance 1 is the PV string voltage and current in PGN 127508, and it might be possible to change that with PGN 127506 DC Type field 3.
Looks like the UI works and enables both ve-can and bms-can. Screenshot shows before enabling and after. Not done any tests since my BMS is still on 500kbit but the processes are there.
Given the complexities of mapping the inbound can messages to dbus and the hidden nature of how the vecan-dbus service does this, I am not taking this further and instead adding drivers to dbus-modbus-client which has direct access to the dbus. For others, there is PGN info out there in the manuals from Victron, but it is scattered and takes persistence to collect it.