Wer moechte wissen, wie man bms-daten aendert, die einspeisung steuert oder system koppelt?

hallo,

und du verstehst nicht, dass die spannung im akku und der strom eine folge der chemischen prozesse ist und erst danach greifen die physikalischen gesetze und das ergebnis der chemischen prozesse ist eben auch veraenderlich und wiederum abhaengig vom strom!

ein akku ist keine spannungsquelle, deren spannung absolut konstant ist oder nur von einem parameter, wie z.B. dem soc abhaengt!

ich habe keine ahnung, von was die spannung genau abhaengig ist, aber es ist nun einmal so, dass die sich beim laden und entladen veraendert und sich die stroeme deshalb eben nicht nur nach dem ohmschen gesetz zwischen den akkus aufteilen!

das hat schon bei meinen alten blei-akkus nie zu 100% gepasst. aber aufgrund des hoeheren innenwiderstandes gab es da weniger unterschiede.

wie gesagt, ich kann die gerne meine daten zur auswertung ueberlassen, sowohl von den blei-akkus als auch von den li-akkus, weil ich immer mehrere bmv im einsatz habe, naemlich fuer jedes system mindestens 2! nur die akkus haben unterschiedliche kapazitaeten.

aber wenn du mir nicht glauben willst, die daten nicht auswerten willst, um zu sehen, was richtig ist, dann glaub eben was du willst, nur den akku interessiert es nicht, was du glaubst! die stroeme verteilen sich immer so, wie die vorraussetzung es verlangen!

tschuess

Dies wĂ€re auch mein Ziel. Allerdings habe ich nur die verlinkte Möglichkeit per „Mqtt-battery“ gefunden.

Auch hier gehe ich vollkommen mit.

Wie erstellst du von NodeRed aus eine dbus.Batterie —> ist das in dem geteilten „flow(4)“ enthalten?

OK, Dein Versprechen, Deinen Unsinn im letzten Beitrag ein letztes Mal verbreitet zu haben, konntest Du also nicht einhalten. Wen glaubst Du denn jetzt mit diesem trivialen Zusammenhang zu beeindrucken? Ja, natĂŒrlich ist alles in einem Akku Chemie.

Aber das Ă€ndert absolut gar nichts daran, dass, ganz egal, welche chemischen Prozesse tatsĂ€chlich Spannung, Innenwiderstand und Stromfluss in einem Akku erzeugen, aussschließlich Spannung und Widerstand den Strom bestimmen. AUSSCHLIESSLICH!

Falls Du ernsthaft glaubst, das Ohm’sche Gesetz gelte fĂŒr Akkus nicht, dann bewirb Dich um den Nobelpreis. Falls Du recht hast, wirst Du ihn mit absoluter Sicherheit erhalten.

Nochmals mit Nachdruck: es gilt das Ohm’sche Gesetz, und demnach wird der Stromfluss alleine durch Spannung und Widerstand bestimmt. Keine Chemie der Welt kann daran was Ă€ndern. Dass Spannung und Widerstand in einem Akku durch die Chemie des Akkus bestimmt werden, Ă€ndert daran absolut gar nichts.

hallo,

das ist das einzelne node ohne verbindung mit namen akku. das virtual-device-node findest du bei den victron-nodes.

ob du ein anderes can-bus-bms oder ein remote-bms mit mqtt oder einer anderen anbindung benutzt, spielt keine rolle.

tschuess

Hallo,

vielen Dank fĂŒr den Hinweis. Ich war gedanklich so auf ein Funktion fixiert, dass ich die virtual-device-node völlig vergessen habe!

„Laut gedacht“:

Ich muss es mir erst noch genauer ansehen aber scheinbar kann ich immer nur einen Wert schreiben pro virtual-device-node?

hallo,

du kannst pro virtual device soviele werte schreiben, wie das device unterstuetzt, aber du kannst natuerlich fuer einen virtuellen akku nur einen soc schreiben und keine 2, aber du kannst die socs von mehreren akkus auf einen soc fuer alle akkus umrechnen.

tschuess

Mit msg.path kann man mehrere Werte fĂŒr ein virtual Device an nur einer Node ĂŒbergeben.

Nicht alles „gleichzeitig“, mit delay 10ms zwischen einzelnen msg.path inkl payload lĂ€uft gut

Eine einfache Frage:

  • Welche genauen node-red Paletten sind fĂŒr die Implementierung erforderlich ?

hallo,

hier ist der passende flow dazu: https://community.victronenergy.com/uploads/short-url/wwrYCffoV45YZiENNoGv080lWle.zip

alles was du brauchst ist schon da.

tschuess

hallo,

den wert msg.path benutze ich nicht, ich benutze immer die victron-nodes oder mqtt. und ich sende die werte ich nur, wenn sie sich aendern oder eine zyklische aktualisierung noetig ist.

tschuess

Vielen Dank das ist fĂŒr mich als max. 60%kwp Einspeiser sehr interessant, da ich so den Mittagspeak in den Akku laden könnte anstatt ihn aufgrund der Einspeisebegrenzung wegzudrosseln wenn der Akku mittags schon 100% hat.

Bei mir kommt allerdings unter Debug10 : { payload: NaN, topic: “”, _msgid: “e026a9bf5803de42”, C: NaN, RT: 6.316666666666666 
 } und Akku(100) /Info/MaxChargeVoltage : Data:NaN was not a number.

image

[..die parameter habe ich vorher mit einem anderen flow im globalen datenspeicher abgelegt.]

flows(5).zip habe ich auch laufen lassen. Hat jedoch nicht geholfen.

Hast Du vielleicht einen Hinweis fĂŒr mich warum Function10 keine Zahlen liefert ?

Ciao

hallo,

die funktion 10 liest sehr viele daten aus dem globalen speicher:

var AKKU = global.get(“AKKU”);
var PA = global.get(“Pakku”);
var IA = global.get(“Iakku”);
var UA = global.get(“Uakku”);
var AH = global.get(“AKKU_AH”);
var MP2 = global.get(“MP2_P_DC”);
var LIMIT = global.get(“MPPT_LIMIT”);
var PV = global.get(“pv_power”);
var DU = global.get(“DELTA_U”)*1;
var CMIN = global.get(“CELL_MIN”)*1;
var CMAX = global.get(“CELL_MAX”)*1;
var US = global.get(“ULADE”)*1;
var US1 = global.get(“ULADE1”)*1;
var SOC_0 = global.get(“SOC_0”)*1;
var SOC = global.get(“SOC”)*1;
var UMIN = global.get(“UMIN”)*1;

das sieht dann etwa so aus:

du musst deshalb die benutzten konfigurationswerte vorher dort speichern oder sie im programm durch festwerte ersetzen. die messwerte muessen vorher dort abgelegt werden, was ich ueber einen eigenen flow mache. das geht leider nicht anders, ausser du moechstest es moeglichst kompliziert!

bei dir wird also irgend einer der werte fehlen, die aus dem globalen speicher gelesen werden, das kann man aber schnell pruefen, indem man sich den speicher anzeigen laesst.

konfigurationen speichere ich extern auf einer datenbank, damit ich die problemlos im laufenden betrieb aendern kann ohne auf dem gx etwas aendern zu muessen. aber dafuer gibt es mehrere moeglichkeiten. fuer einige daten kann man auch den lokalen mqtt-server als speicher benutzen, weil node-red auch gerne mal neu gestartet wird und die werte im speicher sind dann natuerlich weg!

so sieht dann z.B. die tabelle auf der datenbank aus:

du kannst auch das komplette programm gegen ein eigenes austauschen oder eine kombination aus anderen nodes, wenn es dazu passende gibt.

du kannst fuer die max ladespannung und strom aber auch die dvcc-werte auslesen und benutzen.

tschuess

In diesem Fall wĂŒrde ich Dir empfehlen, den Akku schon vorher tiefer zu entladen. Genau das mache ich mit einem NodeRed Flow, der die Solarprognose aus VRM ausliest und den “Grid Setpoint” des ESS passend setzt.

Bei mir ist der Grund fĂŒr diese Regelung, dass ich nur einen MP-II-3000 mit max 2,4 kW WR-Leistung habe, aber 5,4 kWp Solarmodule, die ĂŒber MPPTs den 16 kWh Akku laden. Bei vollem Akku mĂŒsste also alles, was ĂŒber 2,4 kW von den Solarmodulen kommt, abgeregelt werden.

Mein NodeRed Flow sorgt nun bei ausreichender Solarvorhersage dafĂŒr, dass der Akku jetzt im MĂ€rz bis auf 50% SOC, im Sommer sogar bis runter auf 20% SOC entladen wird, und mittags die Ladeleistung durch erzwungene Netzeinspeisung reduziert. Ziel der Regelung ist es, den Akku erst dann voll zu kriegen, wenn die Solarleistung unter 2,4 kW fĂ€llt. Das klappt sehr gut, es muss niemals abgeregelt werden.

hallo,

du kannst auch erst einmal alles aus dem programm loeschen, was du nicht brauchst, z.B. alles was mit dem soc zu tun hat, wenn du nur zeitgesteuert laden willst. allerdings brauchst du den aktuellen soc um die noch zu ladende kapazitaet auszurechnen, wenn du keinen bmv/smartshunt verwendest.

tschuess

Super Danke ! Ich hab mit Deinen Flows jetzt was zum basteln, die Idee die BMS Steuerung einer virtuellen manipulierbaren Bat zu ĂŒbergeben finde ich sehr elegant, (Allerdings : ist es nicht heikel der Anlage das virtuelle BMS als Master einzustellen wenn wie Du schriebst das NodeRed auch mal aussteigt?) alle Deine Objekte in den Flows kann ich gut gebrauchen. Denke ich werde als nĂ€chsten Schritt wie von Dir empfohlen erstmal rausfinden welcher Wert meiner Funktion 10 fehlt aus den globalen Objekten.

Wenn ich es dann mal geschafft habe wenigstens umgangsprachlich zu formulieren wie es laufen soll, habe ich aber schon sehr viele der Objekte die ich gebrauchen kann aus Deinen Flows.:slightly_smiling_face:

Was ich mich noch frage :Warum nimmt man die Ladespannung um die Ladung zu begrenzen und nicht zBsp. die DVCC Ladestrombegrenzung ?

Also anstatt zu sagen max Ladespannung ist XX Volt etwas in der Art : Wenn SOC XX erreicht ist setze die DVCC Ladestrombegrenzung auf 0.

Liegt das daran das die DVCC Ladestrombegrenzung nicht fĂŒr die MPPTS gilt ?

hallo,

wenn node-red austeigt, ist das kein problem, es wird dann neu gestartet. lediglich bugs, die durch einen flow ausgloest werden und einen neustart verhindern, sind ein problem. in dem fall wuerde das bms ausfallen und damit auch die mppts und ladung ueber den multi. ich hatte das aber bisher nur 2 oder 3 mal wegen bugs in bestimmten nodes, die ich dann durch eine falsche einstellung getriggert hatte. deshalb den flow immer auf dem pc sichern, sonst muss man mit ssh auf das gx um ihn zu copieren oder zu bearbeiten.

ich benutze inzwischen dieses script, um mir die flows und die settings (um festzustellen, was geaendert wurde, um unoetige schreibvorgange zu unterbinden) auf meinen server zu kopieren:

for N in 0 1 2 3 4 5
do
echo cerbo-$N:
scp cerbo-$N:/data/conf/settings.xml settings-$N.xml
compdel -d alt/settings-$N.xml settings-$N.xml
scp cerbo-$N:/data/home/nodered/.node-red/flows.json flows-$N.json
compdel -d alt/flows-$N.json flows-$N.json
done

den vergleichsbefehl wirst du wohl nicht haben, das ist ein programm von mir, damit nur geaenderte dateien im aktuellen verzeichnis bleiben, die verschiebe ich dann des oefteren in ein unterverzeichnis. werde ich wohl mal automatisieren und eventull in meinem cvs speichern.

das problem bei dvcc, wenn du die werte nachfuehrst, wird die config mindestens einmal pro minute gespeichert und genau das will ich ja verhindern!

und ich steuere den ladestrom prinzipiell ueber die spannung, weil ich dann nicht staendig nachregeln muss, wenn sich die last aendert. wenn die sich naemlich ploetzlich erhoeht, dann muss das system erst einmal die neuen sollwerte an die ladegeraete schicken, da sich die spannung aber nicht so stark aendert, regeln das die ladegeraete dann selbst. abgesehen davon, mit aktivierter dc-ueberschusseinspeisung reagiert das system anders als ohne. in dem fall ist der multi zustaendig, dafuer zu sorgen, dass die akkuspannung/-strom nicht zu hoch geht, indem er entsprechend leistung einspeist.

die dc-ueberschusseinspeisung deaktiviert die strom- und spannungssteuerung der mppts! die einstellungen steuern dann nur noch den multi.

tschuess

hallo,

hier einmal ein flow, der zaehlt, welche tracker der rs450 im limit-mode sind, also nicht die maximale moegliche leistung liefern:

flows (10).zip (1,9 KB)

wenn die mppts nicht ueber vedirect sondern ueber can angebunden sind, muss man das topic aendern.

tschuess

hallo,

hier ein flow, der sich die netzdaten von einem anderen system (ich habe mehrere 3-phasen-systeme in reihe geschaltet) ueber mqtt holt und fehlende werte von einem installierten shelly. prinzipiell reicht aber die mqtt-verbindung zu dem 1. multi, damit der 2. die noetigen daten hat.

flows (11).zip (2,3 KB)

natuerlich kann man diese daten noch veraendern, falls noch die daten weiterer multis oder shellys mit leistungsmessung beruecksichtigt werden muessen. aber achtung, bindet man shelly 1pm oder 3 pm ein, dann fehlt moeglicherweise die strommessung und die spannungsmessung!

ansonten kann natuerlich jeder den flow nach seinen wuenschen anpassen und es koennen alle datenquellen benutzt werden, die im netz vorhanden sind.

um es etwas einfacher zu machen, habe ich alle daten, die ich ueber mqtt von einem anderen gx abrufe mit nur einem node abgerufen und danach aufgeteilt. es sind keine anpassungen des flows noetig, was das topic angeht, wenn man ein anderes gx als datenquelle nutzt. das vereinfacht es auch, wenn man einen anderen mqtt-server benutzen will. man muss nur einen node aendern anstatt viele oder die daten fuer den mqtt-server.

moechtet ihr gerne noch mehr solche beispiele?

tschuess

gibts einen flow mit dem man relais 2 am cerbro schalten kann wenn die einspeisung einen definierten wert ĂŒberschreitet abzĂŒglich einer definierten last im eingeschaltenen zustand?

beispiel wĂ€re einspeisung ans netz 30 Kw soll n boiler mit 9 kw schalten um zu verhindern das MPPT und WR zurĂŒckgeregelt werden da die einspeise grenze 30 kw ist , die anlage aber auch schon mit 35 kw ranklotzen konnte , relais sollte aber nicht abschalten wenn die einspeisung durch den schaltvorgang nur noch 10 kw ist (pendeleffekt)

ich habs nun ĂŒber n jahr versucht mit dem node red , scheint aber als genĂŒgt ausbildung von vor 25 jahren in SPS von siemens nicht um damit klar zu kommen


die erwÀhnte funktion gabs schon vor 6 jahren mittels innov energie die ja konkurs sind in ihrer eigenen firmware zu den salzschmelze batterien , ich vermiss das irgendwie da sehr bequem wenns mal wieder flöckliwetter hat und vollsonne auf ne grobe anlage fÀllt im kalt zustand

auf der SPS wĂŒste ich wie man das mit “und” sowie “oder” verknĂŒpfungen macht wenn der quellwert verfĂŒgbar ist

ich denke victron selber könnte das sehr einfach integrieren und “eigenverbrauchssteuerung” nennen

hallo,

im einfachsten fall geht das mit einer funktion, die die einspeiseleistung (negativ, also summe des smartmeters) als parameter auf den eingang bekommt:

if (msg.payload< -25000) msg.payload=1;

else if (msg.payload>0) msg.payload=0;

else return;

return msg;

bei ueber 25 kW einspeisung ein und sobald bezug aus. die grenzwerte kannst du natuerlich beliebig waehlen. man kann auch noch die uhrzeit benutzen und/oder eine sperrzeit fuer erneutes schalten mit einbauen.

fuer den rueckgabewert musst du natuerlich den wert setzen, den du brauchst, um das relais zu schalten, an den ausgang wuerde ich noch das node filter haengen,. so dass nur aenderungen weitergegeben werden.

dieser node ist der hauptteil meiner heizungsregelung:

flows (14).zip (1,8 KB)

das ist natuerlich um einiges komplizierter, da leistungsueberwachung der phasen und schnelle ueberlastabschaltung, sperrzeiten zum ein und ausschalten und 3 stufen regelung. ich benutze 4 shelly 1 fuer die steuerung, wobei die shellys fuer die einzelnen phasen in die steuerleitungen des e-heizkessels eingebaut wurden.

tschuess