Document included in the project https://github.com/fawno/Modbus
https://github.com/fawno/Modbus/blob/master/DDS238-2%20ZN-S%20Modbus.md
Register(s) | Meaning | Scale Unit | Data format | R/W |
---|---|---|---|---|
0000h-0001h | total energy | 1/100 kWh | unsigned dword | R¹ |
0002h-0003h | reserved | unsigned dword | ||
0004h-0005h | reserved | unsigned dword | ||
0006h-0007h | reserved | unsigned dword | ||
0008h-0009h | export energy | 1/100 kWh | unsigned dword | R¹ |
000Ah-000Bh | import energy | 1/100 kWh | unsigned dword | R¹ |
000Ch | voltage | 1/10 V | unsigned word | R |
000Dh | current | 1/100 A | unsigned word | R |
000Eh | active power | 1 W | signed word | R |
000Fh | reactive power | 1 VAr | unsigned word | R |
0010h | power factor | 1/1000 | unsigned word | R |
0011h | frequency | 1/100 Hz | unsigned word | R |
0012h | reserved | unsigned word | ||
0013h | reserved | unsigned word | ||
0014h | reserved | unsigned word | ||
0015h:high | station address | 1-247 | unsigned char | R/W |
0015h:low | baud rate | 1-4² | unsigned char | R/W |
001Ah | relay³ | unsigned word | R/W |
Total, export and import energy counters can erased writing 0 in total energy registers.
Value mapping, default 1.
Value | Baud rate |
---|---|
1 | 9600 Bd |
2 | 4800 Bd |
3 | 2400 Bd |
4 | 1200 Bd |
In DDS238-2 ZN/SR model the relay can be switched by 0x001A register.
Value | Relay |
---|---|
0 | Off |
1 | On |
Data format | Lenght | Byte order |
---|---|---|
char | 8 bits | |
word | 16 bits | Big endian |
dword | 32 bits | Big endian |
The meter does not understand the 'write sigle register' function code (06h), only the 'write multiple registers' function code (10h).
Hello, I am also using the DDS238 ZN/SR. I am using QModMaster to communicate with the meter and a ethernet/modbus convertor DR302.
When I got the meter, ID=1. By using the read holding registers 0x03, I could read all the registers. And writing 0 or 1 to register 0x001A, I could switch the relay.
Then I wrote 0x2001 to register 0x0015, I lost all of the modbus communication. On the display is ID=000. The meter still works, it measures how it should do, but no communication. I have ofcourse also used the ID=0, the broadcast, but still no reply of the meter.
In QModMaster I have to increase the address with 1, so If I want to write to register 0x0015 I have to enter 0x0016. I check in the program the output and then it is correct.
Does anyone has seen this before? Can it be a problem with the QModMaster or does anyone how to set the address back to 1?
At the moment I don't have a RS232/RS485 convertor, it is ordered. Then I can use an Arduino to sent the strings and have every bit under control.
Greetings, Frans