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

OPC-UA

OPC-UA (OLE for Process Control - Unified Architecture、IEC 62541) は産業オートメーション分野の標準通信プロトコルです。Kepware、Matrikon、Prosys、Ignition など、ほぼすべての SCADA / ミドルウェア製品が OPC-UA サーバー機能を備えています。

ほとんどの PLC は OPC-UA サーバー機能を直接持たないため、通常は Kepware のようなゲートウェイソフトウェアを介して PLC の値を OPC-UA として公開し、本ゲートウェイがその OPC-UA サーバーに接続して値を取得する構成になります。

対応 spec / セキュリティ

本ゲートウェイの OPC-UA クライアントは OPC UA 1.04 (IEC 62541:2020) まで対応 — Eclipse Milo 0.6.16 SDK ベース。

  • Transport: opc.tcp:// (UA Binary encoding)
  • Security: None / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss などの標準ポリシー
  • User token: Anonymous / UserName+Password / X.509 Certificate
  • Subscription: ゲートウェイは polling 方式 (timecycle 周期) — UA の MonitoredItem 購読は未使用

登録フォームの入力値

入力欄入力内容
IP アドレスOPC-UA サーバー PC の IP192.168.0.40
ポートOPC-UA サーバーのポート49320 (Kepware 既定) / 4840 (標準)
ユーザー (User)OPC-UA サーバーに登録されたユーザー IDkopens (サーバーにより異なる)
パスワードそのユーザーのパスワード***
サーバー名 (servername)エンドポイント末尾のサーバー名(Kepware の場合は空欄)
Discovery 使用サーバーのエンドポイントを自動検索するか通常は false。動作しない場合は true を試行
Subscription 使用 (subscription-enabled)polling の代わりに server-push モードチェック時 true (大量タグに効率的)
Publishing (publishing-interval)サーバーがデータ変更を publish する間隔 (ms)1000 (既定)
Sampling (sampling-interval)サーバーが値をサンプリングする間隔 (ms)1000 (既定)
Queue Size (queue-size)変更値の蓄積キューサイズ (notification 損失防止)10 (既定)

ユーザー / パスワード 欄を両方空欄にすると、匿名 (Anonymous) で接続を試行します。サーバー側で匿名接続が許可されている必要があります。


タグの PLC アドレス表記

OPC-UA のタグアドレスは通常 NodeId と呼ばれる次の形式です。

表記説明
ns=2;s=Channel1.Device1.Tag1namespace 2、文字列識別子 — Kepware で最も一般的
ns=2;i=1234namespace 2、数値識別子
ns=3;g=09087e75-8e5e-499b-954f-f2a8624db28aGUID 形式
  • ns= は namespace 番号。通常は 2
  • s= の後に「Channel.Device.Tag」形式のパスが入ります (Kepware で作成したパスそのまま)。

NodeId の調べ方

  1. PLC メーカー / Kepware メーカーのマニュアル にマッピング表が記載されている場合が多くあります。
  2. UA Expert などの無償 OPC-UA クライアントで直接接続し、ツリー上のノードを右クリックすると NodeId をコピーできます。
  3. Kepware 付属の OPC Quick Client ツールでも同じことができます。

Kepware クイック設定

よく使われる組み合わせである Kepware を前提とした手順です。

  1. Kepware Server → Project → チャネル追加 (例: Simulator)
  2. デバイス追加 (例: Simulator) → モデル = 16 Bit Device
  3. タグ追加 → 名前 Sine1、type Float、scan rate 100ms
  4. Project Properties → OPC UA → Server Endpoint でポート 49320 を有効化
  5. 匿名またはユーザーアカウントを有効化

本ゲートウェイの登録フォームには:

IPKepware サーバー PC の IP
ポート49320
ユーザー/パスワード上で作成したアカウント (匿名の場合は空欄)
タグ PLC アドレスns=2;s=Simulator.Simulator.Sine1

よくある問題と対処

症状 / メッセージ考えられる原因対処
「Connection refused」/ 接続できないOPC-UA サーバーが停止、またはポート遮断OPC-UA サーバーが稼働中か、IP/ポートが正しいか確認
「User access denied」ユーザー/パスワード誤り、またはサーバーで匿名接続が非許可サーバーにユーザーを登録するか、匿名接続を許可
「Security checks failed」サーバーのセキュリティポリシー不一致サーバーのセキュリティポリシーを「None」または「Basic256Sha256」に合わせる
接続はできるが値が常に 0 または nullタグ NodeId の誤記、namespace 番号の相違UA Expert などで同じ NodeId が実際に動作するか検証
切断と再接続を繰り返すネットワーク不安定、またはサーバー PC の負荷サーバー PC のリソース / ケーブル / スイッチを点検

よく使うデータ形式

PLC の値データ形式形式補助PLC アドレス例
ON/OFFBoolean(空欄)ns=2;s=Pump.Status
整数Integer(空欄)ns=2;s=Counter
大きい整数Long(空欄)ns=2;s=Total
実数 (32-bit)Float(空欄)ns=2;s=Pressure
実数 (64-bit、高精度)Double(空欄)ns=2;s=PrecisionTemp
文字列String(空欄)ns=2;s=Recipe.Name

OPC-UA の場合、format 欄は通常 空欄のままにします (サーバーがデータ型を通知します)。


より詳細な例 / 自動登録

スクリプト / API で自動登録する場合は、高度な設定 — REST API ページの OPC-UA 例を参照してください。