Skip to main content

Driver Overview

A complete list of the industrial protocols supported by PlantPulse Edge.

Each driver is implemented in the plantpulse.driver.protocol.<proto> package inside plantpulse-edge-driver.jar, and ProtocolDriverFactory.createDriver(opc_type) creates an instance based on the APP_OPC.OPC_TYPE string.

Implementations fall into two broad categories.

  • Native Java implementations (the majority): In addition to LS, EIP, ADS, OP, FINS, MEWTOCOL, FATEK, NMEA, MBUS, HART, DNP3, IEC61850 and SECSGEM, the Modbus family (TCP/UDP/RTU), PROFINET, AB-ETH, BACnet, KNXnet and CANopen were also rewritten natively as of 2026-07 (all legacy Apache PLC4j delegation removed — the PLC4X dependency itself has been deleted). Protocol framing is written directly on plain Java sockets, with no external native/JNI dependencies.
  • HW-master-dependent stubs (guidance only): DALI, IO-Link, DeltaV. Instead of reading inside the gateway, the recommended configuration bridges through a higher-level protocol (OPC UA / Modbus / PROFINET / DeltaV OPC UA), which is documented. (ROS 2 has graduated to a full rosbridge WebSocket implementation — see Connection Types.)

Beyond these, GE/MELSEC/S7 use the iot-communication (xingshuangs) library as-is, OPC UA is based on Eclipse Milo, and a proprietary HTTP client rounds out the secondary track.


Supported Protocol List

General-Purpose PLC / Common Protocols

opc_typeProtocolLibraryStatusPage
LSLS XGI/XBC/XBM (FEnet)Native JavaStableLS
GEGE SRTP / GE Fanuciot-communication (xingshuangs)Stable(planned)
MELSECMitsubishi MELSEC (MC)iot-communication (xingshuangs)StableMELSEC
S7Siemens S7-300/400/1200/1500iot-communication (xingshuangs)StableS7
MODBUSModbus TCPNative JavaStable (read+write)Modbus
MODBUSUDPModbus UDPNative Java (MBAP-over-UDP)Stable (read+write)Modbus
MODBUS_RTUModbus RTUNative Java (RTU-over-TCP)Stable (read+write)Modbus RTU
OPCUAOPC Unified ArchitectureEclipse MiloStableOPC-UA

US PLC Family

opc_typeProtocolLibraryStatusPage
EIPEtherNet/IP CIP (Allen-Bradley Logix)Native Java (based on the etherip design, pure Java)Stable (read+write)EIP
AB-ETHAllen-Bradley PLC-5/SLC-500Native Java (CSP/PCCC)Stable (read-only, TCP/2222)AB-ETH

Europe / Building Automation

opc_typeProtocolLibraryStatusPage
ADSBeckhoff TwinCAT/ADSNative Java (AMS/ADS)Stable (read+write)ADS
PROFINETPROFINET (acyclic record)Native Java (DCE/RPC Read-Implicit)Stable (read-only, UDP/34964 — cyclic RT not supported)PROFINET
BACNETBACnet/IP (HVAC/building)Native Java (ReadProperty)Stable (read-only, UDP/47808)BACnet
KNXNETKNXnet/IP (lighting/shading)Native Java (UDP tunneling)Stable (read+write, UDP/3671)KNXnet

Japanese PLC Family

opc_typeProtocolLibraryStatusPage
FINSOMRON FINS over TCPNative JavaStable (initial read)(planned)
MEWTOCOLPanasonic MEWTOCOLNative JavaStable (initial read)(planned)
FATEKFATEK FBsNative JavaStable (initial read)(planned)

Industrial Communication / Domain-Specific

opc_typeProtocolLibraryStatusPage
OPAtlas Copco Open Protocol (tightening results)Native Java (OpenProtocolJavaDriver)Stable — Node.js runner fully replaced(planned)
NMEANMEA 0183 (marine/vessel)Native JavaStable (read-only, sentence caching)(planned)
MBUSM-Bus (EN 13757, meters)Native JavaStable (initial read)(planned)
HARTHART-IP (HCF, 4-20mA + digital)Native JavaStable (initial read, cmd 0/1/3/13)(planned)
DNP3DNP3 (IEEE 1815, power utility)Native JavaStable (initial read, G1/G30)(planned)
IEC61850IEC 61850 MMS (substation)Native Java (full ISO stack)Stable (read+write + BRCB/URCB reporting)IEC 61850
SECSGEMSECS/GEM HSMS (semiconductor)Native JavaInitial (HSMS handshake — SECS-II body in a later phase)(planned)
CANOPENCANopen (machinery)Native Java (SDO expedited, CAN-over-TCP)Stable (read-only, TCP/20200)CANopen
DALIDALI (lighting, building)(HW master dependent — stub)Guidance only (OPC UA / Modbus bridge recommended)DALI
IO_LINKIO-Link (sensor master)(HW master dependent — stub)Guidance only (PROFINET/EtherNet-IP bridge)IO-Link

Other / External Interfaces

opc_typeProtocolLibraryStatusPage
HTTPHTTP (external push or polling)ProprietaryStable, write supportedHTTP
MOTOR_SENSEKOPENS Motor SenseProprietary (separate jar, loaded by reflection)StableHTTP / Motor Sense
ROS2ROS 2 (robots/AGV)rosbridge_suite (JSON over WebSocket)Topic subscription read (full implementation)ROS 2
DELTAVEmerson DeltaV (DCS)(proprietary — stub)Guidance only (must go through DeltaV OPC UA)DeltaV

Category summary — General-purpose PLC 8 / US 2 / Europe & building 4 / Japan 3 / Industrial communication & domain 10 / Other 4 = 29 opc_type. Pages marked "(planned)" will be split out into separate driver documents later; for now, the plc_address / format rules are covered by the developer notes and the javadoc of the protocol/<proto>/ package in the source.


Common OPC Registration Form

Fields shared by every protocol when registering from the UI or via POST /api/v1/opc:

FieldMeaningExample
opc_idUnique ID within the gatewayOPC_UA_Kepware
opc_nameDisplay nameKepware OPC-UA
opc_typeProtocol type (see table above)OPCUA
opc_agent_ipTarget host IP192.168.0.40
opc_agent_portTarget port49320
site_idSite IDSITE_00001 (auto-filled)
auto_collectAuto-start on boottrue/false
timecycleCollection interval (ms)1000
optionsProtocol-specific extra options (Map){"username":"kopens","password":"***"}

The key names in options differ per protocol. A detailed key table is provided on each driver page.


Common Tag Registration Form

Single-entry registration fields for tag_list[] or POST /api/v1/opc/{opcId}/tag:

FieldMeaningExample
tag_idUnique tag ID (usually <OPC_ID>_TAG_<n>)OPC_LS_XBM_0001_TAG_00001
tag_nameDisplay namePump1.RPM
plc_addressActual PLC address (format varies by protocol)D00309 (LS) / ns=2;s=Sine1 (OPCUA)
data_typeFree-form edge string (Float, Integer, Boolean, String, etc.)Integer
formatMemory width / representation format (optional)DW (LS) / STR[10]
descriptionDescription펌프 회전수
fomulaPost-processing formula (optional, e.g. x * 0.1)x / 10

Detailed plc_address and format rules are covered on each driver page.


Registration Flow (REST)