Client SDKの構成
Empress iData OPC UA Client SDKはWindows、Linuxで圧縮ファイルとして提供されます。Windows用のEmpress iData OPC UA Server圧縮ファイルが展開された構成例は以下の通りになります。
│ ├─docs (ClientとClient APIレファレンスマニュアル) │ ├─examples │ addnodes.c │ addreferences.c │ basic128_anonymous.c │ basic256sha256_userpass.c │ browse.c │ browse_next.c │ call.c │ deletenodes.c │ deletereferences.c │ noauth_anonymous.c │ publish1.c │ publish_mt.c │ read_custom.c │ read_multiple.c │ read_one.c │ write_custom.c │ write_multiple.c │ write_one.c │ ├─include │ ├─ID_UAClient │ ├─openssl │ └─UA-AnsiC │ └─lib
includeフォルダー
includeのフォルダー内には2つのサブフォルダーがあります。
ID_UAClient
Empressが提出するSDKのAPIを使用するために必要なヘーダーファイル(.h)があり、ヘーダーファイルに以下のAPIが記述されています。
1.新しいID_UaClientのインスタンス化
2.接続、証明書インフラストラクチャの設定、およびクライアント情報の構成
3.OPC UAサービスの呼び出し (例: Read, Write, Call, Publish)
UA-AnsiC
Empressが提出するSDKのAPIを使用するために必要なヘーダーファイル(.h)があり、ヘーダーファイルに以下のAPIが記述されています。
1.新しいID_UaClientのインスタンス化
2.接続、証明書インフラストラクチャの設定、およびクライアント情報の構成
3.OPC UAサービスの呼び出し (例: Read, Write, Call, Publish)libフォルダー
libフォルダー
libフォルダー内には各OSに使われるライブラリーファイルが格納されていますが、デフォルトではOpenSSLのライブラリーは提供されません。使用する場合はインストールして下さい。
examplesフォルダー
win64_bin folder
Visual Studio 2012でコンパイルされた64ビットウィンドウ用のコンパイル済み実行可能ファイルが含まれています。各実行可能ファイルは、サンプルフォルダーにある.cファイルと1対1で対応しています。すべての実行可能ファイルは次の形式で実行されます。
[prog].exe [host]
たとえばIP:10.0.0.1、ポート4840で実行されているOPC UA Serverでread_oneを実行するコマンドは
read_one.exe opc.tcp://10.0.0.1:4840になります。
Project 1: noauth_anonymous.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.anonymous authenticationでセキュリティを使用しないようにクライアントを設定します。
3.正しいエンドポイントを使用してOPC UAサーバとの接続とセッションを確立します。
Project 2: basic128_anonymous.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.anonymous authenticationでBasic128Rsa15ポリシーを使用するようにクライアントを構成します。
3.正しいエンドポイントを使用してOPC UAサーバとの接続とセッションを確立します。
Project 3: basic256sha256_userpass.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.password authenticationでBasic256Sha256ポリシーを使用するようにクライアントを設定します。
3.正しいエンドポイントを使用してOPC UAサーバとの接続とセッションを確立します。
Project 3: basic256sha256_userpass.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.password authenticationでBasic256Sha256ポリシーを使用するようにクライアントを設定します。
3.正しいエンドポイントを使用してOPC UAサーバとの接続とセッションを確立します。
Project 4: read_one.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.サーバ上の1つの VariableNodeの値を読み取ります。
Project 5: read_multiple.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティおよびanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.1つの読み取り要求で複数のVariableNodesの値を読み取ります。
4.1つの読み取り要求で複数のNodeの異なるAttributeを読み取ります。
Project 6: write_one.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティおよびanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.サーバ上の1つのVariableNodeの値を書き込みます。
Project 7: write_multiple.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.1つの書き込み要求で複数のVariableNodesの値を書き込みます。
4.1つの書き込み要求で複数のNodeの異なるAttributeを書き込みます。
Project 8: call.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.input/output argumentsがゼロのmethodをCallします。
4.input/output argumentsがいくつかあるmethodをCallします。
5.1回のCallでさまざまなinput/output argumentsを使用し複数のmethodを呼び出します。
Project 9: browse.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.1つのStart Targetを送信してAddressSpaceを横断します。
4.複数のstart targetを送信して1つのブラウズリクエストを実行します。
Project 10: browse_next.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.continuation pointを有するBrowse()リクエストを送信します。
4.BrowseNext()を使用してcontinuation pointを持つすべてのデータを取得します。
Project 11: publish1.c
サンプルプロジェクトは以下の機能を示します。
1.新しいID_UaClientインスタンスを作成します。
2.セキュリティとanonymous authenticationなしでOPC UAサーバとのセッションを確立します。
3.CreateSubscriptionとCreateMonitoredItemsを使用してsubscriptionを設定します。
4.Publishを使用してnotifications/keep-alivesを受信します。
Project 12: publish_mt.c
サンプルプロジェクトは以下の機能を示します。
1.各々のスレッドが1つのID_UaClientを持つ2つのスレッドを作成します。
2.各スレッドのクライアントはOPC UAサーバとの個別のセッションを確立します。
3.1つのスレッドがサブスクリプションを作成し、Publish()を繰り返し送信します。
4.1つのスレッドが他のスレッドによってモニターされているNodeに書き込みます。