メインコンテンツまでスキップ

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)し、Edge に再接続を促します。


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 個が一般的です。