OPC UA服务器支持三种认证方式,分别是匿名认证、用户认证和证书认证。其中匿名认证安全等级最低,访问不做任何校验。用户认证访问时,OPC UA客户端需要提供用户名及密码认证,只有用户名和密码正确才允许访问。

而证书认证,首先需要将客户端公钥证书提供给OPC UA服务器。然后客户端使用其公钥和私钥证书认证,认证成功后才能访问。

C#访问OPC UA服务器步骤如下:

1. 下载安装OPC UA服务器

OPC UA服务器下载及说明:EasyOPC

2. 连接OPC UA服务器

首先通过NuGet引入最新版OpcUaHelper。

匿名认证:

    ```

                    OpcUaClient opcUaClient = new OpcUaHelper.OpcUaClient();

                    opcUaClient.ConnectServer("opc.tcp://127.0.0.1:4840").Wait();

    ```

用户认证:

```
OpcUaClient opcUaClient = new OpcUaHelper.OpcUaClient(); //用户及密码验证
opcUaClient.UserIdentity = new UserIdentity("test", "123456"); opcUaClient.ConnectServer("opc.tcp://127.0.0.1:4840").Wait(); ``` 证书认证: 读取私钥证书
![读取私钥.PNG][1] ![证书认证.PNG][2]

3. 读取OPC UA节点

```
//读节点值
Double Temp = opcUaClient.ReadNode<Double>("ns=2;s=factory_1/line1/Temp");
```

4. 写OPC UA节点

```
//写节点值
opcUaClient.WriteNode<Double>("ns=2;s=factory_1/line1/Temp", 10.20);
```

5. 订阅OPC UA节点

订阅节点值发生改变,就会执行订阅事件

```
//订阅节点,ns=2;s=factory_1/line1/Temp 节点值发生改变执行事件 opcUaClient.AddSubscription("temp_subscription", "ns=2;s=factory_1/line1/Temp",
(string key, MonitoredItem item, MonitoredItemNotificationEventArgs eventArgs) =>
{
var itemNotification = (MonitoredItemNotification)eventArgs.NotificationValue; Console.WriteLine((double)itemNotification.Value.Value); }); ```

下载源代码

最新文章

  1. Bootstrap_列表组
  2. PIL show() 报错
  3. go学习与记录
  4. Ubuntu14 搭载vim环境查看源码
  5. vmware启动虚拟机报“内部错误”的解决方法
  6. CodeIgniter 引入自定义公共函数
  7. A Tour of Go Exercise: Fibonacci closure
  8. magento install
  9. 关于PS里图层样式的全局光
  10. Struts2--Dynamic Result动态结果集
  11. SP687 REPEATS - Repeats
  12. eclipse向tomcat部署站点发现没有class文件。
  13. Android 正则表达式实例
  14. SCRUM管理之KPI与OKRs结合
  15. 洛谷P1004 方格取数-四维DP
  16. 安卓开发实用技巧:TextView预览
  17. 洛谷P2387 [NOI2014]魔法森林(LCT)
  18. 2016.5.57—— Remove Duplicates from Sorted List
  19. Metronic V1.5.2 Responsive Admin Dashboard Template build with Twitter Bootstrap 3.0
  20. Python 爬验证码

热门文章

  1. ajax与python后端交互
  2. 一文学完Linux常用命令
  3. ASP.NET MVC 处理管线模型
  4. Java命令行传递参数
  5. 《Unix 网络编程》15:Unix 域协议
  6. 看看CabloyJS工作流引擎是如何实现Activiti边界事件的
  7. C++ 炼气期之数据是主角
  8. 对vue响应式的理解
  9. zabbix-5.0自动发现
  10. MOEAD实现、基于分解的多目标进化、 切比雪夫方法-(python完整代码)