Ankündigung

Einklappen
Keine Ankündigung bisher.

Node-Red- Heizstabregelung für PV Anlage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Node-Red- Heizstabregelung für PV Anlage

    Guten Abend miteinander,

    Ich habe ein kleines Problem mit einem PID- Regler in Node-Red.

    Ich betreibe eine kleine PV-Anlage und möchte über einen Heizstab mit Thyristorsteller (PWM) meinen Eigenverbrauch erhöhen.
    Hierzu lese ich die aktuelle Leistung im Zählerschrank mit einem Modbus-Zähler aus und lasse den Überschuss mit einem PID-Regler auf 50W Einspeisung Regeln. Dies funktioniert auch wunderbar, bis ein größerer Verbraucher hinzu geschaltet wird und ich mich nicht mehr über die PV-Anlage komplett versorgen kann (Netzbezug).

    Der verwendete Regler aus Node-Red liefert mir leider auch negative Stellwerte.
    Sobald ich aus dem Netz Leistung beziehe läuft mein Regler in den negativen Bereich hinein.
    Dies hat zur Folge, dass nach einer langen Bezugszeit es ewig dauert bis ich wieder in den positiven Stellwert gelange, d. h. der Heizstab zugeschalten wird.

    Jetzt war meine Idee, dass ich die Payload des Zählers und des Regelbereiches abfrage und die Weiterleitung an den PID-Regler ab 0W Lieferung und 0% Stellwert unterbinde.
    Leider funktioniert die Auswertung in dem Funktionsbaustein nicht so wie gedacht.
    Habt Ihr hierfür evtl. eine Lösung oder gar einen komplett anderen Ansatz?

    Ich hoffe ich habe es verständlich erklärt. Falls ihr noch weitere Informationen benötigt, lasst es mich wissen.

    Hier ein Screenshot des Reglers und den Flow zum kopieren.
    ich wäre über eine Hilfe eurerseits sehr dankbar.

    Code:
    [{"id":"e18a08ac.61acb8","type":"tab","label":"Regelung","disabled":false,"info":""},{"id":"2ad0d22e.3edbde","type":"calculator","z":"e18a08ac.61acb8","name":"","inputMsgField":"payload","outputMsgField":"regler","operation":"mult","constant":"-1","x":280,"y":4560,"wires":[["60b4e7bb.e8d7e8","aabe9555.679e28"]]},{"id":"a611553d.528f68","type":"modbus-read","z":"e18a08ac.61acb8","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"48","quantity":"8","rate":"10","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"faf5a8ce.331b38","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":110,"y":4240,"wires":[[],["a61b428e.4f433","372048e2.f707f8"]]},{"id":"a61b428e.4f433","type":"function","z":"e18a08ac.61acb8","name":"extract buffer data","func":"let powerSum1 = msg.payload.buffer.readFloatBE(0,8)\nlet demandSum1 = msg.payload.buffer.readFloatBE(8,8)\n\nreturn [\n    {\n        payload: {\n            powerSum1: powerSum1,\n            demandSum1: demandSum1\n        }\n    }\n];","outputs":2,"noerr":0,"x":430,"y":4280,"wires":[["a3950413.c98b98"],[]]},{"id":"a3950413.c98b98","type":"function","z":"e18a08ac.61acb8","name":"Leistung (Summe)","func":"return [\n    {payload: msg.payload.demandSum1, topic:'Leistung'},\n];","outputs":1,"noerr":0,"x":650,"y":4280,"wires":[["aabe9555.679e28"]]},{"id":"372048e2.f707f8","type":"modbus-response","z":"e18a08ac.61acb8","name":"","registerShowMax":"1","x":430,"y":4220,"wires":[]},{"id":"a0c6f3cc.91baf","type":"PID control","z":"e18a08ac.61acb8","name":"","target":"50","kp":"0.001","ki":"0.0002","kd":"0.00001","x":150,"y":4560,"wires":[["2ad0d22e.3edbde"]]},{"id":"bd2ef186.2aad5","type":"rpi-gpio out","z":"e18a08ac.61acb8","name":"","pin":"11","set":"","level":"0","freq":"2500","out":"pwm","x":800,"y":4560,"wires":[]},{"id":"3e369884.ea8618","type":"rpi-gpio out","z":"e18a08ac.61acb8","name":"","pin":"13","set":"","level":"0","freq":"","out":"out","x":340,"y":4780,"wires":[]},{"id":"da46986e.4b36e8","type":"comment","z":"e18a08ac.61acb8","name":"PWM-Ausgang für 0-10V converter","info":"","x":740,"y":4520,"wires":[]},{"id":"584707bd.bd8738","type":"comment","z":"e18a08ac.61acb8","name":"Relaisausgang für Umschaltung Nachtstrom/ PV-Strom","info":"","x":220,"y":4740,"wires":[]},{"id":"60b4e7bb.e8d7e8","type":"range","z":"e18a08ac.61acb8","minin":"0","maxin":"100","minout":"0","maxout":"100","action":"clamp","round":false,"property":"payload","name":"","x":640,"y":4560,"wires":[["bd2ef186.2aad5"]]},{"id":"563139f9.6d2648","type":"inject","z":"e18a08ac.61acb8","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"00 07 * * *","once":false,"onceDelay":0.1,"x":130,"y":4780,"wires":[["3e369884.ea8618"]]},{"id":"53cf1c14.76c164","type":"inject","z":"e18a08ac.61acb8","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"00 20 * * *","once":false,"onceDelay":0.1,"x":130,"y":4840,"wires":[["3e369884.ea8618"]]},{"id":"aabe9555.679e28","type":"function","z":"e18a08ac.61acb8","name":"","func":"let Leistung\nlet regelung\n\nif (Leistung <= 0 && regler <= 1) {\n   return null; \n} else {\n  return Leistung;\n}","outputs":1,"noerr":0,"x":370,"y":4420,"wires":[["a0c6f3cc.91baf"]]},{"id":"be775421.60a568","type":"comment","z":"e18a08ac.61acb8","name":"Modbus Zähler Auslesung SDM630 Modbus V2","info":"","x":240,"y":4140,"wires":[]},{"id":"b6aee4a3.ef5cd8","type":"comment","z":"e18a08ac.61acb8","name":"Auswertung der Regelgröße ob im negativen Bereich","info":"","x":630,"y":4380,"wires":[]},{"id":"66391280.158d9c","type":"comment","z":"e18a08ac.61acb8","name":"PID-Regelung","info":"","x":130,"y":4480,"wires":[]},{"id":"9c807183.77cbc","type":"comment","z":"e18a08ac.61acb8","name":"Bezug = negativer Wert ____ Lieferung = positiver Wert","info":"","x":260,"y":4180,"wires":[]},{"id":"faf5a8ce.331b38","type":"modbus-client","z":"","name":"","clienttype":"simpleser","bufferCommands":true,"stateLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"4800","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":12,"commandDelay":10,"clientTimeout":2000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true}]
    You do not have permission to view this gallery.
    This gallery has 1 photos.
    Zuletzt geändert von Maulaff; 22.03.2020, 22:17.

    #2
    Hallo Maulaff,

    ich hatte die gleiche Problemstellung wie du und hatte mich dann aber für eine Regelung mit Schaltaktor entschieden, der jede der 3 Phasen des Heizstabes einzeln zu oder abschaltet.

    Ich hatte mich bewusst gegen den Thyristersteller entschieden, da dieser mit Phasenan/abschnitt funktioniert und ich nicht wusste, das dann wirklich von der Sinuskurve des Solarreglers dann benutzt wird und ob das dann korreliert.
    Außerdem ist es glaube ich untersagt, so große Lasten zu "dimmen".

    Und das dritte, was für dich glaube ich wichtig wäre ist, das ich so immer genau weiss, was die Heizstäbe alleine gerade so verbrauchen, um damit regeln zu können und anderen Verbrauchern im Haus damit Vorrang geben zu können.

    Was ich aber gerade nicht verstehe, warum du dafür einen PID Regler einsetzt?
    Wäre es nicht sinniger direkt zu regeln, was willst du damit einregeln, du musst doch nur die aktuell überschüssige Leistung wissen und die zum Heizstab freigeben.
    Weisst du den mit welchem % PWM Wert du welche Leistungsaufnahme hast?

    VG,
    Doc

    Kommentar


      #3
      Hallo Maulaff,

      ich habe so etwas realisiert. Ich nutze keinen PID-Regler, sondern einen verkappten PI-Regler :-) der aber eher sehr statisch funktioniert.
      Meine Solaranlage hat nur 600Wp, reicht aber um den Grundverbrauch locker zu decken. Darüber hinaus heize ich mit einem PWM-Thyristor dann das Warmwasser.

      Infos zum Regelschema:
      Links kommt jede Sekunde die aktuelle Leistung + oder -

      Im "Skalieren" berechne ich in welche Richtung der Regler gesteuert werden muss und wie weit. Anhand des Widerstandes und der Spannung kann ich die Leistung des Heizelementes direkt berechnen was in die Skalierung mit einfliest.

      Dann der eigentliche Regelkreis, mit einem Limiter der bei >100 und <100 begrenzt, somit kommen immer nur maximal 100% An/Absteuerung zum tragen.
      Welches über die Verbindung nach Vorne zur Join wieder in die Berechnung mit einläuft

      Mit 0-100% Sicher wird die Ansteuerung bei Ausfall der Temperaturen oder Übertemperatur abgesichert.

      In der Regelkurve ist noch der Verlauf 0-100% PWM zur Leistungsabgabe skaliert und berechnet.

      Da ich mit dem System außerhalb meines Warmwasserspeichers bin muss ich auf die Schichtung im Speicher achten.
      Das Wasser vom Kaltwasseranschluss läuft in den Speicher und parallel ist der Heizstab angeschlossen, nun wird das Wasser aufgeheizt und im oberen Bereich des Rohres die Temperatur gemessen, ist diese >55°C wird eine Zirkulationspumpe angeschaltet die wieder kaltes Wasser in das Heizrohr schiebt, fällt die Temperatur an der oberen Stelle des Rohres unter 55°C wird die Pumpe abgeschaltet. Die Messungen reagieren nicht sofort da die Tauchhülsen erst aufgeheizt werden müssen.

      Erfolgt keine Abnahme aus dem Speicher wird nur der Verlust ausgeglichen und der Speicher komplett durch auf 60-62°C geheizt. Darüber erfolgt eine Abschaltung des Heizelementes.


      Regler.jpg

      Wenn hier weiteres Interresse besteht kann ich auch das Node teilen und auch einen Webzugriff auf mein Projekt zum ansehen einrichten.
      Ein lektrischer Speicher in Form von Batterie lohnt nicht, da die Leistung im Sommer ca. 5kWh pro Tag beträgt, die Abnahme aus dem Akku in kurzer Zeit nur mit einem Hochvoltsystem möglich wäre. Im Winter ist es dann völlig unnütz mit dem Akku.

      Gruß
      PhiWoe

      Kommentar


        #4
        Hallo PhiWoe,

        ich hätte durchaus Interesse an deiner Umsetzung inklusive der Programmierung/Parametreierung in NodeRed.
        Magst du mir deine Flows einmal bereitstellen? Würde mich sehr freuen.
        Gerne kann ich dir dann auch mal meine Ideen und Konzepte vorstellen :-)

        Viele Grüße und Danke,
        Kirsche

        Kommentar


          #5
          Ich wäre auch interessiert. Ich habe eine Rotex HPSU compact 508 bzw. Daikin Altherma 3 ECH2O Wärmepumpe mit 3-phasigem Heizstab und eine PV-Anlage mit viel Überschuss (leider noch kein e-Auto). Die Wärmepumpe setzt leider auch bei ausreichenden Außentemperaturen sinnlos oft den Heizstab ein, was selbst die 14,5kWp (AC) PV-Anlage nicht immer schafft. Zudem wird der Akku dabei entladen, was ich nicht möchte.
          Ich habe mir 3 Solid State Relais besorgt um den Heizstab zu regeln: https://www.ebay.de/itm/304086871924
          Die Dinger schalten immer im Nulldurchgang, ansteuern will ich sie mit einem ESP8266 oder dem RasPi, auf dem auch Node-RED läuft. Dann könnte man den Heizstab einerseits drosseln, wenn die WP ihn wieder aus ihrer Ungeduld heraus benutzt oder ihn aktiv einschalten, wenn man mit der Mittagssonne den thermischen Speicher laden will.
          Liegt alles noch rum, bin noch nicht dazu gekommen Aber an einen PID-Regler in Node-RED habe ich auch zuerst gedacht, einen Entwurf habe ich aber noch nicht. Muss erst mal die Verkabelung machen...
          Zuletzt geändert von atbs; 17.04.2022, 18:22.

          Kommentar


            #6
            Hallo!

            Ich habe ebenfalls Interesse an dem Flow. Habe einen 2KW Heizstab, eine 600Wp Solaranlage sowie eine PWM / 0-10V Phasenanschnittssteuerung welche ich per Shelly Dimmer 0-10V ansteuern möchte.

            Kannst du den Flow bitte irgendwie bereitstellen?

            Danke!

            Kommentar

            Lädt...
            X