OPC-UA ノードビューアの使い方 (/ui/opcua)
ゲートウェイ自体が OPC-UA サーバー を内蔵しており、収集したタグ値を外部の OPC-UA クライアント(SCADA、HMI)へそのまま公開します。このページは、その内蔵サーバーの 接続情報 と ノードツリー(タグ一覧 + リアルタイム値 + 時系列) を 1 画面で確認できるビューアです。
- 実装: Eclipse Milo 0.6.16 (Apache 2.0)
- OPC UA スペック: 1.04 (IEC 62541:2020)
- Transport: opc.tcp:// (default port 12000) / opc.tcp+TLS (12443)
- Security policies: None / Basic128Rsa15 / Basic256 / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss
- User token: Anonymous (
opc.ua.server.anonymous=yesdefault) / UserName+Password / X.509 - Encoding: UA Binary
- Profile: Standard 2017 Server
- PubSub MQTT (1.05): 未対応 — 発行が必要な場合は Sparkplug B を使用
左メニューの OPC-UA ビューア、または直接 http://<gateway>/ui/opcua へ移動します。
1. 画面構成
| 領域 | 内容 |
|---|---|
| 上部 エンドポイントパネル | 外部クライアントが接続する TCP / TLS Endpoint URL、Application Name、Namespace Index、認証情報 (Username / Anonymous 許可の有無 / Password トグル) |
| 左側 ノードツリー | 사이트 → OPC → 태그 の 3 階層ツリー。各 OPC の 接続状態(CONNECTED/DISCONNECTED/UNKNOWN) とタグ数、各タグの 最新値 をインラインで表示 |
| 右側 ノード詳細 | ツリーで選択したノードのメタ情報 + リアルタイム値 + (数値/ブーリアンタグの場合) 時系列チャート |
上部の エンドポイント URL の横にある コピー アイコンで一括コピーでき、Password 欄をクリックすると(認証済みセッションの場合)平文が表示されます。
2. NodeId の規約
各タグは次のような OPC-UA NodeId として公開されます。
ns=2;s=<SITE_ID>.<OPC_ID>.<TAG_ID>
例: ns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
外部クライアント(UaExpert、KEPServerEX、Ignition など)から、この NodeId で直接サブスクライブできます。詳細パネルの NodeId 右側に コピー ボタンがあり、クリップボードへ簡単に取り込めます。
3. ノードツリー — 検索 / 更新
- ツリー上部の検索欄にテキストを入力すると、ツリー・OPC・タグ名を リアルタイム部分一致 でフィルタリングします。一致が子孫にある場合は、親(OPC、サイト)も自動的に展開して表示します。
- 検索欄右側の更新(↻)アイコン — キャッシュされたツリー/エンドポイント情報を再取得します。通常は自動で更新されるため、ほとんど押す必要はありません。
- 各行の ◂/▾ トグルでサブツリーを折りたたみ/展開できます。検索が有効な間は一致箇所を表示するために自動展開され、検索を空にすると直前のトグル状態に復元されます。
- 長い値の自動省略 (ellipsis) — ツリーノードの 現在値 がカラム幅を超えると
text-overflow: ellipsisで…処理されます。マウスホバー時に tooltip で全文が表示されます — 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 チャート が描画されます — 同じ値が連続する区間を 1 つのボックスにまとめ、視覚的に 状態変化のタイミング を強調する形式です。
| 項目 | 説明 |
|---|---|
| ボックス = 同じ値の連続区間 | 例: "RUNNING" が 12:00〜12:35 の間維持された場合、その区間で 1 つのボックス |
| ボックスの色 | 値のハッシュベースで自動 — 同じテキストは常に同じ色 |
| ボックスのラベル | 値の平文 (長い場合はホバーで全文) |
| 時間軸の zoom/pan | vis の標準インタラクション (mouse wheel / drag) |
| 更新 | ポーリング時に history を ASC ソートしてデータセット全体を再構成 (変動がほとんどなければちらつきなし) |
| ノード変更時 | disposeStringTimeline() でインスタンスを destroy し、新しいノードのチャートを再生成 |
STRING チャートは ステートマシン のログ(
READY → RUNNING → ERROR → IDLE)のような非数値の時系列を一目で把握するのに適しています。同じ方式は タグ値の推移を見る (tag-view) にも適用されます。
5. EDGE システムタグ
EDGE_<...> で始まる仮想 OPC が 1 つ、自動的にツリーに表示されます。これはゲートウェイ自身の状態を OPC-UA ノードとして公開するシステムタグの集合です。
代表的なタグ:
| タグ名(Description) | 意味 |
|---|---|
THREAD_COUNT | Java スレッド数 |
TAG_COUNT | 登録済みタグの総数 |
SERVER_STARTED_TIMESTAMP | サーバー起動時刻(epoch ms) |
OPC_CONNECTED_COUNT | 接続 OK の OPC 数 |
HEAP_USED_MB | JVM ヒープ使用量(MB) |
EDGE システム OPC の 接続状態 は 常に CONNECTED と表示されます(自分自身のため接続という概念がありません)。
6. 外部クライアントと併用する — 流れ
- この画面で TCP Endpoint をコピーします (例:
opc.tcp://<gateway>:12000)。 - UaExpert / KEPServerEX などの OPC-UA クライアントで新規サーバーを追加 → 上記 URL を入力。
- 認証モード:
- Anonymous が有効な場合(上部パネルに Anonymous 許可 と表示)、そのまま接続。
- そうでない場合は Username / Password を使用 (Password は上部パネルでクリックすると一時的に平文で確認できます)。
- 接続後、NodeId
ns=2;s=...形式のタグをそのままサブスクライブ。
7. トラブルシューティング
| 症状 | 点検ポイント |
|---|---|
| ツリーに OPC が表示されない | 자주 하는 작업 → 새 PLC 연결 추가 が完了しているか、ゲートウェイでその OPC の 収集自動開始 オプションが有効になっているか |
タグ横の値が - と表示される | 該当タグが一度も更新されていない。収集開始 / OPC 接続 / Quality を点検 |
| ツリーには見えるが外部クライアントが NodeId を見つけられない | 誤入力、または OPC-UA サーバーが無効。app.properties の opc.ua.server.tcp.enable=true を確認 |
| チャートが空 | そのタグの Cassandra history がまだない(登録したばかりのタグ) — しばらく待つと点が追加されます |
| チャートがギザギザに見える | 範囲を 24時間 に広げると自動ダウンサンプリングが働き、滑らかになります |
라이센스/CN 인증서 警告 (TLS エンドポイント) | ゲートウェイの自己署名証明書 — クライアント側で "Trust" 処理。社内証明書の適用は運用担当者へ問い合わせ |
8. さらに詳しく
- Node-RED (
/ui/flow) — 同じタグ値をフローで加工/外部送信。자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우を参照。 - REST API — 同じデータを HTTP で直接取得できます。
고급 / 통합 파트너용 → REST APIを参照。 - ドライバ技術リファレンス → OPC-UA — ゲートウェイの OPC-UA クライアント 側(外部 OPC-UA サーバーに接続してデータを取得する経路)の説明。