DTSU666 3‑Phase + mbpoll Command Reference
🔒🔌 FinalStandard ConfirmedCommunication Working CommandSettings (DTSU666 3‑Phase)DTSU666)
VoltageMost DTSU666 meters use:
Protocol : Modbus RTU
Baud Rate : 9600
Data Bits : 8
Parity : None
Stop Bits : 2
Mode : Big‑endian
Table : Input Registers (FC04)
Baud Rate : 9600
Data Bits : 8
Parity : None
Stop Bits : 2
Mode : Big‑endian
Table : Input Registers (FC04)
Base communication block used in all commands:
-m rtu -b 9600 -P none -s 2
🧠 Critical Flags (Important)
| Flag | Meaning | Required? |
|---|---|---|
-t 3 |
Input Registers (Function 04) | ✅ Yes |
:float |
32‑bit floating point | ✅ Yes |
-B |
Big‑endian word order | ✅ Yes |
-0 |
Zero‑based addressing | ✅ Yes |
-a <id> |
Slave address | ✅ Yes |
-1 |
Poll once | Optional |
-l 5000 |
Poll every 5 seconds | Optional |
🔹 Phase‑to‑Neutral Voltages (L1‑N, L2‑N, L3‑N:N)
Register: 0x2006
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x2006 -c 3 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r 0x2006 -c 3 \
/dev/ttyUSB0 -a 1 -1
🔎🔹 What We Just Confirmed About Your Firmware
Your DTSU666 uses:
✅ Function Code 04 (Input Registers)✅ 32‑bit float✅ Big‑endian word order✅ Some values scaled ×10
That earlier confusion was just wrong table + wrong data type.
🔥 Now You’re Fully Operational
You can now safely read:
Phase Voltages (L‑N)
0x2006
Line‑to‑Line Voltages (L‑L)
L1‑L2, L2‑L3, L3‑L1)
Register: 0x2000
Currents
Try:
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r0x200C0x2000 -c 3 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r
/dev/ttyUSB0 -a 1 -1
Total
Active🔹 Power
Phase Currents (L1, L2, L3)
Register: 0x200C
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r0x20120x200C -c 13 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r
/dev/ttyUSB0 -a 1 -1
Frequency
🔹 Total Active Power (kW)
Register: 0x2012
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r0x20440x2012 -c 1 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r
/dev/ttyUSB0 -a 1 -1
🔹 Frequency (Hz)
YouRegister: are0x2044
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x2044 -c 1 \
/dev/ttyUSB0 -aDTSU6661 3‑phase-1
-t 3:float -B -0 \
-r 0x2044 -c 1 \
/dev/ttyUSB0 -a
🔹 Total Active Energy (kWh)
Register: 0x4000
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x4000 -c 1 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r 0x4000 -c 1 \
/dev/ttyUSB0 -a 1 -1
🔁 Continuous Polling Example (Every 5 Seconds)
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x2006 -c 1 \
-l 5000 \
/dev/ttyUSB0 -a 1
-t 3:float -B -0 \
-r 0x2006 -c 1 \
-l 5000 \
/dev/ttyUSB0 -a 1
🔢 Change Slave Address (Only One Meter Connected)
⚠ Use Holding Registers (Function 03) for configuration.
Register: 0x0006
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 4:int16 -0 \
-r 0x0006 \
/dev/ttyUSB0 -a 1 -W -- 5
-t 4:int16 -0 \
-r 0x0006 \
/dev/ttyUSB0 -a 1 -W -- 5
Changes slave ID from 1 → 5.
🧪 Quick Communication Test
Fastest health check:
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x2006 -c 1 \
/dev/ttyUSB0 -a 1 -1
-t 3:float -B -0 \
-r 0x2006 -c 1 \
/dev/ttyUSB0 -a 1 -1
If you wantsee next:~230V → communication confirmed.
🚨
ITroubleshootingcanQuickgiveGuideyouacleancommissioningcheatsheetSymptom Likely - Cause
Oraready-to-useOpenEMSTimeout Wrong address or wiring 4200+ volts Reading wrong register mapping-8192 OrvaluesaWrong bulkdatametertypedeploymentworkflowforNonsense 400numbersunitsMissing -BYou’reofficiallyNo out/dev/ttyUSB0ofUSB‑RS485 troubleshootingnotmodedetectednow😄