NEWS
Hilfe bei PV Eigenverbrauch
-
Bei diesem Blockly Script PV Eigenverbrauch brauche ich Hilfe. Die Berechnung soll gestoppt werden, wenn die Wirkleistung PV der Wert = 0 ist, und gestartet werden, wenn der Wert höher als -1. Vor den Werten Wirkleistung PV steht immer ein Minus. Nach vielen Versuchen will der Script einfach nicht funktionieren
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="z_V)`kOFzZHQ`4Q7_YwY" x="13" y="13"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="D0gBT{VK!~6*d#Q.q0Er"> <field name="oid">modbus.0.inputRegisters.1.30073_Leistungsbezug_EVU</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="/=[WUBj|tC6_4Xj9CjJf"> <field name="oid">modbus.0.inputRegisters.2.30075_Gesammt_Leistung_PV</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="I66lMtc0|ox*eSD57K]="> <field name="oid">modbus.0.inputRegisters.2.30013_Wirkleistung_PV</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="YsV_5-GT4O.nKtoF5PvM" inline="false"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Mathe.n_eigenverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="fQC%Z?NOWD?(9DkLMF@Z" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="~CRRPcjN;Q@PM{Nf35[R"> <field name="NUM">1</field> </shadow> <block type="get_value" id="SxyPvU#uH4Z4a=w{-z,}"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.1.30073_Leistungsbezug_EVU</field> </block> </value> <value name="B"> <shadow type="math_number" id="[s_r(hoZ~B!(Dx,vj]=8"> <field name="NUM">1</field> </shadow> <block type="get_value" id="~eH|jVoE(iI}pcDUgsSI"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.2.30075_Gesammt_Leistung_PV</field> </block> </value> </block> </value> <next> <block type="controls_if" id="=aid8;uTBQ1yIJ%#LK/-"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="1l,Ue}8;]mtmTZ.UXnro" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="?PdUDwWb^1wQ2zR`Q1{u"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="C$E,9b8w*4*A:1_XC4#H"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="=9pDr^=_`PK2r^bTiw?h"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="0j8gF6[Ca%PU2#a4Fzam"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="=pcRlUE}D%u8HH=^X{Lr"> <field name="ATTR">val</field> <field name="OID">javascript.0.Mathe.n_eigenverbrauch</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Y{Pym)$CJjxuC#@uM1y1"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <value name="IF1"> <block type="logic_operation" id="8Lb~N$M~%_b`An?zF?:v" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="%!THv]u,NtC1e,xU0%q?"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="k~J)IYD1$7Ewt.Tfvn$9"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="zRbwx8JhCYds!c-UxM[-"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="p}WnWXu`x0p1TR;KL^[."> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="wjdfvN~.1c`~JD14$/I+"> <field name="ATTR">val</field> <field name="OID">javascript.0.Mathe.n_eigenverbrauch</field> </block> </value> <value name="B"> <block type="logic_boolean" id="HA2ux;?Bu%U`q3`=QD{j"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <next> <block type="on_ext" id="N3q~uh|.N/LmaIMt^;H`"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="//5wjkG-+|JgT#$thcun"> <field name="oid">javascript.0.Mathe.n_eigenverbrauch</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="8pG%0b(IN@3p!D:h$PE4" inline="false"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Mathe.ändern</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="p;;:y1jb;zH6=iS68jV}" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="on_source" id="]=~FDj@lN`ZZ]MU:der["> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number" id="Th2J]`.TB(Zp+gG0BF5J"> <field name="NUM">26</field> </shadow> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="on" id="g)s?O(kB5lj}B(dc@R/j"> <field name="OID">javascript.0.Mathe.ändern</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="update" id="69!r]T8t2M;nj((2],]J" inline="false"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Mathe.n-eigenverbrauch_n-einahme</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_rndfixed" id="jfZS1{=}exeTlA$a@[A8"> <field name="n">2</field> <value name="x"> <shadow type="math_number" id="YS0~:4kW)}=L4t#IM/Mk"> <field name="NUM">3.1234</field> </shadow> <block type="math_arithmetic" id="jZHtV((P8FaEQsPLO]ue" inline="false"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="2.HtJ%~y74{*mksJ81x;"> <field name="NUM">1</field> </shadow> <block type="on_source" id="?c|XO`q%$3VpoioIW10d"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <shadow type="math_number" id="b2OGGx}`x}`|D[Uo(XU8"> <field name="NUM">0.28929</field> </shadow> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </xml>
Mod edit: Skript in Code tags gesetzt
-
@karlo7
Bei Mehrfach-Triggern kannWert
nicht verwendet werden. Trigger innerhalb eines Triggers geht auch nicht! Außerdem kann ein Zahlenwert nicht mit wahr oder falsch verglichen werden.
Aus Leistungswerten lässt sich keine Ersparnis / Einnahme errechnen. Das kann man nur mit Energiewerten (kWh). -
@karlo7 sagte in Hilfe bei PV Eigenverbrauch:
Blockly Script
Kannst du auch davon ein Screenshot einstellen ... denn nicht jeder ladet sich dein Script hoch
-
@karlo7
Hier noch mal ein Screenshot. Außerdem kann ein Zahlenwert nicht mit wahr oder falsch verglichen werden.
Wie kann man das ändern? -
@karlo7
Das Blockly ist unbrauchbar.
Informiere uns bitte, was berechnet werden soll und welche Datenpunkte vom PV-Wechselrichter und vom Smartmeter (EVU) zur Verfügung stehen. Woher kommt "Gesammt-Leistung"?
Prinzipiell gilt:
Einspeisevergütung = Einspeiseenergie * Einspeisepreis
Ersparnis = (PV-Energie - Einspeiseenergie) * Bezugspreis
Gesamt = Einspeisevergütung + Ersparnis -
@paul53 Hallo Paul 53
Berechnet werden soll der Preis vom Eigenverbrauch der Mini PV-Anlage.
Die Datenpunkte werden von Modbus Zählern Einspeisung PV-Minianlage und vom Zähler der den Gesamtverbrauch misst. Ich will aber nur den Eigenverbrauch berechnen. Der Energie Überschuss wird nicht bezahlt und muss rausgerechnet werden. -
@karlo7 sagte: Der Energie Überschuss wird nicht bezahlt und muss rausgerechnet werden.
Er wird aber gemessen, da sonst eine Ermittlung des Eigenverbrauchs nicht möglich ist?
Also gilt nur:
Ersparnis = (PV-Ertrag - Einspeiseenergie) * Bezugspreis -
@paul53 Der Überschuss wird vom EVU Zähler gemessen. Den kann ich ablesen, und mit Excel dann den Eigenverbrauch berechnen.
Ich habe Blockly schon stundenlang zusammen geschoben um die BerechnungErsparnis = (PV-Ertrag - Einspeiseenergie) * Bezugspreis
über den Wert Wirkleistung_PV anzuhalten wenn der Wert =0 ist also keine Einspeisung erfolgt. Auch wenn das Ergebnis nicht stimmt, in Blockly hätte ich was dazu gelernt.
-
@karlo7
Beschreibe bitte, was sind- Wirkleistung_PV
- Leistungsbezug_EVU (positiv und negativ?)
- Gesammt_Leistung
Der Bezeichnung nach sind das alles Leistungswerte. Für die Berechnung werden aber Energiewerte benötigt.
Wozu dient die Subtraktion von 26? -
@karlo7 sagte: Der Überschuss wird vom EVU Zähler gemessen.
Liegt also als Datenpunkt vor? Dann sollte man ihn auch so benennen.
Man verwendet nicht viele Trigger (Ressourcen-Verschwendung), sondern merkt sich Zwischenergebnisse in Variablen. Prinzip:EDIT: Wenn nur Leistungswerte geliefert werden, muss man die Energiewerte mittels Integration über die Zeit ermitteln.
-
@paul53
Hallo Paul53
Danke für die schnellen Antworten, und die guten Tipps.