Skip to main content

DAM-8VO communication protocol

This product is a 8-channel analog voltage output module supporting standard Modbus RTU. For detailed command construction and parsing, use the register tables in this document together with the Modbus specification.

Modbus register reference

Device (slave) address

Default slave address is 0x01; configurable range 0x01–0xF7. Supported ranges:

Address rangeStatusDescription
0x00❌ DisabledNon-response broadcast: master only; slaves must not use this address and do not reply.
0x01~0xF7✅ AvailableStandard slave address; assignable to any device.
0xFE❌ DisabledResponse broadcast: master only; slaves must not use this address.
Note

When using broadcast address 0xFE, connect only one device on the bus; multiple devices responding will collide.

Function codes

This module is holding-register oriented; the following function codes are supported.

FCFunctionNotes
03Read holding registersRead analog setpoints / device parameters
06Write single registerWrite one analog channel or device parameter
10Write multiple registersWrite multiple analog channels or parameters

Register map

Address (HEX)ContentDescriptionTypeModbus FC
4x0000~4x0007VO1–VO8 voltage outputsUnsigned hex, range 0–10000, unit mV; span 0–10 VR/W0x03,0x06,0x10
4xA000~4xA007VO1–VO8 power-on voltagePower-on / watchdog-reset defaults; retained across power cyclesR/W/S0x03,0x06,0x10
4x8000SUKModel numberR/S0x03
4x8001Firmware versionDecimal value with implied decimal → version (e.g. 0x0064 = 100 → V1.00)R/W/S0x03,0x06
4x8002Slave addressStores Modbus address; default 0x0001R/W/S0x03,0x06
4x8003UART parametersUpper byte: stop/parity; lower byte: baud rateR/W/S0x03,0x06
4x8004WatchdogIf no valid Modbus within timeout, reset and restore power-on outputsR/W/S0x03,0x06
4x9000~4x9007User string areaString formatR/W/S0x03,0x06,0x10
Note

Registers marked S retain values across power cycles.

Scaling
  • Voltage VO (4x0000–4x0007): register value = output in mV, range 0–100000–10 V. Example: 5000 = 5.000 V, 10000 = 10.000 V.

Modbus RTU command reference

Write a single analog output

Request: 01 06 00 00 03 E8 89 74

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register
00 00AddressOutput register (e.g. VO1 = 4x0000)
03 E8Value16-bit setpoint, high byte first. Unit mV. 0x03E8 = 1000 → 1 V
89 74CRC16CRC16 over preceding bytes

Response: 01 06 00 00 03 E8 89 74

Examples (slave 0x01)

VO1 = 10 V (10000 mV) : 01 06 00 00 27 10 93 F6
VO1 = 5 V (5000 mV) : 01 06 00 00 13 88 84 9C
VO1 = 1 V (1000 mV) : 01 06 00 00 03 E8 89 74

Write multiple analog outputs

Request: 01 10 00 00 00 08 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 F6 8C

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
10FC 0x10Write multiple holding registers
00 00Start addressFirst output register
00 08QuantityWrite 8 output registers
10Byte countFollowing data bytes (8×2)
ValuesPer-channel 16-bit setpoints
CRC16CRC16CRC16 over preceding bytes

Response: 01 10 00 00 00 08 C1 CF

Examples (slave 0x01)

VO1–VO8 all 10 V : 01 10 00 00 00 08 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 27 10 F6 8C

Read analog outputs

Request: 01 03 00 00 00 08 44 0C

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
03FC 0x03Read holding registers
00 00Start addressFirst output register
00 08QuantityRead 8 channels (VO1–VO8)
44 0CCRC16CRC16 over preceding bytes

Response: 01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
03FC 0x03Read holding registers
10Byte countData bytes returned (8×2)
00 00 …SetpointsVO1–VO8 setpoints in mV, each unsigned 16-bit
E4 59CRC16CRC16 over preceding bytes

Examples (slave 0x01)

Read all 8 (VO1–VO8) : 01 03 00 00 00 08 44 0C
Read VO1–VO4 : 01 03 00 00 00 04 44 09
Read VO5–VO8 : 01 03 00 04 00 04 05 C8

Set power-on output

Request: 01 06 A0 00 27 10 B1 F6

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register
A0 00AddressPower-on register (e.g. VO1 = 4xA000)
ValueSame units as run registers (mV); retained across power cycles
CRC16CRC16CRC16 over preceding bytes

Response: same as request

Note

Changing power-on defaults does not change the current live output.

Examples (slave 0x01)

VO1 power-on 10 V : 01 06 A0 00 27 10 B1 F6
VO1 power-on 5 V : 01 06 A0 00 13 88 A6 9C

Read firmware version

Request: 01 03 80 01 00 01 FC 0A

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
03FC 0x03Read firmware version (FC 03)
80 01Firmware registerFixed 4x8001
00 01Word countFixed 0x0001
FC 0ACRC16CRC16 over preceding bytes

Response: 01 03 02 00 64 B9 AF

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
03FC 0x03Read firmware version (FC 03)
02Byte countReturned byte count
00 64VersionDecimal ÷100 → version string (0x0064 = 100 → V1.00)
B9 AFCRC16CRC16 over preceding bytes

Examples (slave 0x01)

TX:01 03 80 01 00 01 FC 0A
RX:01 03 02 01 2C B8 09 //0x012C = 300 =V3.00

Read slave address

Request: FE 03 80 02 00 01 18 05

FieldMeaningNotes
FESlave address0xFE: responding broadcast; applies to all slaves
03FC 0x03Read holding registers (FC 03)
80 02Address registerFixed 4x8002
00 01Word countFixed 0x0001
18 05CRC16CRC16 over preceding bytes

Response: FE 03 02 00 01 6D 90

FieldMeaningNotes
FESlave address0xFE: responding broadcast; applies to all slaves
03FC 0x03Read holding registers (FC 03)
02Byte countReturned byte count
00 01Slave addrCurrent 0x0001–0x00F7
6D 90CRC16CRC16 over preceding bytes
Note

With 0xFE broadcast read, connect only one device to avoid bus collisions.

Examples (slave 0x01)

TX : FE 03 80 02 00 01 18 05
RX : FE 03 02 00 02 2D 91 //address:0x02

Set slave address

Request: FE 06 80 02 00 01 D4 05

FieldMeaningNotes
FESlave address0xFE: responding broadcast; applies to all slaves
06FC 0x06Write single holding register (FC 06)
80 02Address registerFixed 4x8002
00 01New addressSlave address to set, range 0x0001–0x00F7
D4 05CRC16CRC16 over preceding bytes

Response: FE 06 80 02 00 01 D4 05

FieldMeaningNotes
FESlave address0xFE: responding broadcast; applies to all slaves
06FC 0x06Write single holding register (FC 06)
80 02Address registerFixed 4x8002
00 01New addressSlave address to set, range 0x0001–0x00F7
D4 05CRC16CRC16 over preceding bytes
Note

With 0xFE broadcast write, connect only one device or all devices will receive the same address.

Examples (slave 0x01)

Set address 0x01 :FE 06 80 02 00 01 D4 05
Set address 0x02 :FE 06 80 02 00 02 94 04
Set address 0x03 :FE 06 80 02 00 03 55 C4

Set UART parameters

Request: 01 06 80 03 00 05 90 09

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register (FC 06)
80 03UART registerFixed 4x8003
00 05UARTBits 0–7: baud rate
0 : 4800
1 : 9600
2 : 19200
3 : 38400
4 : 57600
5 : 115200
6 : 128000
7 : 256000
Bits 8–12: parity
0 : None,
1: Even parity,
2: Odd parity
Bits 13–16: stop bits
0 : 1 stop bit,
1: 1.5 stop bits,
2: 2 stop bits
90 09CRC16CRC16 over preceding bytes

Response: 01 06 80 03 00 05 90 09

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register (FC 06)
80 03UART registerFixed 4x8003
00 05UARTUART value
90 09CRC16CRC16 over preceding bytes

Examples (slave 0x01)

9600 baud, none, 1 stop :01 06 80 03 00 01 91 CA
9600 baud, even, 2 stop :01 06 80 03 00 D1 90 56
115200 baud, none, 1 stop :01 06 80 03 00 05 90 09

Set watchdog

Request: 01 06 80 04 00 0A 61 CC

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register (FC 06)
80 04Watchdog registerFixed 4x8004
00 0ATimeout / interval0 disables watchdog. Non-zero enables: each valid Modbus frame feeds the dog; if the interval expires without a valid frame, firmware resets and outputs return to power-on saved values.
Timeout = value × 100 ms (e.g. 0x000A → 1 s).
61 CCCRC16CRC16 over preceding bytes

Response: 01 06 80 04 00 0A 61 CC

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
06FC 0x06Write single holding register (FC 06)
80 04Watchdog registerFixed 4x8004
00 0ATimeout / intervalWatchdog timeout value
61 CCCRC16CRC16 over preceding bytes

Examples (slave 0x01)

Watchdog 10 s :01 06 80 04 00 64 E0 20
Disable watchdog :01 06 80 04 00 00 E1 CB

Exception codes

On protocol or device errors, the slave returns an exception response:

Response: 01 85 03 02 91

FieldMeaningNotes
01Slave address0x00: broadcast; 0x01–0xF7: slave address
85Exception FCException FC = request FC + 0x80
03Ex. codeException code
02 91CRC16CRC16 over preceding bytes

Exception codes (single byte) indicate error type. Common Modbus exceptions:

CodeNameDescription
0x01Illegal functionRequested function not supported.
0x02Illegal data addressRequested data address invalid.
0x03Illegal data valueData value or operation not allowed.
0x04Server device failureServer device failure.
0x05AcknowledgeRequest accepted and being processed.
0x06Device busyDevice busy; cannot execute now.