Gude,
ich bin dabei ein (Teil-)Gerät zu definieren, in dem nur die beschreibbaren Addressen stehen. Die meisten Addressen sind reine Schreibregister, ein paar wenige stellen auch RW zur Verfügung.
Dabei ist mir aufgefallen, dass wenn zwei reine Schreibregister nacheinander definiert sind, dass:
- beim ersten der Ident anstatt der (Schreib-) Addresse auf _0 endet.
- die zweite (und folgende )Address gar nicht angelegt wird.
- Beim Wechsel des Einheit (erst 2x INT WO, dann 5x UINT32 WO) innerhalb der Liste wird wieder der erste (UINT32) mit Ident _0 angelegt, die folgenden 4 nicht mehr.
Das riecht für mich danach, als ob im Loop nicht geschaut wird ob es anstatt einer Leseaddresse evtl. eine Schreibaddresse gibt um die dann zum generieren des Ident zu verwenden.
Kann das jemand nachstellen?
Vielen Dank und Grüße
Frank
P.S.: Evtl. relevant (aber wahrscheinlich nicht), ich lege die Addressen nicht manuell im Gerät an sondern importiere die über ein selbst erzeugtes .json File.
Und hier noch die Vorlage: modbus.json (40,1 KB)