드라이버 개요
PlantPulse Edge 가 지원하는 산업 프로토콜 일람입니다. 제품 기준 opc_type 44개
(드라이버 43종 + 별칭 1)입니다.
각 드라이버는 plantpulse-edge-driver.jar 안의 plantpulse.driver.protocol.<proto> 패키지에
구현되어 있고, ProtocolDriverFactory.createDriver(opc_type) 가 APP_OPC.OPC_TYPE 문자열을
보고 인스턴스를 만듭니다.
구현 갈래
- 자체 자바 구현 (대다수) — 순수 Java 소켓 위에 프로토콜 프레이밍을 직접 작성합니다. 외부 native·JNI 의존이 없습니다. 2026-07 에 Modbus 계열·PROFINET·AB-ETH·BACnet·KNXnet CANopen 을 네이티브로 재작성하면서 Apache PLC4X 의존성을 통째로 제거했습니다.
- 외부 라이브러리 — MELSEC·S7 은
iot-communication, OPC UA 는 Eclipse Milo 를 씁니다. - 네이티브 브릿지 — FOCAS 는 C++ collector 를 자식 프로세스로 띄우고 TCP/JSON 으로 읽습니다.
- stub 4종 — CC-Link IE · DALI · IO-Link · DeltaV. 게이트웨이가 직접 읽지 않고 상위
프로토콜로 브릿지하는 구성을 안내합니다.
AbstractStubDriver를 상속하는지가 판정 기준입니다.
쓰기 지원은 드라이버마다 다릅니다
아래 표의 쓰기 열이 정본입니다. 쓰기를 지원하지 않는 드라이버에 쓰기를 시도하면 거부됩니다.
지원 프로토콜 일람
범용 PLC / 일반 프로토콜
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
LS | LS XGI/XBC/XBM (FEnet) | 자체 자바 | ✅ | — | LS |
MELSEC | Mitsubishi MELSEC (MC) | iot-communication | ✅ | — | MELSEC |
S7 | Siemens S7-300/400/1200/1500 | iot-communication | ✅ | — | S7 |
MODBUS | Modbus TCP | 자체 자바 | ✅ | 502 | Modbus |
MODBUSUDP | Modbus UDP | 자체 자바 (MBAP-over-UDP) | ✅ | 502 | Modbus |
MODBUS_RTU | Modbus RTU | 자체 자바 (RTU-over-TCP) | ✅ | 502 | Modbus RTU |
OPCUA | OPC UA | Eclipse Milo 1.1.8 | ✅ | — | OPC UA |
미국 PLC 계열
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
GE | GE SRTP / GE Fanuc | 자체 자바 (순수 소켓) | ✅ | 18245 | GE |
EIP | EtherNet/IP · CIP (심볼릭 태그) | 자체 자바 (ENIP/CIP) | ✅ | 44818 | EtherNet/IP |
LOGIX | AB ControlLogix / CompactLogix | EIP 별칭 — 같은 드라이버 | ✅ | 44818 | EtherNet/IP |
AB-ETH | Allen-Bradley CSP/PCCC (SLC·PLC-5) | 자체 자바 | ❌ | 2222 | AB-ETH |
유럽 / 빌딩 자동화
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
PROFINET | PROFINET (acyclic Read-Implicit) | 자체 자바 | ❌ | 34964 | PROFINET |
ADS | Beckhoff TwinCAT ADS | 자체 자바 | ✅ | 48898 | ADS |
BACNET | BACnet/IP (ReadProperty) | 자체 자바 | ❌ | 47808 | BACnet |
KNXNET | KNXnet/IP (tunneling) | 자체 자바 | ✅ | 3671 | KNXnet |
CANOPEN | CANopen (SDO) | 자체 자바 | ❌ | 20200 | CANopen |
MBUS | M-Bus (계량기) | 자체 자바 | ⚠ | 10001 | M-Bus |
IEC61850 | IEC 61850 MMS (전력) | 자체 자바 (full ISO stack) | ✅ | 102 | IEC 61850 |
DALI | DALI 조명 | stub | ❌ | — | DALI |
IO_LINK | IO-Link 마스터 | stub | ❌ | — | IO-Link |
DELTAV | Emerson DeltaV | stub | ❌ | — | DeltaV |
⚠ M-Bus 의 쓰기는 계측값이 아니라 슬레이브 선택 명령만 처리합니다.
일본 · 대만 PLC 계열
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
FINS | Omron FINS | 자체 자바 | ✅ | 9600 | FINS |
MEWTOCOL | Panasonic MEWTOCOL | 자체 자바 | ✅ | 9094 | MEWTOCOL |
FATEK | Fatek | 자체 자바 | ✅ | 500 | Fatek |
KEYENCE_KV | Keyence KV-7500/8000 상위링크 | 자체 자바 (ASCII) | ✅ | 8501 | 연결 유형 |
CCLINK_IE | CC-Link IE Field | stub | ❌ | — | CC-Link IE |
Keyence KV 는 실장비 검증 전입니다
와이어 포맷이 문서 기준으로 구현돼 있고 실제 장비로 확인되지 않았습니다. 현장 적용 전에 시험 연결로 값을 대조하세요.
산업통신 / 도메인 특화
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
SECSGEM | SEMI SECS/GEM (HSMS) | 자체 자바 | ✅ | 5000 | SECS/GEM |
HART | HART-IP | 자체 자바 | ✅ | 5094 | HART |
DNP3 | DNP3 (unsolicited 지원) | 자체 자바 | ✅ | 20000 | DNP3 |
IEC104 | IEC 60870-5-104 전력 텔레컨트롤 | 자체 자바 | ❌ | 2404 | 연결 유형 |
FOCAS | FANUC CNC (FOCAS) | 네이티브 브릿지 + C++ collector | ❌ | 8193 | FOCAS |
MTCONNECT | MTConnect CNC / 공작기계 | 자체 자바 (HTTP/XML) | ❌ | 5000 | 연결 유형 |
OP | Open Protocol (체결 공구) | 순수 자바 | ✅ | 4545 | Open Protocol |
NMEA | NMEA 0183 (선박·GPS) | 자체 자바 | ❌ | 10110 | NMEA |
IEC61162_450 | 해양 선교 NMEA over UDP 멀티캐스트 | 자체 자바 | ❌ | 60004 (UDP) | 연결 유형 |
MOTOR_SENSE | 모터센스 진동·전류 센서 | HTTPS REST (별도 jar) | ❌ | — | 연결 유형 |
메시징 / 외부 인터페이스
opc_type | 프로토콜 / 장비 | 구현 | 쓰기 | 기본 포트 | 페이지 |
|---|---|---|---|---|---|
HTTP | HTTP 수신 (캐시 bind) | 자체 자바 | (bind 경유) | — | HTTP |
WEBSOCKET | WebSocket | 자체 자바 | ✅ | 80 / 443 | WebSocket |
MQTT_CLIENT | MQTT 클라이언트 | Eclipse Paho | ✅ | 1883 / 8883 | MQTT Client |
SPARKPLUG_B | Sparkplug B | 자체 protobuf | ✅ | 1883 | Sparkplug B |
KAFKA | Apache Kafka | kafka-clients 4.1.2 | ✅ | 9092 | Kafka |
COAP | CoAP | Californium 3.13.0 | ✅ | 5683 / 5684 | CoAP |
ROS2 | ROS 2 (rosbridge WebSocket) | 자체 자바 | ❌ | 9090 / 9443 | ROS 2 |
SNMP | SNMP v2c (네트워크 장비·UPS) | 자체 자바 (BER) | ❌ | 161 (UDP) | 연결 유형 |
공통 OPC 등록 폼
화면 또는 POST /api/v1/opc 로 등록 시 모든 프로토콜이 공유하는 필드:
| 필드 | 의미 | 예시 |
|---|---|---|
opc_id | 게이트웨이 내 고유 ID | OPC_UA_Kepware |
opc_name | 화면 표시명 | Kepware OPC-UA |
opc_type | 프로토콜 타입 (위 표 참고) | OPCUA |
opc_agent_ip | 대상 호스트 IP | 192.168.0.40 |
opc_agent_port | 대상 포트 | 49320 |
site_id | 사이트 ID | SITE_00001 (자동 채움) |
auto_collect | 부팅 시 자동 시작 | true/false |
timecycle | 수집 주기 (ms) | 1000 |
options | 프로토콜별 추가 옵션 (Map) | {"username":"kopens","password":"***"} |
options 의 키 이름은 프로토콜별로 다릅니다. 각 드라이버 페이지에서 상세 키 표를 제공합니다.
공통 태그 등록 폼
tag_list[] 또는 POST /api/v1/opc/{opcId}/tag 의 단건 등록 필드:
| 필드 | 의미 | 예시 |
|---|---|---|
tag_id | 태그 고유 ID (보통 <OPC_ID>_TAG_<n>) | OPC_LS_XBM_0001_TAG_00001 |
tag_name | 표시명 | Pump1.RPM |
plc_address | 실제 PLC 주소 (프로토콜별 형식) | D00309 (LS) / ns=2;s=Sine1 (OPCUA) |
data_type | edge 자유 문자열 (Float, Integer, Boolean, String 등) | Integer |
format | 메모리 폭 / 표현 형식 (선택) | DW (LS) / STR[10] |
description | 설명 | 펌프 회전수 |
fomula | 후처리 수식 (선택, 예: x * 0.1) | x / 10 |
자세한 plc_address 와 format 규칙은 각 드라이버 페이지에서 다룹니다.