드라이버 개요
PlantPulse Edge 가 지원하는 산업 프로토콜 일람.
각 드라이버는 plantpulse-edge-driver.jar 안의
plantpulse.driver.protocol.<proto> 패키지에 구현되어 있으며,
ProtocolDriverFactory.createDriver(opc_type) 가 APP_OPC.OPC_TYPE 문자열을 보고 인스턴스를 생성합니다.
구현 분류는 크게 두 갈래로 나뉩니다.
- 자체 자바 구현 (대다수): LS, EIP, ADS, OP, FINS, MEWTOCOL, FATEK, NMEA, MBUS, HART, DNP3, IEC61850, SECSGEM 에 더해 Modbus 계열(TCP/UDP/RTU), PROFINET, AB-ETH, BACnet, KNXnet, CANopen 도 2026-07 에 네이티브로 재작성 완료(옛 Apache PLC4j 위임 전량 제거 — PLC4X 의존성 자체가 삭제됨). 외부 native/JNI 의존 없이 순수 Java socket 위에 프로토콜 프레이밍을 직접 작성.
- HW master 의존 stub (가이드만 제공): DALI, IO-Link, DeltaV. 게이트웨이 내부 read 대신 상위 프로토콜(OPC UA / Modbus / PROFINET / DeltaV OPC UA) 로 브릿지하는 권장 구성을 문서화. (ROS 2 는 rosbridge WebSocket 실구현으로 졸업 — 연결 유형 참조.)
그 외 iot-communication (xingshuangs) 라이브러리를 그대로 활용하는 GE/MELSEC/S7, Eclipse Milo 기반의 OPC UA, 그리고 자체 HTTP 클라이언트가 보조 트랙을 구성합니다.
지원 프로토콜 일람
범용 PLC / 일반 프로토콜
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
LS | LS XGI/XBC/XBM (FEnet) | 자체 자바 | 안정 | LS |
GE | GE SRTP / GE Fanuc | iot-communication (xingshuangs) | 안정 | (준비) |
MELSEC | Mitsubishi MELSEC (MC) | iot-communication (xingshuangs) | 안정 | MELSEC |
S7 | Siemens S7-300/400/1200/1500 | iot-communication (xingshuangs) | 안정 | S7 |
MODBUS | Modbus TCP | 자체 자바 | 안정 (read+write) | Modbus |
MODBUSUDP | Modbus UDP | 자체 자바 (MBAP-over-UDP) | 안정 (read+write) | Modbus |
MODBUS_RTU | Modbus RTU | 자체 자바 (RTU-over-TCP) | 안정 (read+write) | Modbus RTU |
OPCUA | OPC Unified Architecture | Eclipse Milo | 안정 | OPC-UA |
미국 PLC 계열
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
EIP | EtherNet/IP CIP (Allen-Bradley Logix) | 자체 자바 (etherip 디자인 참고, 순수 자바) | 안정 (read+write) | EIP |
AB-ETH | Allen-Bradley PLC-5/SLC-500 | 자체 자바 (CSP/PCCC) | 안정 (read-only, TCP/2222) | AB-ETH |
유럽 / 빌딩 자동화
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
ADS | Beckhoff TwinCAT/ADS | 자체 자바 (AMS/ADS) | 안정 (read+write) | ADS |
PROFINET | PROFINET (acyclic record) | 자체 자바 (DCE/RPC Read-Implicit) | 안정 (read-only, UDP/34964 — 사이클릭 RT 미지원) | PROFINET |
BACNET | BACnet/IP (HVAC/빌딩) | 자체 자바 (ReadProperty) | 안정 (read-only, UDP/47808) | BACnet |
KNXNET | KNXnet/IP (조명/차양) | 자체 자바 (UDP tunneling) | 안정 (read+write, UDP/3671) | KNXnet |
일본 PLC 계열
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
FINS | OMRON FINS over TCP | 자체 자바 | 안정 (1차 read) | (준비) |
MEWTOCOL | Panasonic MEWTOCOL | 자체 자바 | 안정 (1차 read) | (준비) |
FATEK | FATEK FBs | 자체 자바 | 안정 (1차 read) | (준비) |
산업통신 / 도메인 특화
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
OP | Atlas Copco Open Protocol (체결 결과) | 자체 자바 (OpenProtocolJavaDriver) | 안정 — Node.js runner 대체 완료 | (준비) |
NMEA | NMEA 0183 (해양/선박) | 자체 자바 | 안정 (read-only, sentence 캐싱) | (준비) |
MBUS | M-Bus (EN 13757, 미터) | 자체 자바 | 안정 (1차 read) | (준비) |
HART | HART-IP (HCF, 4-20mA + digital) | 자체 자바 | 안정 (1차 read, cmd 0/1/3/13) | (준비) |
DNP3 | DNP3 (IEEE 1815, 전력 utility) | 자체 자바 | 안정 (1차 read, G1/G30) | (준비) |
IEC61850 | IEC 61850 MMS (변전소) | 자체 자바 (full ISO stack) | 안정 (read+write + BRCB/URCB 리포트) | IEC 61850 |
SECSGEM | SECS/GEM HSMS (반도체) | 자체 자바 | 1차 (HSMS handshake — SECS-II body 차후 phase) | (준비) |
CANOPEN | CANopen (기계장비) | 자체 자바 (SDO expedited, CAN-over-TCP) | 안정 (read-only, TCP/20200) | CANopen |
DALI | DALI (조명, 빌딩) | (HW master 의존 — stub) | 가이드만 (OPC UA / Modbus 브릿지 권장) | DALI |
IO_LINK | IO-Link (센서 master) | (HW master 의존 — stub) | 가이드만 (PROFINET/EtherNet-IP 브릿지) | IO-Link |
기타 / 외부 인터페이스
opc_type | 프로토콜 | 라이브러리 | 상태 | 페이지 |
|---|---|---|---|---|
HTTP | HTTP (외부 push 또는 폴링) | 자체 | 안정, write 지원 | HTTP |
MOTOR_SENSE | KOPENS Motor Sense | 자체 (별도 jar, reflection 로드) | 안정 | HTTP / Motor Sense |
ROS2 | ROS 2 (로봇/AGV) | rosbridge_suite (JSON over WebSocket) | 토픽 구독 read (실구현) | ROS 2 |
DELTAV | Emerson DeltaV (DCS) | (proprietary — stub) | 가이드만 (DeltaV OPC UA 경유 필수) | DeltaV |
카테고리 요약 — 범용 PLC 8 / 미국 2 / 유럽·빌딩 4 / 일본 3 / 산업통신·도메인 10 / 기타 4 = 29
opc_type. "(준비)" 페이지는 추후 별도 드라이버 문서로 분리 예정이며, 현재는plc_address/format규칙을 개발자 노트 와 소스의protocol/<proto>/패키지 javadoc 으로 대체합니다.
공통 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 규칙은 각 드라이버 페이지에서 다룹니다.