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

AB-EtherNet (PLC-5 / SLC-500) ドライバ

概要

AB-EtherNet — Allen-Bradley のレガシー PLC-5 / SLC-500 PLC が使用する CSP(Client/Server Protocol) over EtherNet + PCCC コマンド。ControlLogix の EtherNet/IP(CIP)とは別に、ファイル/エレメントベースの logical addressing(N7:0)を使用します。2026-07 ネイティブ再実装 — 旧 Apache PLC4j ab-eth への委譲は削除されました(当該ドライバは CSP 接続直後にリクエストを送信せずソケットを切断するため収集不可でした)。現在は plantpulse-plc-protocol の独自 CSP/PCCC 実装(AbEthPLC)を使用 — FINS / MELSEC と同じネイティブパターンです。

項目
opc_typeAB-ETH
実装クラスplantpulse.driver.protocol.ab_eth.ABEthDriver
ライブラリ独自ネイティブ (plantpulse-plc-protocolabeth — CSP/PCCC socket 直接)
継承BaseProtocolDriver (PLC4j ではない)
デフォルトポート2222 (CSP — EtherNet/IP 44818 ではない)
状態安定 (旧型機器対応)
readOK (Protected Typed Logical Read)
write❌ (読み取り専用 — Protected Typed Logical Write 未実装)
セキュリティなし
デフォルトポート 2222 (44818 ではない)

AB-ETH は CSP over TCP/2222 を使用します。EtherNet/IP(CIP)の 44818 ではありません — 旧ドキュメント/フォームの 44818 は誤記でした。ControlLogix(L8x / L7x)は EtherNet/IP ドライバ(opc_type=EIP、44818)を使用します。

ControlLogix との違い

AB-ETH ドライバは PLC-5 / SLC-500 専用 — シンボリックタグ(MyTag)ではなく N7:0 のようなレガシー logical address を使用します。


クラス構成

BaseProtocolDriver
└── ABEthDriver — connect() 에서 AbEthPLC(host, port, station) 생성 후 CSP register handshake

connect()AbEthPLC ソケットを開き、CSP register を実行します。read 失敗時はソケットを無効化(connected=false)し、Edge に再接続を促します。


wire フォーマット概要 (独自実装)

  • CSP encapsulation(register session) の上に PCCC コマンド。
  • PCCC: PLC-5 / SLC-500 Protected Typed Logical Read (word range)。
  • Logical address: N<file>:<element>[/<bit>]

OPC 登録オプション

フィールド意味デフォルト
opc_agent_ipPLC IP192.168.0.80
opc_agent_portTCP ポート2222 (CSP)
options.stationDF1 宛先ステーション番号1
options.read-timeout応答タイムアウト (ms)3000

タグ plc_address 形式

N<file>:<element>[/<bit>]:<TYPE>[[size]]

ファイル文字は常に N(Integer)。TYPE は必須です:

表記意味
N7:0:WORDInteger file 7, element 0 — 16-bit
N7:0:INTEGER同じ (WORD の別名、signed 16-bit)
N7:3:DWORDelement 3 — 32-bit
N7:5:FLOATelement 5 — 32-bit float
N7:10/0:SINGLEBITelement 10 のビット 0 (Boolean)

サポートする TYPE: WORD(16-bit) / INTEGER(=WORD) / DWORD(32-bit) / FLOAT(32-bit) / SINGLEBIT(単一ビット)。TYPE を省略したり別の値を指定すると、read は空文字列を返します。

レガシーファイルタイプの接尾辞(.PRE / .ACC など)は未対応

タイマ/カウンタの .PRE / .ACC サブフィールドや F8:(Float file) prefix 表記は、ネイティブパーサーが受け付けません。Float 値は N<file>:<elem>:FLOAT で読み取ります。


support / 未対応

  • read: Protected Typed Logical Read (word range) — OK。
  • write: 未対応isWriteSupported() = falsewrite() は常に false。(Protected Typed Logical Write は今後の実装。)
  • ControlLogix シンボリックタグ(MyController:Tag1): 本ドライバの対象外 — EIP ドライバを使用してください。
  • DH+ / DH-485 ゲートウェイルーティング: 未対応 — 直接の EtherNet インターフェースが必要です。

curl 登録例

curl -X POST http://<edge-host>/api/v1/opc \
-H "Content-Type: application/json" \
-d '{
"opc_id": "OPC_ABETH_L1",
"opc_type": "AB-ETH",
"opc_name": "SLC-500 Line 1",
"opc_agent_ip": "192.168.0.80",
"opc_agent_port": "2222",
"site_id": "SITE_00001",
"auto_collect": true,
"timecycle": 1000,
"options": { "station": "1", "read-timeout": "3000" },
"tag_list": [
{"tag_id":"OPC_ABETH_L1_T01","tag_name":"Count","plc_address":"N7:0:WORD","data_type":"Integer"},
{"tag_id":"OPC_ABETH_L1_T02","tag_name":"Temp","plc_address":"N7:5:FLOAT","data_type":"Float"},
{"tag_id":"OPC_ABETH_L1_T03","tag_name":"Run","plc_address":"N7:10/0:SINGLEBIT","data_type":"Boolean"}
]
}'

参考

  • Allen-Bradley DF1 / PCCC Programming Reference (1770-6.5.16)。
  • コード: plantpulse-edge-driver/src/plantpulse/driver/protocol/ab_eth/ABEthDriver.java + plantpulse-plc-protocolabeth パッケージ。
  • 運用: PLC-5 / SLC-500 は生産終了(2017)により部品の入手性が低下 — 新規設計では ControlLogix + EtherNet/IP を推奨。本ドライバは既設 PLC のデータ収集用です。