OPC UA的源码使用

        最近接到了坑爹的任务,要做个opc ua服务器,让wincc能连接上,opc ua这个东西从来都没有听过,就是因为懂c#就要写了,确实有点尴尬,入门就去看了opc,ua之前的版本,发现很复杂,后来发现了opc ua的存在,解决了很多问题,而且很好有,推荐大家使用,不要再搞opc这坑爹东西。毕竟防火墙就搞傻人了。而且在win10上也很难搞的。opc ua就解决了这些问题。下载了官方github的源码。直接用vs2017运行,新版的代码在vs2015上是运行不了的。

1、修改上的坑

        着手改动显示的节点,这个改动是在UnderlyingSystem.cs这个文件中,打开文件时就能看到s_BlockPathDatabase和s_BlockDatabase这两个string的数组,从数组的内容就知道是节点和节点的内容了,在看看下面的FindSegments(),FindSegment(),findBlocks(),findBlock(),这几个函数的写法,其实就是解析这两个数组,如果是segment就继续返回segment,如果是block就显示内容,这里有两个概念,segment,block,我的理解是,segment是路径的而且,block才是真正的容易,所以如果要做一级级的路径,可以参考这个,我是直接在一级segment下就是block,所以不会这么多级的。

        在这里要注意一个事情,在DataAccessNodeManager.cs这个文件中有一个CreateAddressSpace(IDictionary<NodeId, IList<IReference>> externalReferences)的方法这个方法,在建立连接的时候会调用,有一个比较奇怪的现象,就是createAddressSpace()之后,再调用AddReference()添加节点是不会刷新的,这个可能是我的使用方法不对。

       这之后就很简单了,改动findBlock里,返回直接的block就好了,如果想添加segment,就在s_BlockPathDatabase这个数组里面添加自己的segment就好了,但要记得在最后面加上‘/’斜杆,这样findSegment才能找到的。

2、部署的问题

        opc ua为了保障安全(这个肯定是要的),就搞了个证书验证的过程,这个使用起来就有点尴尬了。在局域网的两台机器上连接的话,会报错

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值