본문으로 건너뛰기

KNXnet/IP 드라이버

개요

KNXnet/IP — 빌딩 자동화(조명 / 차양 / 공조)에서 표준화된 KNX 버스를 IP 위로 터널링. 2026-07 네이티브 재작성 — 옛 Apache PLC4j knxnet-ip 위임은 제거되었습니다(2026-07 P2 이관). 지금은 plantpulse-plc-protocol 의 자체 구현(KnxNetIpClient UDP 3671 tunneling + KnxGroupAddress + KnxDpt)을 사용합니다.

항목
opc_typeKNXNET
구현 클래스plantpulse.driver.protocol.knxnet.KNXnetDriver
라이브러리자체 네이티브 (plantpulse-plc-protocolknx — UDP tunneling)
상속BaseProtocolDriver (PLC4j 아님)
getProtocol()"knxnet-ip" (옛 PLC4X scheme 표기 유지 — 로그/진단 호환)
기본 포트3671 (UDP)
상태안정 (TUNNELING)
readOK (GroupValueRead)
writeOK (GroupValueWrite — DPT 접미 필수)
보안없음 (KNX Secure 미지원)
TUNNELING 전용 — ROUTING 미지원

네이티브 클라이언트는 TUNNELING(유니캐스트) 만 지원합니다. 멀티캐스트 ROUTING 은 미지원 — connection-type=routing 을 지정하면 경고 로그 후 tunneling 으로 진행합니다.


클래스 구조

BaseProtocolDriver
└── KNXnetDriver — connect() 에서 KnxNetIpClient(host, port) tunneling 세션 수립

와이어: CONNECT_REQUEST(0x0205) → RESPONSE(channelId) → TUNNELING_REQUEST(cEMI L_Data.req GroupValueRead) → ACK → 게이트웨이발 L_Data.ind GroupValueResponse(+ACK 회신) → CONNECTIONSTATE 하트비트(30s) → DISCONNECT. read 통신 실패 시 소켓을 무효화(connected=false)해 엣지가 재연결하도록 유도합니다.


OPC 등록 옵션

필드의미기본
opc_agent_ipKNX/IP 게이트웨이 IP192.168.1.10
opc_agent_portUDP 포트3671 (보통 고정)
options.request-timeout응답 타임아웃 (ms)2000 (옛 PLC4X 기본과 동일)
options.connection-typetunneling 만 지원tunneling

태그 plc_address 형식 (기존 계약 보존)

<main>/<middle>/<sub>[:<DPT>] 예) 1/0/5:DPT_Switch / 3/2/0:9.001 / 1/2/10
<main>/<sub>[:<DPT>] 2-level (main 0-31 / sub 0-2047)

DPT 접미는 PLC4X 이름(DPT_Switch / DPT_Scaling / DPT_Value_Temp / DPT_Value_Length …) 또는 숫자(1.001 / 5.001 / 9.001 / 14.056 …) 둘 다 허용.

표기의미
1/0/5:DPT_Switch1-bit boolean (DPT 1.001)
2/1/3:DPT_Scaling0..100 % (DPT 5.001)
3/2/0:DPT_Value_Temp2-byte float (DPT 9.001)
3/2/0:9.001동일 (숫자 DPT)
1/2/10DPT 생략 — 길이 기반 unsigned(RAW) 해석

지원 디코드: DPT1 bool / 5.001 %scale / 5.x u8 / 7.x u16 / 9.x 2-byte float / 12·13.x u32 / 14.x float32 / 16.x string. DPT 생략 시 길이 기반 unsigned(RAW) 해석 — 정확한 값이 필요하면 ETS 프로젝트 기준 DPT 를 명시하세요.


support / 미지원

  • read: GroupValueRead → GroupValueResponse — OK.
  • write: GroupValueWrite — OK. DPT 접미 필수 — RAW 로는 인코딩 불가하며, 인코딩은 DPT 가 결정(data_type 무관).
  • ROUTING(멀티캐스트, 224.0.23.12): 미지원 (TUNNELING 전용).
  • KNX Secure (IP / Data): 미지원.
  • ETS 프로젝트(.knxproj) import 자동 매핑: 미지원 — Group Address 를 직접 입력. (옛 폼의 knxproj-file-path / knxproj-password / group-address-num-levels 옵션은 네이티브에서 무시됩니다 — 제거됨.)
  • KNX TP/PL/RF 직접 연결: 미지원 — IP 게이트웨이 경유 전제.

참고

  • KNX Standard ISO/IEC 14543-3.
  • 코드: plantpulse-edge-driver/src/plantpulse/driver/protocol/knxnet/KNXnetDriver.java + plantpulse-plc-protocolknx 패키지.
  • 운영: 게이트웨이(Gira / ABB / Siemens N146)의 Tunneling 슬롯 수 제한 주의 — 동시 연결 1~5 개가 일반적.