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_type | AB-ETH |
| 実装クラス | plantpulse.driver.protocol.ab_eth.ABEthDriver |
| ライブラリ | 独自ネイティブ (plantpulse-plc-protocol の abeth — CSP/PCCC socket 直接) |
| 継承 | BaseProtocolDriver (PLC4j ではない) |
| デフォルトポート | 2222 (CSP — EtherNet/IP 44818 ではない) |
| 状態 | 安定 (旧型機器対応) |
| read | OK (Protected Typed Logical Read) |
| write | ❌ (読み取り専用 — Protected Typed Logical Write 未実装) |
| セキュリティ | なし |
AB-ETH は CSP over TCP/2222 を使用します。EtherNet/IP(CIP)の 44818 ではありません — 旧ドキュメント/フォームの 44818 は誤記でした。ControlLogix(L8x / L7x)は EtherNet/IP ドライバ(opc_type=EIP、44818)を使用します。
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_ip | PLC IP | 192.168.0.80 |
opc_agent_port | TCP ポート | 2222 (CSP) |
options.station | DF1 宛先ステーション番号 | 1 |
options.read-timeout | 応答タイムアウト (ms) | 3000 |
タグ plc_address 形式
N<file>:<element>[/<bit>]:<TYPE>[[size]]
ファイル文字は常に N(Integer)。TYPE は必須です:
| 表記 | 意味 |
|---|---|
N7:0:WORD | Integer file 7, element 0 — 16-bit |
N7:0:INTEGER | 同じ (WORD の別名、signed 16-bit) |
N7:3:DWORD | element 3 — 32-bit |
N7:5:FLOAT | element 5 — 32-bit float |
N7:10/0:SINGLEBIT | element 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() = false、write()は常に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-protocolのabethパッケージ。 - 運用: PLC-5 / SLC-500 は生産終了(2017)により部品の入手性が低下 — 新規設計では ControlLogix + EtherNet/IP を推奨。本ドライバは既設 PLC のデータ収集用です。