Ich beschäftige mich aktuell mit Modbus und habe eine Frage zu den IP-Symcon Modbus Instanzen.
Meine Frage:
Warum ist es nicht möglich für die Einheit „UINT16“ die Lesen-Funktion „Read Coils 01“ auszuwählen?
Das geht nur bei der Einheit „BOOL“.
Ich weiß, UINT hat einen großen Zahlenbereich, deckt aber Ebenso 0 und 1 ab, was bei einem digitalen Ausgang / digitalen Eingang der Fall wäre, mit Ein oder Aus bzw. 0 und 1 für den Zustand.
Auf die Frage komme ich, da ich aktuell mit dem Support eines Heizungsreglers schreibe, der mir folgendes geschrieben hat:
„Für einen Coil sollte UNIT16 korrekt sein, allerdings denke ich, Sie sollten als Funktion auch „Coil“ wählen und nicht Holding Register.“
Wenn du nur einen Wert willst, dann wähle doch einfach Coil aus. Wenn du mehrere Coils hintereinander hast und im Modbus-Gateway den korrenten Block einstellst, wird es trotzdem am Stück abgefragt.
Hi tobiasr,
Coil kann aber nur Auswählen wenn ich als Einheit „Bool“ eingestellt habe.
(Unabhängig davon ob ich eine Instanz von ModBus Coil oder Modbus Gerät erstelle.)
Ich möchte aber Coil auswählen mit dem Datentyp „UNIT16“, in Bezug auf mein bisheriges Verständnis sollte das auch möglich sein, da diese Option ist nicht auswählbar.
Coils sind eigentlich immer einzelne Bits. Klar kann man mehrere im Block abfragen - aber wir erlauben es nicht diese als Bitmaste in einen Integer zu legen. Was ist hier der explizite Anwendungsfall? Denn das klingt eher ungewöhnlich.
Willst du evtl. einzelne Bits zusammenfassen und dann als Register zu IPS übertragen?
Wenn ja dann musst du dir die Bits dann in IPS wieder rauspflücken,via Skript.
Ich hatte das früher, wo es in IPS das Blockweise abfragen noch nicht gab.
Jetzt stelle ich bei einzelnen Bits auf Coil.
@paresy
Ich komme eigentlich auf die Frage durch die Aussage des Programmierers der den Heizungscontroller bei einem Kunden programmiert hat, den ich per Modbus auslesen möchte.
Folgende Aussage von seiner Seite:
„Für einen Coil sollte UNIT16 korrekt sein, allerdings denke ich, Sie sollten als Funktion auch „Coil“ wählen und nicht Holding Register.“
Grundsätzlich würde ich ihm recht geben, wenn ich einen 1-Bit Wert auslese, das hier dann „Coil“ zur auswahl stehen sollte, da das für Modbus so beschrieben ist. (Korrigiere mich gerne)
(Zahlenbereich auf dem Screenshot ist allerdings falsch für 1 bit)
Ich verstehe dich auch in Bezug auf die Integewerte, da Integer einen viel größeren Zahlenbereich abdecken kann, der mit 1-Bit nicht dargestellt werden könnte.