OPC UA サーバー
デバイスデータを OPC UA タグとして公開し、PLC、SCADA システム、その他の産業用クライアントが読み書きできるようにします。
OPC UA(Open Platform Communications Unified Architecture)は、デバイス、PLC、SCADA システム間でデータを交換するための産業用通信プロトコルです。OPC UA Server はエッジコンテナーサービスで、デバイス上のタグを公開し、産業用クライアントが推論結果を読み取り、値を書き戻せるようにします。
Deployment Manager の Configuration タブでタグ、フォルダー、サーバー設定を定義し、その後 OPC UA クライアントをデバイスに向けます。
接続の詳細
置き換えてください <device-ip> を、Deployment Manager のデバイスページに表示される IP アドレスに。
OPC UA エンドポイント
opc.tcp://<device-ip>:4840/opcua/server
Web UI と REST API
http://<device-ip>:8092
4840
OPC UA バイナリ
産業用クライアント接続(PLC、SCADA)
8092
HTTP
Web UI、REST API、ドキュメント
構成ソース
Configure モーダル上部の「Configuration Source」トグルは、タグとフォルダーの構成元を制御します。デバイス上で有効なのは常に 1 つのソースだけです。
「Web UI」
OPCUA_CONFIG
モーダル内でタグ、フォルダー、サーバー設定をその場で定義したい場合に使います。これがデフォルトです。
「File」
OPCUA_CONFIG_FILE
設定が環境変数には大きすぎる場合、たとえば数千個のタグを持つデプロイメントなどです。サーバーにデバイス上のパスを指定します(例: /data/opcua-config.json).
「File」モードでは、起動時にファイルが存在し、読み取り可能で、空でないことをサーバーが検証し、そのいずれかを満たさない場合は明示的なログエントリを出して起動に失敗します。 OPCUA_CONFIG_FILE が優先されます OPCUA_CONFIG.
ソースを切り替えると、モーダルを開いている間はインラインの値とファイルパスの両方が保持されます。保存時には選ばなかった方のソースが消去されるため、2 つの変数のうち実際に設定されるのは 1 つだけです。「File」モードでは、サービスカードにインラインのタグ一覧の代わりに設定済みのファイルパスが表示されます。
サーバー設定
「Server Name」
ネットワークを閲覧するクライアントに表示される、サーバーインスタンスの人間が読める名前。
「Namespace URI」
タグが登録されるサーバーの名前空間を識別する一意の URI。既定値は http://opcua.roboflow.run.
「Max Sessions」
同時に接続できる OPC UA クライアント数。既定値は 200.
各クライアントは 1 セッションを保持します。これには、タグを書き込む各推論ポッドや各 SCADA 接続も含まれます。クラッシュしたクライアントのセッションは、サーバーがタイムアウトさせたときにのみ解放されるため、稼働中のクライアント数より多くのセッションが稼働サイトで保持されることがあります。上限に達すると、それ以降のクライアントは BadTooManySessions で拒否され、タグの更新も止まります。サイトが既定より多くの同時クライアントを運用する場合は、この値を増やしてください。モーダルで設定するとサーバー設定に書き込まれ、 OPCUA_MAX_SESSIONS は、手動管理されたデプロイメントではデバイスごとに上書きできます。
フォルダーとタグ
フォルダーはタグを階層構造に整理します。各フォルダーには名前と任意の説明があり、OPC UA のアドレス空間ではノードとして表示されるため、クライアントはタグを参照して見つけられます。タグはフォルダーに属することも、ルートレベルに置くこともできます。
タグはサーバーが公開するデータポイントを定義します。各タグには次のフィールドがあります。
「Display Name」
OPC UA クライアントに表示される、人間が読める名前。
「Browse Name」
アドレス空間で使用されるプログラム的な識別子。表示名から生成されます。
「Data Type」
そのタグが保持する値の型。
「Access Level」
そのタグが ReadWrite または ReadOnly.
「Folder」
そのタグが属するフォルダー。未割り当ての場合は Root。
「Initial Value」
サーバー起動時の開始値。データ型に対して検証されます。
「Description」
そのタグの用途を説明する任意のラベル。
データ型
Boolean
真または偽
true
Int32
32 ビット符号付き整数
42
Float
32 ビット浮動小数点数
3.14
Double
64 ビット浮動小数点数
3.14159265359
String
UTF-8 テキスト
実行中
DateTime
ISO 8601 タイムスタンプ
2024-01-15T10:30:00Z
これらは Configure モーダルで選択できる型です。手書きの構成ファイルでは Int16, UInt16、および UInt32、これらをサーバーが受け付けます。
アクセスレベル
ReadWrite タグは、REST API、CLI、Web UI と同様に、OPC UA クライアントから読み書きできます。制御出力、設定値、ユーザーが調整できる値に使用します。
ReadOnly タグは OPC UA クライアントからの書き込みを BadNotWritableで拒否します。REST API、CLI、Web UI はアクセスレベルに関係なく値を更新できるので、 ReadOnly を、センサー値、計算された出力、そしてデバイスだけが生成すべきシステム状態に使用してください。
任意の制約
数値型は許容範囲を制限するための「Min Value」と「Max Value」に加え、説明用の単位ラベル(例: °C、PSI、RPM)として「Engineering Units」をサポートします。文字列型は文字数上限のための「Max Length」をサポートします。
認証
サーバーは既定で SecurityPolicy None を使用し、匿名接続を許可します。Configure モーダルで「Require authentication」をオンにすると、すべてのクライアントにユーザー名とパスワードを要求します。
トグルがオンのときは、ユーザー名とパスワードの両方を指定する必要があります。パスワードは保存前に bcrypt でハッシュ化されるため、元の値は保存されず、後で取得することもできません。既存のサーバーのパスワードを変更するには、Configure モーダルで新しいパスワードを入力します。現在のパスワードを維持するには、フィールドを空欄のままにします。トグルをオフにすると匿名アクセスに戻ります。
認証情報は 2 つの環境変数として保存され、必ず両方を同時に設定するか、両方とも未設定のままにする必要があります。
OPCUA_USERNAME
クライアント認証用のプレーンテキストのユーザー名。
OPCUA_PASSWORD_HASH
ソルトラウンド 10 の bcrypt ハッシュ。先頭は $2b$10$.
タグレポート
サーバーはスケジュールに従ってタグを Roboflow にレポートできるため、現地に行かなくても何を公開しているか確認できます。これは Configure モーダルの「Tag Reporting」セクションで設定します。
「Send periodic tag reports」
レポート送信のオン・オフを切り替えます。既定ではオンです。
「Include tag values」
各タグの現在値を送信します。オフにするとタグ数のみを送信します。既定ではオンです。
「Reporting Interval」
レポート間の秒数。既定値は 60 です。
これらの設定は環境変数として保存され、サーバーは起動時に読み込みます。
OPCUA_SNAPSHOT_INTERVAL_SECONDS
60
レポート間の秒数。 0 レポート送信をオフにします。
OPCUA_SNAPSHOT_INCLUDE_VALUES
true
false タグ数のみを送信します。
OPCUA_SNAPSHOT_TTL_SECONDS
算出値
レポートが最新として保持される時間。モーダルはこれを間隔から算出し、保存するたびに書き直します。
サーバーが受け付けない値が指定されると、既定値にフォールバックするのではなくレポート送信がオフになります。そのため、 টাইポがあるとレポートは停止します。デバイスページでは、そのようなデバイスはレポートしていないものとして表示されます。
これらの変数のいずれかが参照設定({$ref})になっている場合、モーダルはレポート設定を編集できず、保存時もそのまま残します。フォームからレポートを管理するには、参照をリテラル値に置き換えてください。
監視
デバイスページには、接続中のクライアント数、「Max Sessions」に対する使用中セッション数、そして最新のタグレポートを表示する OPC UA のライブステータスカードが表示されます。タグレポートより古いイメージ上のデバイスでは、レポートの代わりにその旨が表示されます。
サーバーがセッション上限に達して新しいクライアントを拒否すると、カードにはセッション数、上限、そして拒否されたクライアント数を示すバナーが表示されます。これについてメールを受け取るには、デバイスの「Device Alerts」タブから「OPC UA Refusing Clients」アラートを追加し、最初に何分間の拒否を許可するかを設定してください。参照: デバイスアラートを設定.
Web インターフェース
サーバーは次の場所に Web インターフェースを提供します http://<device-ip>:8092.
ダッシュボード
/
現在値付きで構成済みの全タグを 2 秒ごとに更新して表示します。アクセスレベルに関係なく、どのタグの値も編集ダイアログから編集できます。
ドキュメント
/docs.html
サーバーガイド、設定形式のリファレンス、トラブルシューティングの注意事項。
API エクスプローラー
/api/docs
エンドポイントのテストやリクエスト/レスポンススキーマの確認ができる、対話型の Swagger UI。
HTTP API
REST API は、タグ値とサーバー情報にプログラムからアクセスする手段を提供します。すべてのエンドポイントは JSON を返します。ベース URL は http://<device-ip>:8092/apiです。 サービス すべてのオンデバイスサービス API に共通するルールについては
タグ構造は実行時に不変です。タグとフォルダーは OPCUA_CONFIG 環境変数、または次で指定されたファイルから取得されます OPCUA_CONFIG_FILE 大規模な構成向けであり、この API では作成、変更、削除はできません。書き込めるのは値だけです。
タグ値の読み書き
accessLevel はこの API ではなく OPC UA プロトコルを制御します。 ReadOnly とマークされたタグは、OPC UA クライアントからの書き込みを BadNotWritable で拒否しますが、ここでは書き込み可能なままです。これにより、パイプラインが産業用クライアントが読み取るだけにすべきセンサー値を公開できます。
Returns all configured tags with their current values.
List of tags with current values
GET /api/tags HTTP/1.1
Host: device-ip:8092
Accept: */*
List of tags with current values
{
"tags": [
{
"id": "text",
"nodeId": "text",
"displayName": "text",
"dataType": "Boolean",
"accessLevel": "ReadOnly",
"currentValue": true,
"lastUpdated": "2026-01-01T00:00:00.000Z",
"folder": "text"
}
]
}Returns a single tag with its current value.
Tag ID
Tag with current value
Tag not found
GET /api/tags/{id} HTTP/1.1
Host: device-ip:8092
Accept: */*
{
"tag": {
"id": "text",
"nodeId": "text",
"displayName": "text",
"dataType": "Boolean",
"accessLevel": "ReadOnly",
"currentValue": true,
"lastUpdated": "2026-01-01T00:00:00.000Z",
"folder": "text"
}
}Updates the value of a tag. Tags with accessLevel: "ReadOnly" reject writes over the OPC UA protocol but remain writable through this endpoint.
Tag ID
New value to set
Updated tag with new value
Missing value, unknown tag, type mismatch, or constraint violation. Note that an unknown tag returns 400 here, not 404. Use GET /tags/{id}, which returns 404, to tell an unknown tag from a bad value.
PUT /api/tags/{id}/value HTTP/1.1
Host: device-ip:8092
Content-Type: application/json
Accept: */*
Content-Length: 14
{
"value": true
}{
"tag": {
"id": "text",
"nodeId": "text",
"displayName": "text",
"dataType": "Boolean",
"accessLevel": "ReadOnly",
"currentValue": true,
"lastUpdated": "2026-01-01T00:00:00.000Z",
"folder": "text"
}
}書き込みは 400 で拒否されます。値が欠けている場合、型がタグの dataTypeと一致しない場合、または設定された minValue, maxValue、または maxLengthの範囲外にある場合です。存在しないタグへの書き込みも 400を返し、 404. GET /tags/{id} は 404を返すため、不明なタグと不正な値を区別したい場合に使ってください。
設定エンドポイント
実行中の構成を読み取り専用で確認でき、書き込み前にタグ ID とその制約を見つけるのに役立ちます。
Returns the complete server configuration, including server settings, folders, and tag definitions. Read-only.
Full configuration
Configuration version
GET /api/config HTTP/1.1
Host: device-ip:8092
Accept: */*
Full configuration
{
"version": 1,
"server": {
"port": 1,
"namespace": "text",
"serverName": "text",
"maxSessions": 1
},
"folders": [
{
"id": "text",
"name": "text",
"description": "text"
}
],
"tags": [
{
"id": "text",
"nodeId": "text",
"browseName": "text",
"displayName": "text",
"description": "text",
"dataType": "Boolean",
"folderId": "text",
"accessLevel": "ReadOnly",
"initialValue": true,
"engineeringUnits": "text",
"minValue": 1,
"maxValue": 1,
"maxLength": 1
}
]
}セッションと正常性
いったん maxSessions に達すると、それ以降のクライアントは BadTooManySessionsで拒否されるため、 sessionCount と maxSessions を比較して余裕を確認します。
1 つの 200 からの /subscriptions セッション一覧が空で、 maxSessions が省略されている場合は、OPC UA サーバーが起動していないことを意味します。ウォームアップではなく停止として扱ってください。エンドポイントが何らかの応答を返すなら、起動はすでに完了しているか失敗しています。次で確認してください /health、これが返す status: "unhealthy" および opcuaServer: "stopped".
maxSessions この場合はゼロ化されず省略されます。そうすることで、 maxSessions - sessionCount を計算する利用者が、未知の上限を満杯として読み違えないようにします。
Returns the connected OPC UA clients and the tags each one is monitoring. Compare sessionCount against maxSessions for headroom before clients start being refused with BadTooManySessions.
A 200 with a zeroed session list and maxSessions omitted means the OPC UA server is not running. Treat it as an outage rather than a warm-up and confirm with /health. maxSessions is omitted rather than zeroed so a consumer computing maxSessions - sessionCount does not read an unknown cap as a full one.
Sessions and their subscriptions
Number of active sessions
Configured maximum concurrent sessions, for headroom against sessionCount. Omitted when the OPC UA server is not running.
Total number of subscriptions across all sessions
GET /api/subscriptions HTTP/1.1
Host: device-ip:8092
Accept: */*
Sessions and their subscriptions
{
"sessionCount": 1,
"maxSessions": 1,
"subscriptionCount": 1,
"sessions": [
{
"sessionId": "text",
"sessionName": "text",
"clientDescription": "text",
"connectedAt": "2026-01-01T00:00:00.000Z",
"lastContactTime": "2026-01-01T00:00:00.000Z",
"subscriptionCount": 1,
"subscriptions": [
{
"subscriptionId": 1,
"publishingInterval": 1,
"monitoredItemCount": 1,
"monitoredItems": [
{
"nodeId": "text",
"displayName": "text",
"samplingInterval": 1
}
]
}
]
}
]
}/health を返します 200 OPC UA サーバーが起動しているかどうかにかかわらず。確認するのは status および opcuaServer ではなくステータスコードです。
Returns the health status of the OPC UA server and API.
Health status. Returns 200 even when the OPC UA server is stopped, with status set to unhealthy.
Overall server health status
OPC UA server status
Server uptime in seconds
Number of configured tags
Why the OPC UA server is not running. Present only when opcuaServer is "stopped".
GET /api/health HTTP/1.1
Host: device-ip:8092
Accept: */*
Health status. Returns 200 even when the OPC UA server is stopped, with status set to unhealthy.
{
"status": "healthy",
"opcuaServer": "running",
"uptime": 3600,
"tagCount": 5
}CLI
この opcua-cli ツールは、Web UI に到達できないときに、デバッグ、スクリプト、簡単なタグ操作のためのターミナルアクセスをサーバーに提供します。
list, ls
現在値付きで全タグを一覧表示
read <tag>
特定のタグ値を読み取る
write <tag> <value>
タグに値を書き込む
status
サーバーの正常性と稼働時間を表示
clients
接続中の OPC UA クライアントを一覧表示
clients --detailed
サブスクリプション詳細付きでクライアントを一覧表示
export
構成を JSON としてエクスポート
ロギング
設定 LOG_LEVEL をサービス側で設定して、詳細度を制御します。 デバイス構成を更新 サービスの環境変数をどこで編集するかは デバイスログを表示 を参照して出力を読み取ってください。
DEBUG
詳細な診断情報
INFO
一般的な運用メッセージ(デフォルト)
WARN
動作を停止しない潜在的な問題
ERROR
機能に影響するエラー
値は大文字小文字を区別せず、認識されない値はフォールバックします INFO.
最終更新
役に立ちましたか?