[OPC UA] C# UA-.NETStandardでPLCと接続する
OPC UAとは
OPC UA(Open Platform Communications Unified Architecture)は、産業自動化(ファクトリーオートメーション)の分野で広く使われている「オープンかつセキュアで、ベンダーに依存しない通信プロトコルの国際標準(IEC 62541)」です。
一言で言えば、「メーカーが異なるPLC、センサー、ロボット、そして上位のITシステム(MES/ERP)の間で、安全かつスムーズにデータをやり取りするための共通言語」です。
UA-.NETStandard
OPC FOUNDATION のサンプルを使って接続してみます
OPC FOUNDATION のホームページ
ダウンロード
ダウンロードはこちら
GitHub OPCFoundation/UA-.NETStandard-Samples
サンプルの実行
- ダウンロードしたファイルを展開してVisualStudioで UA Sample Applications.sln を開きます
- ソリューション エクスプローラでUA Sample Clientをスタートプロジェクトに設定して実行します
-
表示されたフォームのアドレス記入枠にURLを記入して[Connect]ボタンを押すとセキュリティポリシーを選択するダイアログが表示されます (例: opc.tcp://192.168.0.21:4840)
UA-.NETStandard Server Configuration
- 接続が成功するとオブジェクトが表示されるのでPLC名称の下のGlovalVarsを開きます
-
GlovalVarsの変数のいづれかで右クリックしてReadを選択するとReadダイアログが表示されます
UA-.NETStandard Readダイアログ
-
ReadダイアログのGlovalVarsの変数のうちモニタしたい変数を右の窓にドラッグして[Next>]ボタンを押します
UA-.NETStandard Read
-
変数の値が表示されます
UA-.NETStandard Read画面
OPC UA .NET SDK
SDKを使って接続してみます
こちらは有償のSDKですがテストで使う分なら連続30分間の使用が可能です
アプリを再起動したらまた30分間テストできます
ダウンロード
参照に追加
- ダウンロードしたファイルを展開しておきます
- Visual Studioで新規でWindowsフォームアプリを作成します
-
ソリューションマネージャで参照の追加を開いて展開したフォルダの下のnet471フォルダ(.NET framework 4.6.1の場合)のファイルを追加します
(Opc.UaFx.Client.dllだけでもよさそうです)Visual Studio 参照マネージャ
SDKを使ったフォームを作成して実行
-
フォームにボタンとテキストボックスを配置します
OPC UA .NET SDK Form 
-
コードはこんな感じです
OpcClient("opc.tcp://192.168.0.21:4840")でインスタンスを作成して
client.Connect()で接続して
client.ReadNode("ns=4;s=uaInt")で変数の値を読み出します
using System; using System.Windows.Forms; using Opc.UaFx.Client; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using (var client = new OpcClient("opc.tcp://192.168.0.21:4840")) { client.Connect(); var value = client.ReadNode("ns=4;s=uaInt"); Console.WriteLine("value = " + value); textBox1.Text = value.ToString(); } } } } -
ボタンを押すと変数の値を読み出せます
OPC UA .NET SDK 実行画面
ns=4;s=uaInt の意味
- ns=4 → Namespace Index
- s=uaInt → 変数名
よくある質問(FAQ)
OPC UAのデフォルトポート番号は?
通常は4840です。
NodeIdはどこで確認できますか?
UA ExpertやUA Sample Clientから確認できます。
OPC UAとMQTTはどちらが良いですか?
設備データ取得はOPC UA、クラウド連携はMQTTが適しています。
<