MODBUS RTU Integration: DGA-500 to a PLC or SCADA
The DGA-500 hydrogen sensor communicates natively over MODBUS RTU on RS-485 — the protocol most traditional substations and industrial control rooms already speak. This application note maps the DGA-500 serial parameters and register map, then shows a minimal Siemens S7-1200 integration pattern for continuously polling dissolved hydrogen, oil temperature, and rate-of-change values. For a protocol-selection overview (MODBUS vs IEC 61850 vs IEC 104 vs DNP3), see DGA Monitor Communication Protocols.
Physical Layer and Serial Parameters
The DGA-500 is a MODBUS RTU slave on an RS-485 half-duplex bus. Connect A/B to the M12 pins in the electrical table below, apply 24 VDC, and let the host (master) poll the sensor — the sensor only answers when addressed.
| Parameter | DGA-500 value |
|---|---|
| Default baud rate | 19200 bps |
| Frame format | 8 data bits, no parity, 1 stop bit (8N1) |
| Slave address | Default 1 (range 1–247; set via MI command or register 150) |
| Function codes | 0x03 read holding registers · 0x06 write single register |
| Maximum response time | 10 s — master timeout must be ≥ 10 s |
| Data storage | 74,604 records at default 30 s interval (FIFO) |
| M12 pin | Signal | Core color |
|---|---|---|
| 1 | +24 VDC | Yellow/white |
| 6 | RS-485 A | Blue/white |
| 7 | RS-485 B | Blue |
| 8 | GND | Yellow |
Register Map (Holding Registers)
The most useful registers for a PLC or SCADA integration are listed below. 32-bit values span two consecutive registers; read them in a single 0x03 request. The temperature encoding is T(°C) = raw ÷ 100 − 100.
| Address (hex) | Decimal | Content | Type | Unit |
|---|---|---|---|---|
| 0x00–0x01 | 0–1 | Instantaneous dissolved H₂ | 32-bit int | ppm |
| 0x02–0x03 | 2–3 | Average dissolved H₂ (10-min) | 32-bit int | ppm |
| 0x06 | 6 | Sensor temperature | 16-bit int | °C |
| 0x08 | 8 | Oil temperature | 16-bit int | °C |
| 0x0B–0x0C | 11–12 | 1-hour average H₂ | 32-bit int | ppm |
| 0x0D–0x0E | 13–14 | Daily change (rate of rise) | 32-bit signed int | ppm |
| 0x0F–0x10 | 15–16 | Weekly change | 32-bit signed int | ppm |
| 0x11–0x12 | 17–18 | Monthly change | 32-bit signed int | ppm |
| 0x6F | 111 | Device status word (bit field) | 16-bit | — |
| 0x98–0x99 | 152–153 | H₂ concentration alarm setpoint | R/W | ppm |
| 0x9A–0x9B | 154–155 | Daily rate-of-rise alarm setpoint | R/W | ppm |
| 0x9C | 156 | Oil-temperature high alarm setpoint | R/W | °C |
| 0x96 | 150 | MODBUS slave address | R/W | 1–247 |
| 0x63–0x64 / 0x65 | 99–100 / 101 | Historical read: record count / start flag (write 1001) | R/W | records |
Example temperature scaling: if register 8 returns raw 13967, oil temperature = 139.67 − 100 = 39.67 °C.
Reading 32-Bit Values
A 32-bit value is stored high word first across the two registers shown. Issue one 0x03 request starting at the first register with a length of 2, then combine the two 16-bit words (high word << 16 | low word). Confirm the word order once against the monitor’s own command-line value (H2DG.ppm) during commissioning — if the combined value is implausibly large or small, swap the two words.
Siemens S7-1200 Worked Pattern
On an S7-1200 with a CM 1241 RS-422/485 communications module (or a CB 1241 board), the standard TIA Portal library blocks are MB_COMM_LOAD to configure the port and MB_MASTER to run each request. A minimal cyclic pattern:
- MB_COMM_LOAD once at startup (or on first scan): assign the module hardware ID, set baud
19200, parityNone, and the port as RS-485 half-duplex. - MB_MASTER with
MODE = 0(read holding registers): setDATA_ADDR = 40001to read from DGA-500 register 0x00, andDATA_LEN = 2for the 32-bit instantaneous H₂. For the oil temperature at register 0x08, useDATA_ADDR = 40009withDATA_LEN = 1. - Copy the received data words into a data block, then apply the temperature scaling and (for H₂) combine the two words as described above.
The same pattern works for any MODBUS master: the DGA-500 is a standard slave, so the only device-specific work is the register map above and the ≥ 10 s timeout.
Advanced: Alarms, Status, and Calibration over MODBUS
- Alarm setpoints (registers 152–156) can be read and written remotely — the same thresholds the internal relays use. Treat writes as safety-relevant and restrict them to authorized maintenance windows.
- Status word (register 111) reports device readiness (bit 15) and the measurement state in bits 1–0 (0 unavailable, 1 normal measuring, 2 measuring ambient temperature, 3 calibration mode), plus fault flags. The full bit map is in the product manual.
- Field calibration is possible over MODBUS using the calibration register block (record current value → write reference → execute), mirroring the
DA/DBRS-232 commands. The complete sequence and the guard value that indicates a failed calibration are documented in the manual §12.5 — confirm against the manual before automating calibration.