Modbus - write multiple registers über mehrere Adressen - Hilfe gesucht

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Tommes78
    MS Profi
    • 24.09.2015
    • 670

    #1

    Modbus - write multiple registers über mehrere Adressen - Hilfe gesucht

    Kennt sich jemand damit aus wie man mehrere Register gleichzeitig beschreiben kann.

    Falls auch die Farbe gesetzt werden soll (nur WARP3), müssen die Reg­is­ter 1004 bis ein­schließ­lich 1013 in einem Befehl ge­schrie­ben werden.

    Datentyp: uint32 - evse

    Schreiben von einzelnen Werten bekomme ich hin, aber gleichzeit an verschiedene Adressen habe ich noch nie gemacht.

    Vl. könnte mir jemand dabei helfen?

    Danke im Voraus
  • Jan W.
    Lox Guru
    • 30.08.2015
    • 1503

    #2
    Ein Modbus Register hat eine feste Größe von 16 Bit, d.h. 2 Byte. Loxone hat kein Datentyp "Array" und unterstützt bei Modbus Aktoren daher maximal 64-Bit Werte (signed oder unsigned integer oder double). Du kannst daher mit Modbus Aktoren maximal 64-Bit, d.h. 8 Byte bzw. 4 Register gleichzeitig schreiben oder lesen.

    Du könntest daher Register 1004 bis 1007 (das sind 8 Byte) mit einem Befehl schreiben. Die o.a. Register 1004 bis einschl. 1013 umfassen insgesamt 10 Register, d.h. 20 Bytes. Ein uint32 hat immer 4 Bytes. Das passt nicht zusammen.

    Technisch kannst Du bei Modbus nicht Werte an verschiedene (unterschiedliche) Adressen schreiben, sondern mit einem Befehl nur "multiple Registers" (mehrere aufeinander folgende Register) quasi gleichzeitig schreiben.

    Der Aufbau des Befehls sieht so aus:
    Function code 1 Byte 0x10 10hex = 16 is function code for "Write Multiple Holding Registers"
    Starting Address 2 Bytes 0x0000 to 0xFFFF The address of the first register
    Quantity of Registers 2 Bytes 0x0001 to 0x007B The number of registers to write
    Byte Count 1 Byte 2 x N* The number of data bytes to follow (2 * quantity of registers).
    Registers Value(s) N* x 2 Bytes value(s) The data bytes itself
    Jeder Modbus Aktor sendet bei Werteänderungen genau ein Modbus Befehl. Wenn Du mehrere Modbus Aktoren einrichtest, dann hast Du immer mehrere Befehle.

    Wenn Dein Modbus Gerät zwingend EINE Schreiboperation erfordert, dann kannst Du das mit Loxone nach meiner Ansicht nur über Pico-C realisieren.
    Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
    Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
    Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
    Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
    Node-RED: IKEA Tradfri

    Kommentar

    Lädt...