Skip to main content

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)

Base communication block used in all commands:

-m rtu -b 9600 -P none -s 2


🧠 Critical Flags (Important)

FlagMeaningRequired?
-t 3Input Registers (Function 04)✅ Yes
:float32‑bit floating point✅ Yes
-BBig‑endian word order✅ Yes
-0Zero‑based addressing✅ Yes
-a <id>Slave address✅ Yes
-1Poll onceOptional
-l 5000Poll every 5 secondsOptional


🔹 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


🔎

🔹 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 \
-r 0x200C0x2000 -c 3 \
/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 \
-r 0x20120x200C -c 13 \
/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 \
-r 0x20440x2012 -c 1 \
/dev/ttyUSB0 -a 1 -1


🔹 Frequency (Hz)

YouRegister: are0x2044

now
properly
talking
to
mbpoll -m rtu -b 9600 -P none -s 2 \
-t 3:float -B -0 \
-r 0x2044 -c 1 \
/dev/ttyUSB0 -a DTSU6661 3‑phase-1
meter
👌


🔹 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


🔁 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


🔢 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

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

If you wantsee next:~230V → communication confirmed.


  • 🚨

    ITroubleshooting canQuick giveGuide

    you
    a
    cleancommissioningcheatsheet

    Or

    aready-to-useOpenEMS mapping

  • adeploymentworkflowforunits

    You’re

    officiallyofnow😄

    Symptom Likely
  • Cause
  • TimeoutWrong address or wiring
    4200+ voltsReading wrong register
    -8192

    Orvalues

    Wrong bulkdata metertype
    Nonsense 400numbers Missing -B
    No out/dev/ttyUSB0 USB‑RS485 troubleshootingnot modedetected