HART-IP (4-20mA + Digital)
HART (Highway Addressable Remote Transducer) is an industrial instrumentation standard that superimposes digital information on a 4-20mA analog signal. This gateway communicates over HART-IP (TCP/UDP), which wraps HART in Ethernet.
It is most widely used with pressure, flow, temperature, and level transmitters in process industries such as chemical, refining, power generation, and water/wastewater.
Registration Form Fields
| Field | What to Enter | Example |
|---|---|---|
| IP Address | HART-IP gateway / multiplexer IP | 192.168.0.110 |
| Port | HART-IP port | 5094 (standard) |
| Response Timeout (request-timeout) | Time to wait for response (ms) | 5000 |
| Polling Address (polling-address) | HART device address (0~63) | 0 (point-to-point) / 1~15 (multidrop) |
If multiple transmitters are connected in multidrop behind a single HART-IP gateway, the cleanest approach is to assign a unique polling address for each device and register each as a separate connection.
Tag PLC Address Notation
HART retrieves values using Commands. Frequently used commands:
| HART Command | Meaning |
|---|---|
| Cmd 0 | Device identification (manufacturer/model/tag — for metadata) |
| Cmd 1 | Primary Variable (PV) — most commonly used |
| Cmd 2 | mA value of the PV |
| Cmd 3 | Four dynamic variables (PV, SV, TV, QV) in one shot |
| Cmd 13 | Device tag / units / upper & lower limits |
On the gateway, enter addresses in the format cmd:<number>:<field>.
| Notation | Meaning |
|---|---|
cmd:1:PV | Primary variable (pressure, flow, etc.) |
cmd:3:PV | PV only, from Cmd 3 response |
cmd:3:SV | Secondary Variable |
cmd:3:TV | Tertiary Variable |
cmd:3:QV | Quaternary Variable |
cmd:2:CURRENT | Actual mA of the 4-20mA signal |
cmd:13:TAG | Device tag (string) |
cmd:13:UNIT | Unit code |
HART determines what the variable itself (what the 4-20mA represents) is based on device configuration. The gateway merely retrieves the "PV," so you specify the physical quantity that the PV represents either through the transmitter's format assistance (Cmd 13 unit) or by naming the tag accordingly.
Data Type Matching
| HART Value | Data Type | Format Assistance |
|---|---|---|
| PV / SV / TV / QV (Float) | Float | REAL |
| mA (Cmd 2) | Float | REAL |
| Device tag / unit name | String | STR[8], etc. |
| Status code / Field Device Status | Integer | (leave blank) |
HART transmits floating-point numbers as IEEE 754 32-bit big-endian. The gateway decodes these automatically, so you only need to specify REAL.
Write Support
HART write commands are risky (they change the transmitter's range / units / damping / zero), so use them with caution.
| Command | Meaning |
|---|---|
| Cmd 6 | Change polling address |
| Cmd 17 | Device message (32 characters) |
| Cmd 18 | Device tag / descriptor / date |
| Cmd 35 | Change upper/lower limits of PV (range) |
Write notation example: cmd:18:TAG, values are sent as strings.
Common Problems and Solutions
| Symptom | Possible Cause | Resolution |
|---|---|---|
| "No response from device" | HART gateway responds but the device does not | Check multidrop polling address (0 vs 1~15) |
| Cmd 1 value stuck at 0 | Transmitter in fail-safe mode | Inspect 4-20mA line for open/short |
| "Cmd 3 not supported" | Older HART device (below rev 5) | Use Cmd 1 only. SV/TV/QV unavailable |
| Unit code appears as a number | HART units are enum (1=°C, 32=Pa, …) | Convert to human-friendly units with a formula / mapping table |
Real Mapping Examples for Common Devices
Rosemount 3051 (Pressure Transmitter)
The most widely used differential/gauge pressure transmitter. Maps the 4-20mA PV to pressure (kPa, bar, psi, etc.).
| Tag Name | Address | Type | Notes |
|---|---|---|---|
| Pressure (PV) | cmd:1:PV | Float | REAL |
| mA | cmd:2:CURRENT | Float | REAL — for line inspection |
| Device Tag | cmd:13:TAG | String | e.g., TT-201 |
| Unit Code | cmd:13:UNIT | Integer | 1=in H2O, 7=kPa, 13=bar |
| Device Status | cmd:48:STATUS | Integer | self-test result |
Endress+Hauser Promass 80 (Coriolis Flow Meter)
| Tag Name | Address | Type | Notes |
|---|---|---|---|
| Flow (PV) | cmd:3:PV | Float | kg/h |
| Density (SV) | cmd:3:SV | Float | kg/m³ |
| Temperature (TV) | cmd:3:TV | Float | °C |
| Totalized Flow (QV) | cmd:3:QV | Float | kg |
Yokogawa EJX910A (Multivariable Transmitter)
| Tag Name | Address | Type | Notes |
|---|---|---|---|
| Differential Pressure | cmd:3:PV | Float | kPa |
| Static Pressure | cmd:3:SV | Float | kPa abs |
| Process Temperature | cmd:3:TV | Float | °C |
| Compensated Flow | cmd:3:QV | Float | (calculated internally by the device) |
Common Operational Patterns
Pattern 1. Multiple Multidrop (8 Transmitters on One Gateway)
| Tag Name | Address | Notes |
|---|---|---|
| TT-101 PV | cmd:1:PV | (register as separate connection with polling address 1) |
| TT-102 PV | cmd:1:PV | (register as separate connection with polling address 2) |
For each polling address 1~15, register a separate OPC connection on the PlantPulse side (same host:port, but different polling-address).
Pattern 2. Automatic Unit Display
Receive cmd:13:UNIT (unit enum) together and convert it at the display layer with mapTable(unit) = "kPa" / "bar" / .... If the transmitter's units change, the display units track automatically without modifying the PlantPulse registration.
Pattern 3. Line Break Detection
If cmd:2:CURRENT (mA) is below 4 or above 20, suspect fail-safe or a broken line. Add this to your alarm rules.
Next Steps
- Tag registration — [Data Type] / [Format Assistance] matching table
- Advanced — REST API — HART-IP automation examples