Off-grid when grid voltage is too high

Hi all,

I live in The Netherlands and in some neighborhoods, when the sun shines in the summer, the grid voltage rises above 250V. At 253V the PV inverters stops producing energy as per European regulations.

I’m trying make an automation, either in Node-Red or physical switch, to switch off the grid, going off-grid, at around 250V. So the PV energy will keep going into batteries instead of switched off. And lets say below 249V the system will connect back to the grid.

I just can’t figure out how I’m going to do this. I know in the Assistants there is an assistant to control the AC-IN relay with a few variables, but Voltage isn’t one of them unfortunately. In Node-Red I can’t see a node that let me control the AC-IN relay.

Hope you guys can help me out.

Thanks!

1 Like

i´d install - although it is not political correct - a transformer to reduce the voltage….

With all your node red rules - you still will have the problem that voltage is to high, inverters will stop

You can also do this in grid settings in the multplus

Or you can use a grid monitor relay and let it switch a bigger relay on your grid entry

Please describe your installation, what do you have? Victron pv inverter? Third party? What charger?

With my Multi RS 6000 I can set grid voltage as high as 265 Volts…

I guess you are using the european grid code since theres no dutch specific one?

The overvoltage trip point is at 110% as standard, but you could lower that. But im not sure if you would be allowed to change gridcode settings as per your grid supplier or national electrical code.

Setting the reactive power regulation to “Q as a function of input voltage” in theory also helps, but i doubt that only one system using that would make a real change.

I used to do things through assistants, but ive recently gave nodered a try, and just because its much easier to do changes i prefer it already. The workflow is very different, i still havent figured out what the actual thought is behind topics and payloads, but im getting there.

As for using nodered for this, i suppose you can take the input voltage, add a threshold and then control the AC input ignore. But then theres no hysteresis, so probabaly you’ll be better off using a function block

This is definitely not ideal, it will burn away alot of energy.

Can you explain both options? The grid settings in the MP are locked and cannot be change as far I know.

It is a three phase system with MP5000 and two SolarEdge pv inverters. Those SE inverters will cut-out at 253V which often happens when sun shines in the summer.

1 Like

Correct, using the European grid code. Grid code settings cannot be change as far I know as it is locked (for obvious reasons).

I’m really aiming on using Node-Red for this. You’re talking about control the AC input ignore. Which node in Node-Red is that?

Grid settings can be changed with a password

This is a grid monitor relay, the relay output of this device can be used to control a bigger grid relay

Not only the se inverters will disconnect, the mp2 will also if its feeding to grid, according to the grid code rules in NL

1 Like

Well, I guess it will disconnect later because the MP’s don’t disconnect at 253V

I just found out if I change the mode in VRM from ‘on‘ to ‘invert only‘ it will open AC-in relay and I will be in off-grid mode. Now just need to figure out how to control this mode through Node-Red.

image


Enables “Ignore ACin” if the mains voltage is above 245V

But again, has no hysteresis, so the mains voltage falling below 245V will activate ACin again. It does have a delay (debounce) that you could increase, but it would delay both enable and disable. Rather use a function block and write a small program

Great, thanks for helping out. With the help of ChatGPT I’ve made a Function Node with the following functions:

  • If one of the phases are above 251V => 15 minute timer will start
  • If the phase above 251V drops again below 251V within the 15 minute timer => timer stops
  • If 15 minutes has passed and one or more phases are above 251V => sends “1“ to activate IgnoreACin1
  • If voltages of the phase(s) above 251V drops below 251V => 15 minute timer starts again
  • If voltages are below 251V => sends “0“ to deactivate IgnoreACin1.
  • Change nodes before the Function Node because if the Topic from Victron changes in the future, it won’t hurt the Function Node and it will keep functioning.

Code in the Function Node (Code still needs to be tested!):

[
    {
        "id": "ec653291029cbeed",
        "type": "function",
        "z": "bb493c6516711416",
        "name": "function 1",
        "func": "const LIMIT = 251;\nconst DELAY = 15 * 60 * 1000;\n\nlet now = Date.now();\n\nlet voltages = context.get(\"voltages\") || {\n    L1: null,\n    L2: null,\n    L3: null\n};\n\n// spanning opslaan per fase\nif (msg.phase === \"L1\") voltages.L1 = msg.payload;\nif (msg.phase === \"L2\") voltages.L2 = msg.payload;\nif (msg.phase === \"L3\") voltages.L3 = msg.payload;\n\ncontext.set(\"voltages\", voltages);\n\n// wacht tot alle fases bekend zijn\nif (voltages.L1 === null || voltages.L2 === null || voltages.L3 === null) {\n    return null;\n}\n\nlet state = context.get(\"state\") || 0;\nlet highStart = context.get(\"highStart\") || null;\nlet lowStart = context.get(\"lowStart\") || null;\n\nlet anyHigh = voltages.L1 > LIMIT || voltages.L2 > LIMIT || voltages.L3 > LIMIT;\nlet allLow  = voltages.L1 <= LIMIT && voltages.L2 <= LIMIT && voltages.L3 <= LIMIT;\n\n// overspanning detectie\nif (anyHigh) {\n    lowStart = null;\n\n    if (!highStart) highStart = now;\n\n    if ((now - highStart) >= DELAY && state === 0) {\n        state = 1;\n        msg.payload = 1;\n\n        context.set(\"state\", state);\n        context.set(\"highStart\", highStart);\n        context.set(\"lowStart\", lowStart);\n\n        return msg;\n    }\n}\n\n// herstel detectie\nif (allLow) {\n    highStart = null;\n\n    if (!lowStart) lowStart = now;\n\n    if ((now - lowStart) >= DELAY && state === 1) {\n        state = 0;\n        msg.payload = 0;\n\n        context.set(\"state\", state);\n        context.set(\"highStart\", highStart);\n        context.set(\"lowStart\", lowStart);\n\n        return msg;\n    }\n}\n\ncontext.set(\"highStart\", highStart);\ncontext.set(\"lowStart\", lowStart);\ncontext.set(\"state\", state);\n\nreturn null;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 700,
        "y": 1200,
        "wires": [
            [
                "baf8a917a255d234",
                "d5a9fa7a5126c107"
            ]
        ]
    }
]

We have 3 x 25A main grid fuses and 3 x Multiplus 6K5’s with our home connected to AC OUT including the PV inverters. No problem here with grid outages. Isn’t that ultimately what you should use?

Could just use a customised grid code and manually set the disconnect and reconnect criteria.

1 Like

Yes Exactly what i referred to

The problem is not on my side, but the grid side. And the problem of high grid voltage is not everywhere in the Netherlands.

Strange advise. Why would you change the netcode for you benefit? It is by law those netcode parameters and by changing it you’re in illegal territory. As a “Victron Export“ I was expecting a different advise…