Ich habe einige DDM18SD und würde gerne die Adresse ändern.
Das ändern der Adresse klappt auch aber ich verstehe die Bytes nicht.
[2,16,0,8,0,2,4,67,0,0,0]; // ist adr 128
[2,16,0,8,0,2,4,66,0,0,0]; // ist adr 32
[2,16,0,8,0,2,4,65,0,0,0]; // ist adr 8
[8,16,0,8,0,2,4,64,0,0,0]; // ist adr 2
[8,16,0,8,0,2,4,64,64,0,0]; // ist adr 3
[8,16,0,8,0,2,4,64,128,0,0]; // ist adr 4
Laut Beschreibung
You can set the meter address to any value from 1 – 247. Remember value written to unit is in HEX, so its 01 to F7 in HEX.
Check out this example to change the parameter:
DDM18SD change address
Ich könnte das jetzt sicher durchprobieren aber hat jemand eine Erklärung warum das so ist?
Nach der Anleitung ist das Holding Register 8 ein Floating-Point-Register (warum auch immer), d.h. an den Registeradressen 8 und 9 befindet sich eine 4-Byte Gleitkommazahl, üblicherweise im IEE754 singe/binary32 Format. Die byte-order bei der Übertragung ist meist mit dem most significant byte als erstes in den übertragenen Daten (d.h. Modbus-Register 8 enthält die oberen 16 bit und Register 9 die unteren 16 bit der Gleitkommazahl).
Das Format hat ein Vorzeichenbit, 7 Bits für den Exponenten, und 23 Bits für die Mantisse, also z.B. für den Wert 3 aus deinen obigen Beispielen:
8: Adresse des Modbus-Gerätes
16: Write multiple holding registers
0,8: ab Registeradresse 8
0,2: zwei Register
4: 4 Daten-Bytes folgen
64,64: Wert für Register 8
0,0: Wert für Register 9
https://www.h-schmidt.net/FloatConverter/IEEE754.html
Dankeschön. Wie man das selber berechnet versteh ich zwar noch nicht aber egal. Meine paar Geräte haben jetzt ihre Adresse und wenn ich die in ein paar Jahren mal ändern will werde ich diese Seite finden :)
Das warum das so kompliziert sein muss hinterfrage ich besser nicht.