NEWS
Modbus: FC16 – Write multiple registers
-
Hallo,
möchte meine Pelletsheizung ETA PU15 mit Modbus steuern.
Das auslesen der verschiedenen Werte funktioniert super. Die Adressen habe ich im Modbusadapter unter Holding Registers eingetragen und wie gesagt es funktioniert.
Nun möchte ich auch Werte schreiben und eine Raumtemperatur von KNX der Heizungsanlage senden!
Habe in der Modbus Beschreibung der Heizungsanlage etwas von " FC16 – Write multiple registers" gelesen.
Im Modbusadapter sehe ich keine multiple registers! Kann mir da jemand bitte weiterhelfen wo ich diese Adressen dann eingeben muss?
Danke!!
-
Normalerweise musst du nur den Wert in den Objekten überschreiben. Das schreiben in die Register übernimmt dann der Adapter. Soweit ich durchsteige gibt es beim Modbusprotokoll zwei Funktionen. FC6 "write single register" und FC16 "write multiple register". Ich habe in den change logs vom Modbus adapter gelesen, dass seit Version 0.3.9 eigentlich immer "write multiple register" genutzt wird. Ich habe bei einem meiner Geräte aber auch das Problem, dass ich keine Werte schreiben kann. Das Gerät verlangt FC16, obwohl man nur ein Register beschreibt. Es scheint als doch nicht immer FC16 genutzt zu werden oder ich bin zu blöd. Siehe https://forum.iobroker.net/topic/1259/modbus-adapter/526
Gruß
Timo -
@TimoS Sorry für die späte Antwort,
Das überscheiben der Werte in den Objekten funktioniert jetzt soweit.
Ich schreibe die Werte mit einem Blockly alle 5 sek auf einen Datenpunkt und der Adapter liest die Werte alle 10 sek aus (Poll delay).Das Problem ist das auch die zu schreibenden Datenpunkte zyklisch ausgelesen werden, und jedes Mal wenn das passiert ändert sich der Wert des zu schreibenden Datenpunkt in einen undefinierten Wert (z.b. -3276,8) und wird dann vom Blockly script wieder aktualisiert (z.b. 24,0)
Ich habe versucht den Hacken "poll" bei den zuschreibenden Datenpunkten in den Holding Registers weg zu nehmen, leider verschwindet der Datenpunkt dann auch in den Objekten. Soll das so sein? Gibt es eine Möglichkeit Datenpunkte nur zur schreiben und nicht zyklisch abzufragen?
Gruß
Christoph -
@Chrisdor Hallo! Ich stehe vor dem gleichen Problem mit einer Eliwell Wärmepumpensteuerung. Auslesen kein Problem, aber Schreiben auf den Datenpunkt endet immer mit einem " Cannot write [2048]: {"err":"timeout"} ". Das es im Prinzip funktionieren muß, habe ich mit einem Windows-Modbus-Testprogramm gesehen. Kannst Du bitte nochmal präzisieren, wie Du den Datenpunkt eingestellt hast, damit Schreiben geht?
Grüße,
Gregor