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

OPC-UA ノード

node-red-contrib-opcua のようなコミュニティノードを通じて、外部 OPC-UA サーバー(Kepware, Ignition, 他のゲートウェイ)と直接通信できます。ゲートウェイ自体の OPC-UA サーバーに接続する場合も同じノードを使用します (opc.tcp://127.0.0.1:12000/opcua, NodeId ns=2;s=...)。

内蔵 OPC-UA サーバーに接続する場合

画面メニュー OPC UA サーバー › サーバー情報タブにある TCP エンドポイント URL と NodeId をそのままコピーして使用してください。詳細は OPC UA サーバーを使用する を参照してください。


1. ノードの種類 (node-red-contrib-opcua)​

ノード用途
OpcUa-Endpointサーバー接続情報 (host/port/security/auth) — 一度作成し、他のノードで共有
OpcUa-Item単一ノード定義 — nodeId を入力に変換
OpcUa-ClientRead / Write / Browse / Method call のメイン動作ノード
OpcUa-Subscribe変更イベント(MonitoredItem)購読 — ポーリングなしで push 受信
OpcUa-EventOPC-UA Alarm & Event 購読

2. Endpoint の作成​

OpcUa-Client ノードをダブルクリック → Endpoint 欄の横の鉛筆アイコン → 新しい endpoint:

項目値 (ゲートウェイ内蔵サーバー基準)
Endpointopc.tcp://127.0.0.1:12000/opcua
Security PolicyNone (内部) または Basic256Sha256 (外部運用)
Security ModeNone / Sign / Sign & Encrypt
LoginOPC UA サーバー画面の Username/Password または Anonymous (許可されている場合)

3. Read / Write パターン​

inject ─▶ OpcUa-Item (nodeId, msg.payload type) ─▶ OpcUa-Client (READ/WRITE) ─▶ debug

OpcUa-Item:

項目値
Itemns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
DataTypeInt32 (実際のタグデータタイプと一致させる必要があります — 一致しない場合は BadTypeMismatch)

OpcUa-Client:

項目値
ActionREAD または WRITE
Endpoint上記で作成した endpoint

WRITE 時は OpcUa-Item ノードの前に change で msg.payload = 9999 のように値を設定してください。


4. Subscribe — ポーリングなしで変更のみを受信​

ポーリング(周期的な read)よりも Subscribe の方がはるかに効率的です。変更がない場合はトラフィックが発生せず、マイクロ秒単位で到達します。

inject (once after deploy) ─▶ OpcUa-Item ×N ─▶ join (배열) ─▶ OpcUa-Subscribe ─▶ debug / function

OpcUa-Subscribe:

項目値
ActionSUBSCRIBE
Interval100 ms 推奨 (サーバーがクライアントに通知する最小周期)
Queue size10 (サーバー負荷増大時のバッファ)

受信するメッセージには msg.payload(値) + msg.topic(NodeId) + msg.timestamp が含まれます。


5. Browse — ノードツリーの自動探索​

KEPServerEX のようにノードが数百〜数千ある環境で、「どの NodeId が存在するか」を確認する場合に使用します。

inject ─▶ OpcUa-Client (action=BROWSE, msg.payload="ns=2;i=85") ─▶ debug

応答は子ノードの [ {nodeId, browseName, displayName, ...} ] 配列です。これを function で加工して自動登録フローを作成することも可能です。


6. よくある落とし穴​

症状原因 / 解決策
BadIdentityTokenInvalidユーザー/パスワードまたは証明書の信頼設定。サーバーコンソールでクライアント証明書を Trust 処理してください
BadTypeMismatchOpcUa-Item の DataType が実際のノードタイプと異なる
頻繁に 接続切れ メッセージが出るEndpoint URL のホストドメインが証明書の CN と異なる — 証明書を再発行するか、URL のホスト を証明書の CN と合わせてください
Subscribe が一度しか動作しないOpcUa-Subscribe は一度だけ「登録」すれば十分です。inject の once after deploy オプションを1回のみ使用してください

7. 次のステップ​