OPC UA サーバー
ゲートウェイ自体に OPC-UA サーバー が内蔵されており、収集されたタグ値を外部 OPC-UA クライアント(SCADA, HMI)にそのまま公開します。このページでは、内蔵サーバーの 接続情報・セキュリティ設定 と ノードツリー(タグリスト + リアルタイム値 + 時系列)、接続状態・クライアント証明書・クライアント接続証明書・アカウントを一つの画面(6つのタブ)で扱います。

| 番号 | 場所 | 内容 |
|---|---|---|
| ① | タブ行 | 6つのタブ |
| ② | 状態カード | サーバー状態・セッション・サブスクリプション・公開ノード数 |
| ③ | エンドポイント | TCP / TLS 接続 URL と提供されるセキュリティポリシー |
| ④ | セキュリティ | 匿名接続・セキュリティなしエンドポイント・クライアント証明書・アカウント |
| ⑤ | サーバー証明書 | 主体・フィンガープリント・有効期間、[ダウンロード (.der)] |

| 番号 | 場所 | 内容 |
|---|---|---|
| ① | ノードツリー | 엣지 → OPC → 태그、接続状態ドットと最新値 |
| ② | パネルヘッダー | CSV アイコン — アドレス空間のダウンロード |
| ③ | ノード詳細 | 選択したノードの情報と時系列 |
- 実装: Eclipse Milo 1.1.8
- Transport:
opc.tcpのみ (UA Binary)。エンドポイントパスは/opcua—opc.tcp://<호스트>:12000/opcua(TCP ポート) ・opc.tcp://<호스트>:12443/opcua(«TLS» ポート)。12443 も HTTPS ではなく セキュリティポリシーが適用された opc.tcp です - Security policies: Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss — それぞれ Sign · SignAndEncrypt、両ポート共通
- None (セキュリティなし):
opc.ua.server.security.none=yes(デフォルト) の場合、TCP ポートにのみ セッションエンドポイントが開きます。Discovery(/opcua/discovery) は規格上常に None ですが、セッションは開けません - User token: Anonymous (
opc.ua.server.anonymous=yes, デフォルト) / UserName+Password / X.509 (サーバー信頼リストにある証明書のみ) - サーバー証明書: 初回起動時に自己署名(RSA 2048)で作成され
$PE_DATA_DIR/pp-data/opcua/に保存されます — アップグレード後も同じ証明書・信頼リストを維持します
左側メニューの OPC UA サーバー アイコン、または直接 http://<gateway>/ui/opcua へ移動します。
1. 画面構成
画面上部の6つのタブに分かれています。アドレスの末尾に #server · #nodes · #sessions · #certs · #client-certs · #accounts を付けるとそのタブが直接開き、付けない場合はブラウザで最後に閲覧したタブが開きます。
| タブ | 内容 |
|---|---|
| サーバー情報 | サーバー状態・稼働時間、現在のセッション・サブスクリプション・公開ノード数。外部クライアントが接続する TCP / TLS エンドポイント URL(コピーボタン) と各エンドポイントが実際に提供するセキュリティポリシーバッジ。匿名接続・セキュリティなしエンドポイントの ON/OFF、クライアント証明書・アカウント数、サーバー証明書(主体・SHA-1 フィンガープリント・有効期間・キー) |
| ノード | 左側 ノードツリー(엣지 → OPC → 태그、各 OPC の 接続状態ドット(マウスオーバーで状態名表示) とタグ数、各タグの 最新値) と右側 ノード詳細(メタ情報 + リアルタイム値 + 数値/ブーリアンタグの場合は 時系列チャート)。パネルヘッダーの CSV アイコンでアドレス空間をダウンロードします |
| 接続状態 | 現在のセッション・サブスクリプション・モニタリング項目数、拒否された接続数、セッションリスト |
| クライアント証明書 | セキュリティチャネルを試行したクライアント証明書の 拒否済み・信頼済み リスト、[信頼] [拒否リストへ] [削除]、サーバー証明書 [ダウンロード (.der)] |
| クライアント接続証明書 | Edge が クライアントとして 外部 OPC UA サーバーに接続する際に使用する証明書。OPC UA プロトコル 参照 |
| アカウント | デフォルト管理者 + 追加アカウント(読み取り専用 / 読み書き) の管理 |
エンドポイント URL のホストは opc.ua.server.domain です。この値がループバック(127.0.0.1 · localhost · 0.0.0.0, インストールデフォルト) の場合、ブラウザが接続したホストで URL を生成します — リモートでコピーした URL が自身の PC を指さないようにするためです。
2. NodeId コンベンション
各タグは以下のような OPC-UA NodeId で公開されます。アドレス空間のルートは Edge ID であり(Objects 以下)、その下に OPC(接続) フォルダ、さらにその下にタグが配置されます。
ns=2;s=<EDGE_ID>.<OPC_ID>.<TAG_ID>
例: ns=2;s=EDGE_00303.OPC_00303.TAG_TEST_00042
- タグに タググループ が設定されている場合、OPC フォルダ下の
GROUP.<그룹>フォルダに配置されますが、タグの NodeId は上記の形式のままです。 - OPC フォルダごとに
_Statusフォルダがあり、Connected·State·LastError·LastCollectedAt·CycleMsを 2 秒周期で提供します(読み取り専用)。 edge.idが空であるか、EDGE_+ 大文字・数字・_の形式でない場合、名前を生成せず OPC-UA サーバーを起動しません(ERROR ログ)。
旧版の NodeId は EDGE.<SITE_ID>.<OPC_ID>.<TAG_ID> でした。現在はルートが Edge ID となり、サイト階層はありません。互換エイリアスがないため、アップグレード後は SCADA 側の NodeId を再設定する必要があります。
外部クライアント(UaExpert, KEPServerEX, Ignition など) からこの NodeId で直接サブスクライブできます。詳細パネルの NodeId 右側にある コピー ボタンを使用すると、クリップボードへ簡単にコピーできます。
3. ノードツリー — 検索 / リフレッシュ
- ツリー上部の検索窓にテキストを入力すると、ツリー・OPC・タグ名を リアルタイム部分一致 でフィルタリングします。一致する項目が子要素にある場合、親(OPC, Edge) も自動的に展開して表示します。
- 画面上部のリフレッシュ(↻) ボタン — ツリーと各タブの情報を再取得します。通常は自動更新されるため、操作する必要はほとんどありません。
- 各行の ◂/▾ トグルでサブツリーを折り畳み/展開できます。検索が有効な場合は一致箇所の表示のために自動的に展開され、検索をクリアすると直前のトグル状態に復元されます。
- 長い値の自動省略 (ellipsis) — ツリーノードの 現在値 がカラム幅を超える場合、
text-overflow: ellipsisとして…処理されます。マウスホバー時にツールチップで全テキストが表示されます — JSON / 長い STRING 値によってツリーレイアウトが崩れるのを防ぐための保護策です。
ツリーに表示される値は、ノードタブが表示されている間 2 秒周期 で自動更新されます (/ui/opcua/tree)。ツリー構造や展開状態、右側の詳細、チャートはそのまま維持されます。
4. ノード詳細 + 時系列チャート
タグ行をクリックすると、右側に以下が表示されます。
- NodeId (コピー可能)
- Tag ID / DataType / PLC Address / Alias / Description
- Value (現在値 + 最終更新時刻, ms 単位)
- Status (
OK/ERROR (메시지))
値のタイプに応じてチャートの種類が自動的に切り替わります。
4.1 数値 / ブーリアン (ECharts ラインチャート)
値が 数値型(Integer/Long/Float/Double など) または ブーリアン の場合、ECharts 時系列ラインチャート が描画されます。
| チャート機能 | 説明 |
|---|---|
| 範囲選択 | チャート右上のコンボで 1분/5분/10분/30분/1시간(default)/3시간/12시간/24시간 を選択 — Cassandra(tm_tag_point) の過去データを即座に取得して再描画します |
| dataZoom スライダー | チャート下部のグレー系(ライトグレー)ドラッグバー — 横方向の zoom / pan |
| 自動追加 | 2 秒周期のポーリングにより、新しい値がチャートに追加されます |
| Tooltip | マウスオーバー時に ms 単位の時刻 + 値を表示 |
| ブーリアン | step end 形式(階段状)で 0/1 の切り替わりを可視化 |
| サンプリング | 最大 5,000 点まで保持し、それを超える場合は最も古い点から削除 (lttb ダウンサンプリング) |
4.2 STRING (vis-timeline ボックスチャート)
値が STRING の場合、ECharts ラインではなく vis-timeline の range box チャート が描画されます — 同じ値が連続する区間を一つのボックスとしてまとめ、視覚的に 状態変化のタイミング を強調する形式です。
| 項目 | 説明 |
|---|---|
| ボックス = 同一値の連続区間 | 例: "RUNNING" が 12:00~12:35 まで維持された場合、その区間を一つのボックスとして表示 |
| ボックス色 | 値のハッシュに基づき自動決定 — 同じテキストは常に同じ色 |
| ボックスラベル | 値のテキスト (長い場合はホバー時に全文表示) |
| 時間軸 zoom/pan | vis 基本インタラクション (マウスホイール / ドラッグ) |
| 更新 | ポーリング時に history を ASC 順にソートしてデータセット全体を再構成 (変動が少ない場合はちらつきなし) |
| ノード変更時 | disposeStringTimeline() でインスタンスを destroy し、新ノードのチャートを再生成 |
STRING チャートは、状態マシン ログ(
READY → RUNNING → ERROR → IDLE) のような非数値時系列を一目で確認するのに適しています。同様のトーンは タグ値推移表示 (tag-view) にも適用されています。
5. Edge システムタグ
OPC_SYSTEM_<EDGE_ID> というシステム接続が自動的にツリーに表示されます。これはゲートウェイ自身の状態を OPC-UA ノードとして公開する 38 個のシステムタグの集合であり、タグ ID は TAG_<EDGE_ID>_90000 ~ TAG_<EDGE_ID>_90037 です。
代表的なタグ:
| タグ名 | 意味 |
|---|---|
THREAD_COUNT | JVM スレッド数 |
TAG_COUNT | 登録タグ総数 |
SERVER_STARTED_TIMESTAMP | Edge 起動時刻(epoch ms) |
PLC_CON_CONNECTED_COUNT | 現在接続されている接続(OPC)数 |
MEMORY_USED_PERCENT | メモリ使用率(%) |
システム接続の 接続状態 は 常に CONNECTED と表示され(自身であるため接続概念がない)、_Status フォルダは存在しません。
6. 外部クライアントとの連携 — フロー
- サーバー情報 タブからエンドポイント URL をコピー (例:
opc.tcp://<gateway>:12000/opcua)。パス/opcuaを除くと接続できません — サーバーが HELLO をBadTcpEndpointUrlInvalidで拒否します。 - UaExpert / KEPServerEX などの OPC-UA クライアントでサーバーを追加 → 上記 URL を入力 → セキュリティポリシーを選択。
- セキュリティなしエンドポイント が有効な場合、TCP ポートから
Noneで接続可能です。 - セキュリティポリシー(Basic256Sha256 など) で接続すると、初回はサーバーがクライアント証明書を拒否します。クライアント証明書 タブの 拒否済み リストでフィンガープリントを SCADA 側の証明書と照合し [信頼] をクリック — 再起動なしで次回の接続から適用されます。クライアント側でもサーバー証明書を信頼させる必要がある場合は、[ダウンロード (.der)] で取得して登録します。
- セキュリティなしエンドポイント が有効な場合、TCP ポートから
- 認証モード:
- Anonymous — サーバー情報タブで 匿名接続 が有効であればそのまま接続可能。匿名セッションは 読み取りのみ です。
- Username / Password — デフォルト管理者(
opc.ua.server.user/opc.ua.server.password) または アカウント タブで追加したアカウント。 - X.509 — サーバー信頼リストにある証明書のみ受け入れます。
- 接続後、NodeId
ns=2;s=...形式のタグをそのままサブスクライブします。
7. アカウント・書き込み
- デフォルト管理者(
opc.ua.server.user/password) は 読み書き 権限を持ち、画面から削除できません。パスワードは設定画面で変更します。 - アカウント タブで追加アカウントを作成します — ID は英数字で始まり、英数字・
._-のみ使用可能で最大 64 文字まで(デフォルト管理者の ID は使用不可)、パスワードは 8~128 文字。権限は 読み取り専用 / 読み書き。権限変更は開いているセッションに即時適用され、削除・使用停止・パスワード変更はそのアカウントのセッションを切断します。 - 匿名ではないセッション(デフォルト管理者・読み書きアカウント・信頼された X.509 証明書) がタグノードに 書き込む と、その値が該当 PLC に転送されます(ドライバ書き込みと同様の流れで、
tm_tag_writeにアカウント・セキュリティポリシー・接続 IP を記録)。PLC への書き込みが成功したときのみ、ノード値が更新されます。 - 書き込みが拒否される場合:
| 結果 | 原因 |
|---|---|
Bad_NotWritable | 読み取り専用タグ(client_access=R) — 全ユーザー対象 |
Bad_UserAccessDenied | 匿名セッション、読み取り専用アカウント、または HA ペアでこの Edge に PLC 書き込み権限がない場合 |
Bad_InternalError | PLC 書き込み失敗、または起動中のため書き込みパスが未準備 |
opc.ua.server.anonymous と opc.ua.server.security.none は、どちらもデフォルトで yes に設定されています。この状態では、ネットワーク上のあらゆるクライアントが証明書やパスワードなしで すべてのタグを読み取ることが可能 です(匿名セッションの書き込みは禁止されています)。運用環境では、設定画面の OPC UA サーバー タブにて 匿名接続許可 および セキュリティなしエンドポイント をオフにしてください。
8. トラブルシューティング
| 症状 | 点検ポイント |
|---|---|
| ツリーに OPC が表示されない | 자주 하는 작업 → 새 PLC 연결 추가 が完了しているか、ゲートウェイの該当 OPC の 収集自動開始 オプションが有効になっているか |
タグ横の値が - となる | 該当タグが一度も更新されていない。収集開始 / OPC 接続 / Quality を点検 |
クライアントが BadTcpEndpointUrlInvalid で接続失敗 | エンドポイント URL 末尾の /opcua が抜けていないか |
| ツリーには見えるが外部クライアントが NodeId を見つけられない | 入力ミス、または 2026.11 以前の EDGE.<SITE_ID>... 形式の NodeId を使用していないか (§2 参照) |
| サーバー情報タブが «停止» | edge.id が空であるか形式が正しくない、または PE_DATA_DIR を取得できていない — いずれの場合もサーバーを起動せず ERROR ログを記録します |
| セキュリティポリシーで接続すると拒否される | クライアント証明書がまだ信頼されていない — クライアント証明書 タブで [信頼] を実行 |
None で接続できない | セキュリティなしエンドポイント がオフになっているか、12443 ポートで接続しようとしている (None セッションは TCP ポートのみ) |
書き込みが Bad_NotWritable / Bad_UserAccessDenied | §7 表を参照 |
| チャートが空である | そのタグの Cassandra history がまだ存在しない(登録直後のタグ) — しばらく待つと点が追加されます |
| チャートが不規則に見える | 範囲を 24時間 に広げると、自動ダウンサンプリングが適用され滑らかになります |
| クライアントがサーバー証明書を信頼しない | ゲートウェイの自己署名証明書であるため — クライアント側で "Trust" 処理を行うか、[ダウンロード (.der)] で取得した証明書を登録します |
9. 詳細情報
- Node-RED (
/ui/flow) — 同一のタグ値をフローで加工・外部送信。자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우参照。 - REST API — 同一のデータを HTTP で直接取得可能です。
고급 / 통합 파트너용 → REST API参照。 - ドライバ技術リファレンス → OPC-UA — ゲートウェイの OPC-UA クライアント 側 (外部 OPC-UA サーバーに接続してデータを取得する経路) の説明。