opcua
opcuaモジュールは、JSHアプリケーションからOPC UAサーバーを読み書きするクライアントAPIを提供します。
Client
OPC UAクライアントオブジェクトです。
作成
new Client(options)- 戻り値:
Client optionsを省略すると、例外(missing client options)が発生します。
オプション
| オプション | 型 | 既定値 | 説明 |
|---|---|---|---|
| endpoint | string | "" | OPC UAサーバーのエンドポイント(opc.tcp://host:port) |
| readRetryInterval | number | 100(100ms未満の場合は100に補正) | read()の再試行間隔(ミリ秒) |
| messageSecurityMode | number | MessageSecurityMode.None | セキュリティモード。MessageSecurityModeを参照 |
使用例
| |
close()
クライアント接続を閉じます。
構文
close()- 戻り値: 成功時は
null
read()
指定したノード一覧の値を読み取ります。
構文
read(readRequest)パラメーター
readRequest(object): ReadRequest
戻り値
object[]: ReadResultの配列
エラー時の動作:
nodesがない場合や空の場合は、例外が発生します。
write()
1つ以上のノード値を書き込みます。
構文
write(...writeRequest)パラメーター
writeRequest(object, 可変長引数): WriteRequest
戻り値
object: WriteResult
エラー時の動作:
- 引数がない場合は例外(
missing argument)
使用例
| |
browse()
1つ以上のノードの参照を検索します。
構文
browse(browseRequest)パラメーター
browseRequest(object): BrowseRequest
戻り値
object[]: BrowseResultの配列
エラー時の動作:
nodesがない場合や空の場合は、例外が発生します。
使用例
| |
browseNext()
browse()またはbrowseNext()が返した継続ポイントを使って、次のページを取得します。
構文
browseNext(browseNextRequest)パラメーター
browseNextRequest(object): BrowseNextRequest
戻り値
object[]: BrowseResultの配列
エラー時の動作:
continuationPointsがない場合や空の場合は、例外が発生します。
使用例
| |
children()
指定したノードの直接の子参照を返します。
構文
children(childrenRequest)パラメーター
childrenRequest(object): ChildrenRequest
戻り値
object[]: ChildrenResultの配列
エラー時の動作:
nodeがない場合や空の場合は、例外が発生します。
使用例
| |
ReadRequest
| プロパティ | 型 | 既定値 | 説明 |
|---|---|---|---|
| nodes | string[] | 読み取るOPC UAノードIDの一覧 | |
| maxAge | number | 0 | 許容するキャッシュの経過時間(ミリ秒) |
| timestampsToReturn | number | TimestampsToReturn.Neither | タイムスタンプの返却方針 |
ReadResult
| プロパティ | 型 | 説明 |
|---|---|---|
| status | number | OPC UAステータスコード(uint32) |
| statusText | string | 状態テキスト |
| statusCode | string | ステータスコード名(例:StatusGood) |
| value | any | 読み取った値 |
| type | string | 値の型名(例:Boolean、Int32、Double) |
| sourceTimestamp | number | ソースタイムスタンプ(Unixエポックミリ秒) |
| serverTimestamp | number | サーバータイムスタンプ(Unixエポックミリ秒) |
WriteRequest
| プロパティ | 型 | 説明 |
|---|---|---|
| node | string | 書き込み先のノードID |
| value | any | 書き込む値 |
WriteResult
| プロパティ | 型 | 説明 |
|---|---|---|
| error | Error|null | リクエスト処理のエラー |
| timestamp | number | レスポンスタイムスタンプ(Unixエポックミリ秒) |
| requestHandle | number | OPC UAリクエストハンドル |
| serviceResult | number | OPC UAサービスの結果コード |
| stringTable | string[] | OPC UA文字列テーブル |
| results | number[] | ノードごとのステータスコードの配列 |
BrowseRequest
| プロパティ | 型 | 既定値 | 説明 |
|---|---|---|---|
| nodes | string[] | 検索するOPC UAノードIDの一覧 | |
| browseDirection | number | BrowseDirection.Forward | 検索方向 |
| referenceTypeId | string | すべての参照 | 追跡する参照型のノードID |
| includeSubtypes | boolean | true | referenceTypeIdのサブタイプを含めるかどうか |
| nodeClassMask | number | 0 | 含めるノードクラスのビットマスク |
| resultMask | number | BrowseResultMask.All | 返すフィールドのビットマスク |
| requestedMaxReferencesPerNode | number | 0 | サーバーがページ分割して返す、ノードごとの最大参照数のヒント |
BrowseNextRequest
| プロパティ | 型 | 既定値 | 説明 |
|---|---|---|---|
| continuationPoints | string[] | browse()またはbrowseNext()が返したbase64形式の継続ポイントの一覧 | |
| releaseContinuationPoints | boolean | false | 次の参照を要求せずに、サーバー側の継続ポイントを解放するかどうか |
BrowseResult
| プロパティ | 型 | 説明 |
|---|---|---|
| status | number | OPC UAステータスコード(uint32) |
| statusText | string | 状態テキスト |
| continuationPoint | string | base64形式の継続ポイント。次のページがない場合は空文字列 |
| references | object[] | BrowseReferenceの配列 |
BrowseReference
| プロパティ | 型 | 説明 |
|---|---|---|
| referenceTypeId | string | 参照型のノードID |
| isForward | boolean | 順方向の参照かどうか |
| nodeId | string | 対象のノードID |
| browseName | string | ブラウズ名 |
| displayName | string | 表示名 |
| nodeClass | number | OPC UAノードクラスの値 |
| typeDefinition | string | 型定義のノードID |
ChildrenRequest
| プロパティ | 型 | 説明 |
|---|---|---|
| node | string | 親ノードID |
| nodeClassMask | number | 含めるノードクラスのビットマスク |
ChildrenResult
| プロパティ | 型 | 説明 |
|---|---|---|
| referenceTypeId | string | 参照型のノードID |
| isForward | boolean | 順方向の参照かどうか |
| nodeId | string | 子ノードID |
| browseName | string | ブラウズ名 |
| displayName | string | 表示名 |
| nodeClass | number | OPC UAノードクラスの値 |
| typeDefinition | string | 型定義のノードID |
BrowseDirection
BrowseDirection.ForwardBrowseDirection.InverseBrowseDirection.BothBrowseDirection.Invalid
NodeClass
NodeClass.UnspecifiedNodeClass.ObjectNodeClass.VariableNodeClass.MethodNodeClass.ObjectTypeNodeClass.VariableTypeNodeClass.ReferenceTypeNodeClass.DataTypeNodeClass.View
BrowseResultMask
BrowseResultMask.NoneBrowseResultMask.ReferenceTypeIdBrowseResultMask.IsForwardBrowseResultMask.NodeClassBrowseResultMask.BrowseNameBrowseResultMask.DisplayNameBrowseResultMask.TypeDefinitionBrowseResultMask.AllBrowseResultMask.ReferenceTypeInfoBrowseResultMask.TargetInfo
MessageSecurityMode
MessageSecurityMode.NoneMessageSecurityMode.SignMessageSecurityMode.SignAndEncryptMessageSecurityMode.Invalid
TimestampsToReturn
TimestampsToReturn.SourceTimestampsToReturn.ServerTimestampsToReturn.BothTimestampsToReturn.NeitherTimestampsToReturn.Invalid
OPCUAクライアント
この例は、OPC UAサーバーに接続してシステムメトリクスを読み取り、データベースに保存する収集プログラムを実装します。
処理の流れ
- OPC UA連携:
opcuaモジュールでopc.tcp://localhost:4840サーバーに接続し、sys_cpu、sys_mem、load1などのノード値を取得します。 - 定期収集:
setInterval()で10秒ごとにデータを読み取ります。 - データの取り込み:収集した値を、
EXAMPLEテーブルのname、time、value列に保存します。
データ収集プログラム
スクリプトをopcua-client.jsとして保存し、JSHターミナルでバックグラウンド実行してください。
jsh / > opcua-client
jsh / > ps
┌──────┬──────┬──────┬──────────────────┬────────┐
│ PID │ PPID │ USER │ NAME │ UPTIME │
├──────┼──────┼──────┼──────────────────┼────────┤
│ 1044 │ 1 │ sys │ /opcua-client.js │ 13s │
│ 1045 │ 1025 │ sys │ ps │ 0s │
└──────┴──────┴──────┴──────────────────┴────────┘ - opcua-client.js
| |
シミュレーターサーバー
opcua-client.jsをテストするには、必要なシステムメトリクスのノードを提供するOPC UAサーバーが必要です。
実環境がない場合は、以下のリポジトリが提供するシミュレーターを使用してください。
sys_cpu、sys_mem、load1、load5、load15などのサンプルデータを提供し、収集と可視化の流れを検証できます。
設定方法は、リポジトリの手順に従ってください。
https://github.com/machbase/neo-server/tree/main/jsh/native/opcua/test_server
シミュレーターを起動してからopcua-client.jsを実行すると、OPC UAクライアントが接続してデータを収集します。
最終更新日