Complete Guide to Delta DVP PLC Modbus RTU Register Address Mapping

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

1. Overview

Delta DVP-series PLCs (DVP-ES2/EX2/SS2/SA2/SX2/SE, EH3, etc.) have a built-in COM2 RS-485 port that natively supports standard Modbus ASCII/RTU. They can act either as a Master, actively reading and writing slaves such as VFDs, temperature controllers and meters, or as a Slave, passively responding to read/write requests from an HMI, SCADA or another PLC. This guide is written strictly from Delta's official DVP-PLC Application Manual (Programming/Communication), the DVP Series PLC Communication Protocol and the DVP-ES2 Operation Manual; every device address, instruction operand and special relay/register follows the official manuals.

The two Modbus operating modes of a DVP PLC:

  • Modbus Master: actively initiate communication with the three dedicated instructions MODRD (API 100, read), MODWR (API 101, write) and MODRW (API 150, universal read/write).
  • Modbus Slave: only the communication format and station number need to be configured; the PLC answers automatically according to the built-in protocol and no communication program is required.

A key point that must be clarified first: on the Modbus wire, the internal DVP devices (X/Y/M/S/T/C/D) use fixed hexadecimal communication addresses (for example X0=0400H, Y0=0500H, M0=0800H, D0=1000H). The scheme circulated in some online tutorials—putting a "device-type code in the high byte (H1/H3/H4/H10) and the number in the low word" to build 24-bit addresses such as H100064 or H100100—does not exist in Delta's official manuals. The address operand of MODRW/MODRD is 16-bit, so H100064 is itself an illegal value. Sections 3 and 4 explain the official addressing scheme thoroughly.

2. Modbus Function Codes and Accessible Devices

The function codes supported by a DVP slave and the internal devices they access are listed below (source: Delta DVP Series PLC Communication Protocol):

Function code (dec/hex)NameAccessible DVP devicesData typeRead/Write
01 (H01)Read Coil StatusS, Y, M, T (contact), C (contact)bitRead
02 (H02)Read Input Status (discrete inputs)S, X, Y, M, T, CbitRead
03 (H03)Read Holding RegistersT (current value), C (current value), DwordRead
05 (H05)Force Single CoilS, Y, M, T, CbitWrite
06 (H06)Preset Single RegisterT, C, DwordWrite
15 (H0F)Force Multiple CoilsS, Y, M, T, CbitWrite
16 (H10)Preset Multiple RegistersT, C, DwordWrite
17 (H11)Report Slave ID— (returns slave status)—Read

Two important differences from the "standard Modicon address model":

  • The DVP does not use function code 04 (read input registers). The input relays X are read with function code 02 (on Delta, 02 can access all bit devices S/X/Y/M/T/C).
  • Bit devices (S/Y/M/T/C contacts) use function codes 01/02/05/15; word devices (current values of T/C/D) use 03/06/16. Timers T and counters C occupy both a "contact (bit)" address area and a "current value (word)" address area.

3. DVP as Slave: Internal Device Communication Address Map (Core)

When a DVP acts as a Modbus slave, an external master (HMI, SCADA, another PLC, Modbus Poll, etc.) must use the hexadecimal communication addresses (0-based PDU addresses) in the table below to access its internal devices.

3.1 Device communication address overview (official table)

DeviceTypeNumberingCommunication address (hex)Device rangeFunction codes
S (step relays)bitdecimal0000H–03FFHS0–S1023 (one block per 256 points)01/02/05/0F
X (input relays)bitoctal0400H–04FFHX0–X377 (octal, 256 points)02
Y (output relays)bitoctal0500H–05FFHY0–Y377 (octal, 256 points)01/02/05/0F
T (timers)bit/worddecimal0600H–06FFHT0–T255 (contacts 01/02, current values 03)01/02/03/05/06/0F/10
M (auxiliary relays)bitdecimal0800H–0DFFH; B000H–B9FFHM0–M1535; M1536–M409501/02/05/0F
C (counters)bit/worddecimal0E00H–0EFFHC0–C199 (16-bit); C200–C255 (32-bit)01/02/03/05/06/0F/10
D (data registers)worddecimal1000H–1FFFH; 9000H–A70FHD0–D4095; D4096–D999903/06/10

Note: ranges such as 0700H and 0F00H–0FFFH are reserved and cannot be accessed. The actual number of devices differs by model (ES2/SS2/SA2/EH3); refer to the corresponding model manual.

3.2 Bit-device address conversion

  • X (octal numbering): address = 0400H + the decimal ordinal of the octal number. X0=0400H, X7=0407H, X10=0408H (note that X8 and X9 are skipped), X377=04FFH.
  • Y (octal numbering): address = 0500H + ordinal. The official communication example states Y0 = H0500; Y17 (octal, i.e. the 15th point in decimal) = 050FH.
  • M (decimal numbering): for M0–M1535 address = 0800H + n, e.g. M0=0800H, M100=0864H; M1536–M4095 are mapped to B000H–B9FFH.
  • S (decimal numbering): address = 0000H + n, e.g. S0=0000H, S100=0064H.
DeviceNumberCommunication address (hex)Function code
InputX0 / X7 / X100400H / 0407H / 0408H02
OutputY0 / Y17 (octal)0500H / 050FH01/02/05/0F
Auxiliary relayM0 / M100 / M15350800H / 0864H / 0DFFH01/02/05/0F
Step relayS0 / S1000000H / 0064H01/02/05/0F

3.3 Word-device (T/C/D) address conversion

  • Timer current value Tn: 0600H + n, e.g. T0=0600H (the official write-single-register example is exactly 06H 00H).
  • Counter current value Cn: 0E00H + n, e.g. C0=0E00H, C232=0EE8H (official example 0EH E8H). C0–C199 are 16-bit counters; C200–C255 are 32-bit high-speed counters (occupying double-word length).
  • Data register Dn (n=0–4095): 1000H + n, e.g. D0=1000H, D10=100AH, D100=1064H, D1000=13E8H (all are official-manual examples); D4096–D9999 are remapped from 9000H, i.e. address = 9000H + (n − 4096).
DeviceNumberCommunication address (hex)Official frame example (FC06 write single register)
TimerT00600H01 06 06 00 12 34 …
CounterC0 / C2320E00H / 0EE8H01 06 0E 00 … / 01 06 0E E8 …
Data registerD10100AH01 06 10 0A 12 34 …
Data registerD100013E8H01 06 13 E8 12 34 …

3.4 Address correspondence for third-party master software (Modbus Poll / SCADA / HMI)

What is transmitted in the Modbus frame is the 0-based PDU address above (the hex communication address). However, many host software packages and HMIs ask for a 1-based "reference number" (4xxxx / 0xxxx / 1xxxx). The conversion is as follows:

  • Holding-register reference = 40001 + the decimal value of the hex address. For example D0's address 1000H = decimal 4096, so the reference = 40001 + 4096 = 44097; D100's address 1064H = 4196, reference = 44197.
  • Coil reference = 1 + address value; discrete-input reference = 10001 + address value. For example M0 (0800H=2048) coil reference = 2049; X0 (0400H=1024) discrete-input reference = 11025.
  • If the software supports a "0-based / PLC address" mode, entering the decimal value of the hex address directly (e.g. 4096 for D0) is the least error-prone.
DeviceCommunication address (hex)Decimal offset1-based referenceFunction-code area
D01000H409644097Holding registers 4xxxx
D1001064H419644197Holding registers 4xxxx
M00800H204802049Coils 0xxxx
X00400H102411025Discrete inputs 1xxxx
Y00500H128001281Coils 0xxxx

The octal issue again: X and Y device numbers are octal (there is no X8/X9), but the communication addresses are consecutive—X7 (0407H) is immediately followed by X10 (0408H); 0408H does not correspond to an "X8".

4. DVP as Master: MODRD / MODWR / MODRW Instructions

4.1 The three communication instructions at a glance

InstructionAPI no.PurposeSupported function codes
MODRDAPI 100Read data from a slaveH02 (read bits), H03 (read words), etc.
MODWRAPI 101Write data to a slaveH05/H06/H0F/H10
MODRWAPI 150Universal read/write (most complete, recommended)H01–H06, H0F, H10, H17

4.2 MODRW (API 150) operand definition (official)

Instruction format: MODRW S1 S2 S3 S n

OperandMeaningAllowed values / notes
S1Slave communication address (node number)K0–K254; K0 is broadcast (cannot be K0 for the read operations H02/H03/H04/H17)
S2Function codeH01 read multiple bits / H02 read discrete bits / H03 read multiple words / H04 read input words / H05 write single bit / H06 write single word / H0F write multiple bits / H10 write multiple words / H17 read+write multiple words
S3Start device address to read/writeThe remote device's hex communication address, e.g. H0500 (Y0), H1064 (D100), H2100 (VFD status)
SData registerLocal starting D where read-back / to-be-written data is stored (e.g. D0, D50); with H17, S is the read-data start and S+1 the write-data start
nData lengthH01/H02/H0F in bits, H03/H04/H10 in words; with H05, n=0 means ON and n=1 means OFF; with H17, n is the word count read and n+1 the word count written

Pay special attention to operand positions: S2 is always the function code and S3 is the device address. Some online tutorials put the "device-type code" into the second operand (S2) of MODRD, which is wrong.

4.3 Official program examples (ready to use)

Example 1: read Y0–Y17 (16 points, bits) from another DVP (node 1) — source: MODRW Program Example 1 in the Delta DVP-ES2 Operation Manual.

InstructionS1 nodeS2 function codeS3 addressS datan length
MODRWK1K2 (H02 read bits)H0500 (Y0)D0K16 (16 bit)

ASCII request frame: 01 02 0500 0010; RTU request frame: 01 02 05 00 00 10 79 0A. The manual explicitly marks Data address Y0 = H0500.

Example 2: read D100 (1 word) from another DVP (node 1)

InstructionS1 nodeS2 function codeS3 addressS datan length
MODRWK1K3 (H03 read words)H1064 (D100 = 1000H + 100)D0K1 (1 word)

To read M100, change S3 to H0864 (M100 = 0800H + 100) and use function code H01.

Example 3: read six words of status/frequency etc. from a Delta VFD (node 1) — source: the official MODRW example in the Delta DVP-PLC Application Manual.

InstructionS1 nodeS2 function codeS3 addressS datan length
MODRWK1K3 (H03)H2100D0K6 (6 words)

ASCII request frame: 01 03 2100 0006, reading the six registers 2100H–2105H.

Example 4: write one run-command word to 2000H of a Delta VFD (node 1)

InstructionS1 nodeS2 function codeS3 addressS datan length
MODRWK1K6 (H06 write single word)H2000D50 (data to write)K1 (1 word)

ASCII request frame: 01 06 2000 [data] (in the official example, with D50=H1770 the frame is 01 06 0100 1770 for the older VFD-S address definition; the command-word address of newer models is 2000H).

Definitive conclusion on addresses like "H100064": S3 is filled directly with the remote device's consecutive hex communication address (use H1064 for D100, not H100100 or H100064). The MODRW address operand is 16-bit, so values over 16 bits or with self-contradictory encoding such as H100064 and H40100 are illegal in Delta instructions. The "high-byte device-type code table (X=H1, Y=H3, M=H4, D=H10)" given in some online sources is not a Delta official definition and must not be used in projects.

4.4 MODRW usage notes (official cautions)

  • Each MODRW instruction must be immediately followed by its corresponding "send request" flag (SET M1122). Ports are resolved in the order COM1 → COM3 → COM2 to avoid data misplacement.
  • Only one MODRW may execute on the same communication port at a time; wait for the send/receive-complete flag M1127 before issuing the next one (use M1127 as the step condition when polling).
  • The driving contacts for the read function codes H01–H04 and H17 must not use rising/falling-edge contacts such as LDP/ANDP/ORP/LDF/ANDF/ORF, otherwise the received data will be wrong; use ordinary LD contacts.
  • In ASCII mode, after the received data is stored in ASCII from the starting D, the PLC automatically converts it to hex in the special registers D1296–D1311 (M1131 is ON during conversion); data to be sent is placed in D1256–D1295. In RTU mode data is stored directly in hex.

5. Communication Parameters, Special Registers and Flags (COM2 RS-485)

5.1 Hardware wiring

  1. COM2 of the DVP is an RS-485 port marked D+ (SG+) and D- (SG-): connect D+ to the bus A wire and D- to the bus B wire; daisy-chain multiple devices.
  2. Install a 120Ω termination resistor at each of the two bus ends; use shielded twisted-pair cable, ground the shield at one end, and keep it away from power cables.
  3. Baud rate, data bits, parity and stop bits must be identical on every master and slave; station numbers must not be duplicated.

5.2 D1120 communication format (official values)

D1120 valueCommunication formatTypical use
H869600 bps, 7 data bits, even parity, 1 stop bit (9600,7,E,1)Factory default, Modbus ASCII
H879600 bps, 8 data bits, even parity, 1 stop bit (9600,8,E,1)Most common for Modbus RTU

The high nibble of D1120 selects the baud rate (H8=9600, H9=19200, HA=38400, HB=57600, HC=115200) and the low nibble selects data bits/parity/stop bits; after setting it you must SET M1120 to retain the format. Official VFD communication examples uniformly use MOV H87 D1120 + SET M1120.

5.3 D1121 communication station number

  • D1121 sets the local station number (as a slave) or the target number; range 1–254, with 0 being the broadcast address.
  • For example MOV K1 D1121 means station number 1. The factory-default station number is 1.

5.4 RTU/ASCII selection and send/receive flags (key correction)

Special relay / registerCOM2 (RS-485) function
M1143Protocol selection: OFF = ASCII mode, ON = RTU mode (RTU/ASCII is decided by M1143, not D1130)
M1120When ON, retains the communication format set in D1120
M1122Send-request flag; setting it ON triggers one MODRD/MODWR/MODRW transaction
M1127Data send/receive-complete flag (set ON on completion, reset by the program)
M1140Receive-data error flag (ON on checksum/format error)
M1141Illegal communication address / data-return error flag
D1130Communication error-code register: holds the error code when M1141 is ON (e.g. D1130=2 for "illegal data address" from the remote side). It is not the protocol-mode register
D1129Communication timeout setting (official example K100 = 100 ms)

Standard initialization (RTU 9600,8,E,1, station 1): executed while M1002 is ON in the first scan after power-up:

LD   M1002
MOV  H87   D1120   // format 9600,8,E,1
SET  M1120          // retain communication format
MOV  K100  D1129   // communication timeout 100 ms
SET  M1143          // select RTU mode (OFF = ASCII)
MOV  K1    D1121   // local station number 1 (as slave)

When communication is needed, SET M1122 sends the request; wait for M1127 to indicate completion, then process the received data and RST M1127.

6. Reading/Writing Delta VFDs (common addresses for VFD-E / MS300 / C2000, etc.)

Delta VFDs generally use the communication addresses below (the exact units and bit definitions follow that model's Communication Protocol Manual):

Monitoring / control itemCommunication addressFunction codeNotes
Run/stop command2000H06 / 10 (write)Bit-command word: bit0-1 run/stop/e-stop/JOG, bit2-3 forward/reverse; see the VFD manual for bit definitions
Frequency command2001H06 / 10 (write)Set frequency, often in 0.01 Hz units (e.g. write 5000 for 50.00 Hz)
Run status word2100H03 (read)Run/direction/fault status bits
Output frequency2101H03 (read)Actual output frequency, 0.01 Hz
Output current2102H03 (read)Output current, 0.01 A (the Delta VFD-B official example reads 2102H)
Output voltage / DC-bus voltage2103H03 (read)Definition differs slightly between series

Corresponding MODRW instructions:

  • Continuously read six words of status/frequency/current etc.: MODRW K1 K3 H2100 D0 K6
  • Write a run command (forward run; place the data word in D50 beforehand according to the model's bit definition): MODRW K1 K6 H2000 D50 K1
  • Write a 50.00 Hz frequency command (D51=K5000): MODRW K1 K6 H2001 D51 K1

On the VFD side you must also set the communication station number, baud rate and format to match the PLC, and set the run/frequency source to communication. Addresses and units differ between series (VFD-E, MS300, C2000, MH300); always check that VFD's communication protocol manual before implementation.

7. FAQ and Troubleshooting

7.1 No communication at all

  • Wiring: are D+ (SG+)/D- (SG-) reversed, and do A/B match? For multiple stations, are devices daisy-chained without stubs?
  • Format: is D1120 H87 (RTU 8E1) or H86 (ASCII 7E1), and do both sides agree? Was M1120 SET?
  • Protocol mode: RTU requires SET M1143 and ASCII requires RST M1143; both sides must agree (one of the most common causes of "no connection").
  • Station number: does D1121 match the target slave, and are bus node numbers unique?
  • Termination: are 120Ω resistors fitted at both ends? When idle, the differential bus voltage should measure several hundred mV.

7.2 Communication works but data cannot be read / illegal address reported

  • Check the error flags: M1141 ON with a D1130 code (e.g. =2) means the S3 device address is illegal; verify against the hex table in Section 3.
  • Function code vs device type: read X with 02, read D with 03, write Y/M with 05/0F and write D with 06/10—do not mix them.
  • Octal check: X/Y numbers are octal, X10 immediately follows X7; addresses are converted by consecutive ordinal.
  • Do not use H100064-type addresses: for D100 use H1064, for M100 use H0864.
  • Timing: after SET M1122 do you wait for M1127? Are multiple MODRW instructions being issued concurrently on the same port?

7.3 Wrong or garbled data

  • Data width: C200–C255 are 32-bit counters occupying two registers/double words; read them as double words.
  • Byte/word order: for 32-bit data confirm the high/low byte and high/low word order matches the remote device.
  • Scaling: restore engineering units for frequency 0.01 Hz, current 0.01 A etc. according to the manual.
  • RTU/ASCII mix-up: inconsistent modes cause frame corruption or garbled text; confirm the M1143 state.

7.4 Intermittent communication failures

  • Use shielded twisted pair with the shield grounded at one end; keep communication cables away from VFD output cables and other power wiring.
  • Control bus length and node count (reduce baud rate if necessary) and add termination at both ends.
  • Set the D1129 timeout and retries sensibly; use M1127/M1140/M1141 for completion and error handling to avoid piling up instructions.

8. Differences from Other PLC Brands

ItemDelta DVPMitsubishi FX3USiemens S7-200 SMART
X/Y addressingOctalOctalDecimal
Internal device addressFixed hex mapping (X0400/Y0500/M0800/D1000)Fixed FX3U-MB mapping + assignableHolding-register area configured via HoldStart / MaxHold
Master instructionMODRD/MODWR/MODRW (API 100/101/150)ADPRW (FNC276), one instruction reading/writing by function codeMBUS_CTRL / MBUS_MSG library instructions
RTU/ASCII selectionM1143 (OFF=ASCII, ON=RTU)Set in communication parametersMode parameter of the library instruction (RTU only)
Communication portBuilt-in COM2 (RS-485)Requires external FX3U-485ADP-MBOn-board RS-485 port
Main configuration registersD1120 (format) / D1121 (node) / M1143 (mode)Special registers such as D8120/D8121Library-instruction parameters (baud/parity/timeout)

9. Summary

Delta DVP Modbus communication can be summarized as follows:

  • Slave device addresses (hex): S=0000H, X=0400H, Y=0500H, T=0600H, M=0800H, C=0E00H, D=1000H; X/Y use octal numbers but consecutive addresses, and D0–D4095 map to 1000H–1FFFH.
  • Function codes: bit devices use 01/02/05/0F (X uses 02); word devices T/C/D use 03/06/10; Delta does not use function code 04.
  • Master instruction: MODRW S1 (node) S2 (function code) S3 (hex device address) S (data D) n (length); S2 is the function code and S3 the address, filled directly in hex (D100=H1064).
  • Communication configuration: D1120=H87 (RTU 9600,8,E,1) / H86 (ASCII 7E1), SET M1120, M1143 selects RTU/ASCII, D1121 sets the node, SET M1122 sends, M1127 completes, M1140/M1141/D1130 diagnose errors.
  • Be sure to avoid: the circulated 24-bit addresses such as H100064 built from "H1/H4/H10 + number", putting a device code in S2, and mistaking D1130 for the protocol-mode register.

Before implementation, we recommend connecting a master tool such as Modbus Poll to the DVP slave and verifying each area against the hex table in this guide (to read D0 use address 4096 / reference 44097). Once address, function code and data format are all confirmed, write the MODRW master program.

10. Related Links

  • Modbus RTU communication basics tutorial
  • Delta DVP PLC Modbus communication configuration examples
  • Modbus control guide for Delta VFDs (VFD-E/MS300/C2000)
  • Mitsubishi FX3U / Siemens S7-200 SMART Modbus register mapping guides
  • RS-485 bus wiring and termination-resistor specification
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.