DDS6619 adres wijzigen naar ID 010?Het Modbus-adres wordt opgeslagen als een 4-byte float en niet als een gewone integer. Schrijven van slechts één register resulteerde in ID 000. Door twee registers te schrijven met de IEEE754-floatwaarde 10.0 (0x41200000) werd het adres correct gewijzigd naar ID 010. Daarna werkte de meter normaal via Modbus RTU op slave-adres 10.
DDS6619 Modbus-adres wijzigen via QModMaster: waarom ID 010 eerst niet lukte
class="wp-block-heading">Situatie
Tijdens de configuratie van een Sinotimer DDS6619 energiemeter moest het Modbus-adres gewijzigd worden van ID 001 naar ID 010 voor opname in een bestaande RS485-bus.
De communicatie werkte uiteindelijk correct met:
Plain Text
1
9600 baud
2
8 databits
3
Even parity
4
1 stopbit
5
Function Code 04
6
“Show more lines
De meter reageerde op Modbus en gaf correcte spanningsmetingen terug. De uitdaging bleek uiteindelijk het wijzigen van het slave-adres te zijn. [Modbus_RS4…cident (1) | PDF]
Oorzaak
De handleiding vermeldt dat het adresregister zich bevindt op:
Plain Text
1
Adres 0x0008
2
Mail address (ID 1-247)
3
Lengte = 4 bytes
4
Format = float
5
“Show more lines
Veel gebruikers gaan ervan uit dat een Modbus-adres als een integer in één register wordt opgeslagen.
Bij de DDS6619 is dat niet zo.
Het adres wordt opgeslagen als een 32-bit IEEE754 float over twee Modbus-registers. [Modbus_RS4…cident (1) | PDF]
class="wp-block-heading">Wat ging fout?
Eerste poging:
Plain Text
1
Start Address = 8
2
Registers = 1
3
Waarde = 10Show more lines
Resultaat:
Plain Text
1
Display = ID 000
2
“Show more lines
De meter accepteerde de schrijfactie, maar omdat slechts één register werd geschreven ontstond geen geldige floatwaarde. Het toestel kwam daardoor op ID 000 terecht.
Correcte oplossing
De waarde moet als float worden geschreven.
Voor:
Plain Text
1
ID 10Show more lines
moet de IEEE754-floatwaarde:
Plain Text
1
10.0Show more lines
worden opgeslagen.
Dat komt overeen met:
Plain Text
1
0x41200000Show more lines
of binair:
Plain Text
1
0100000100100000
2
0000000000000000Show more lines
Werkende configuratie in QModMaster
Plain Text
1
Slave Address = 0
2
Function Code = Write Multiple Registers (0x10)
3
Start Address = 8
4
Number of Registers = 2
5
Data Format = BinShow more lines
Registerwaarden:
Plain Text
1
Register 1:
2
0100000100100000
3
4
Register 2:
5
0000000000000000Show more lines
Na verzenden:
Plain Text
1
Packets > 0
2
Errors = 0Show more lines
en het display van de DDS6619 toonde:
Plain Text
1
ID 010Show more lines
Succesvol gewijzigd. [Modbus_RS4…cident (1) | PDF]
Controle
Na wijzigen van het adres:
Plain Text
1
Slave Address = 10
2
Function Code = 04
3
Start Address = 0
4
Registers = 2
5Show more lines
moet de meter opnieuw antwoord geven met geldige meetwaarden.
Conclusie
De DDS6619 bewaart het Modbus-adres niet als een integer maar als een 4-byte float.
Om het adres correct te wijzigen:
- gebruik Function Code 10;
- schrijf 2 registers;
- gebruik de IEEE754-floatwaarde van het gewenste adres.
Voor ID 010 betekent dit:
Plain Text
1
41 20 00 00Show more lines
of:
Plain Text
1
0100000100100000
2
0000000000000000Show more lines
Na toepassing hiervan werd het adres succesvol gewijzigd van ID 000 naar ID 010.



