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

サンプルの実行

  1. ダウンロードしたファイルを展開してVisualStudioで UA Sample Applications.sln を開きます
  2. ソリューション エクスプローラでUA Sample Clientをスタートプロジェクトに設定して実行します
  3. 表示されたフォームのアドレス記入枠にURLを記入して[Connect]ボタンを押すとセキュリティポリシーを選択するダイアログが表示されます (例: opc.tcp://192.168.0.21:4840)
    UA-.NETStandard Server Configuration
    UA-.NETStandard Server Configuration
  4. 接続が成功するとオブジェクトが表示されるのでPLC名称の下のGlovalVarsを開きます
  5. GlovalVarsの変数のいづれかで右クリックしてReadを選択するとReadダイアログが表示されます
    UA-.NETStandard Readダイアログ
    UA-.NETStandard Readダイアログ
  6. ReadダイアログのGlovalVarsの変数のうちモニタしたい変数を右の窓にドラッグして[Next>]ボタンを押します
    UA-.NETStandard Read
    UA-.NETStandard Read
  7. 変数の値が表示されます
    UA-.NETStandard Read画面
    UA-.NETStandard Read画面

OPC UA .NET SDK

SDKを使って接続してみます
こちらは有償のSDKですがテストで使う分なら連続30分間の使用が可能です
アプリを再起動したらまた30分間テストできます

ダウンロード

OPC UA .NET SDK

参照に追加

  1. ダウンロードしたファイルを展開しておきます
  2. Visual Studioで新規でWindowsフォームアプリを作成します
  3. ソリューションマネージャで参照の追加を開いて展開したフォルダの下のnet471フォルダ(.NET framework 4.6.1の場合)のファイルを追加します
    (Opc.UaFx.Client.dllだけでもよさそうです)
    Visual Studio 参照マネージャ
    Visual Studio 参照マネージャ

SDKを使ったフォームを作成して実行

  1. フォームにボタンとテキストボックスを配置します
    OPC UA .NET SDK Form
    OPC UA .NET SDK Form
  2. コードはこんな感じです
    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();
    			}
    		}
    	}
    }
    		
  3. ボタンを押すと変数の値を読み出せます
    OPC UA .NET SDK 実行画面
    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が適しています。

<

関連ページ

この記事へのコメント