Southbound Drivers
Device Drivers
Design docs, test reports, and optimization notes for EdgeX southbound drivers — Modbus, BACnet, OPC UA, S7, EtherNet/IP, Omron FINS, SNMP, IEC 104, and more.
Driver Support Matrix
| Protocol | Registry Key | Status | Read | Write | Scan / Discover | ConnectionManager | Unit Tests |
|---|---|---|---|---|---|---|---|
| Modbus TCP/RTU | modbus-tcp, modbus-rtu, modbus-rtu-over-tcp |
Production | Yes | Yes | — | Yes | 33 tests, 27% cov |
| Modbus Simple | modbus-*-simple |
Production | Yes | Yes | — | Yes | (shared) |
| BACnet IP | bacnet-ip |
Production | Yes | Yes | Scan + ScanObjects | Partial | 80+ tests, 59% cov |
| OPC UA Client | opc-ua |
Production | Yes | Yes | Scan + ScanObjects | Yes | 25 tests, 40% cov |
| Siemens S7 | s7 |
Production | Yes | Yes | — | Yes | 52 tests, 42% cov |
| EtherNet/IP | ethernet-ip |
Production | Yes | Yes | — | Yes | 57 tests, 30% cov |
| Omron FINS | omron-fins |
Production | Yes | Yes | — | Yes | 6 tests, 25% cov |
| SNMP v2c/v3 | snmp |
Production | Yes | Yes | ScanObjects | Yes | 15 tests, 34% cov |
| IEC 60870-5-104 | iec60870-5-104 |
M1 delivered | Yes | Yes (single command) | — | In progress | 8 tests, 23% cov |
| DL/T645-2007 | dlt645 |
Implemented | Yes | Yes | — | Yes | 17 tests |
| Mitsubishi SLMP | mitsubishi-slmp |
Production | Yes | Yes | — | Yes | 7 tests |
All drivers above are registered via blank imports in
cmd/main.go. Only document drivers that exist in code.
Key Configuration Parameters
| Driver | Main Config Keys |
|---|---|
| Modbus | ip, port, slaveId, timeout, connection type (TCP/RTU/RTU-over-TCP) |
| BACnet | ip, port, deviceId, broadcast interface, object instance |
| OPC UA | endpoint, security policy/mode, credentials, subscription interval |
| S7 | ip, port, rack, slot, PLC model (200Smart/1200/1500/300/400) |
| EtherNet/IP | ip, port, slot, tag path, connection type |
| Omron FINS | plcIP/ip, plcPort/port, timeout, src/dst node addresses, TCP/UDP mode |
| Mitsubishi MC | ip, port, frame_type, network_no, station_no, timeout |
| SNMP | snmpVersion, targetIP, community (v2c), USM auth/priv (v3), maxBulkSize |
| IEC 104 | ip, port, commonAddress, T0–T3 timers, general call interval |
Connection Management (2026-06)
Shared ConnectionManager (internal/driver/connection_manager.go):
- State machine:
Disconnected → Connecting → Connected → Retrying → Dead - Exponential backoff with jitter and cooldown (max 1 hour)
- Collection health: successful read = healthy; no separate heartbeat
- Low-frequency probe when scan interval exceeds 3× threshold
Supported: S7, Modbus, EtherNet/IP, OPC UA, FINS, SNMP, Mitsubishi MC
Test Coverage
Full report: Southbound Driver Test Report
CGO_ENABLED=0 go test ./internal/driver/modbus ./internal/driver/bacnet ... -count=1 -cover
Last run (2026-06-27): all main driver packages PASS; bacnet/utsm sub-package FAIL (known issue).