Emulation dvcc

The whole ecosystem is not “open”.
Victron are quite clear about what is and isn’t.
What you are trying to do in reverse engineering control of the chargers is completely unsupported.

Fair enough.
But, it (Emulation dvcc - #15 by doro) doesn’t even work on a VenusOS

The comms is your issue from what i can see.
The CAN spec is not published. It might be available via the regional manager (not sure), but venus is only part of the whole equation.

By the way @doro

The whole thing is a “repeating” thing, with timeout.
Docs are saying that no more than 60 seconds.
Meaning you should send all at intervals smaller than 60 seconds.

But they are sending much often.
0x201C and 0x0FFF are sent at 1 second intervals - broadcast.
0x2001 and 0x200E are sent at 5 seconds intervals - broadcast.
0x2015 and 0x2017 are sent at 2 seconds intervals - P2P.

Especially 0x200E, if you want to control it remotely.

LE:
You don’t need to send 0x2002 and 0x200A, as they are battery information, not charger information.

I’ve sent you some info @doro
Also pay attention that values have a denomination - 1, 10, 100, 1000…
For example the current for 0x2015 and 0x2017 is in 0.1A increments, meaning a scale of 10.
The voltage a scale of 100 (0.01V).

Hi @doro

So, in the end it’s solved or not, because you marked it as solved…

Have a look and talk with this user, as he managed to make it work, with a similar hardware.

Please @thiemovanengelen , can you help him?
I mean, help Eduard (@doro), the OP of this topic.
Thanks in advance!

No.
I only managed to control the charging current as I described here:


Everything else doesn’t work.

Please try the following.

Assuming:

  1. your program has an address of 0x0A
  2. MPPT RS has an address of 0x40
  3. broadcast is the address of 0xFF

With a frequency of 1 second - which later you may increase it - , send:

  1. broadcast to 0x200E a values of 0x0D: 1CEFFF0A [8] 66 99 0E 20 0D 00 00 00
  2. broadcast to 0x201C a value of 0: 1CEFFF0A [8] 66 99 1C 20 00 00 00 00
  3. broadcast to 0x2001 the value of voltage: 1CEFFF0A [8] 66 99 01 20 xx xx 00 00
  4. broadcast to 0x0FFF the SOC: 1CEFFF0A [8] 66 99 FF 0F xx xx 00 00
  5. ask from MPPTRS the total input power: 1CEF400A [8] 66 99 01 00 27 20 FF FF
  6. send directly to MPPTRS the charging current: 1CEF400A [8] 66 99 15 20 xx xx 00 00
  7. send directly to MPPTRS the discharging current: 1CEF400A [8] 66 99 17 20 xx xx 00 00

You see, the Cerbo - if you have it - takes the info from one CAN network (BMS CAN) and it must send it over the other CAN network (VE.CAN).
That is done through the 0x2015 and 0x2017.
So, I’ve set the BMS control back in the 200E and for that I am also sending 2017, discharge current, even in your case is not necessary, but it simulates info from a BMS.

If this doesn’t work, sorry… I am out of ideas, because I don’t have a MPPT RS to be able to dig further…

Not working.

I tried to send voltage directly to the mpptrs 0x2001 instead of broadcast.
Something strange happened:
The controller started giving this voltage via
0xED8D VE_REG_DC_CHANNEL1_VOLTAGE
is that how it should be?
I think that the value 0xED8D should be the real value of the controller voltage on the battery. Now it is fictitious.

Did you measured the voltage with a multimeter at the battery terminals?
Because on my Multi RS (not MPPT RS), the 0xED8D is the real voltage on the battery terminals…
What kind of battery do you have?

LE:
My dumps in this moment…
The Cerbo is broadcasting the desired voltage (52.25) and Multi RS the voltage on its terminals (49.78).
can0 1CEFFFE2 [8] 66 99 01 20 69 14 00 00
can0 1CEFFF40 [8] 66 99 8D ED 72 13 00 00

I thought the register 0xED8D is the value of the MPPTRS sensor that measures the voltage on the battery output.
Am I wrong?
Which register then shows the voltage value that the MPPTRS measures?

That was my feeling as well…

BTW…

You said that you also have an Epever inverter in the system…
Isn’t it possible that the inverter to influence somehow the voltage on the battery terminals?
Meaning it tries to charge and/or keep the battery at a different voltage?
Or is a pure and simple inverter, not an inverter/charger?

Epever this is a pure dc/ac inverter

This is what I’m suffering for :slight_smile: