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.
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}]
Kommentar