没有合适的资源?快使用搜索试试~ 我知道了~
结合open62541 源码介绍opcua 的订阅流程的处理,以及登录的流程代码
资源推荐
资源详情
资源评论
介绍
目前 opcua 是比较火的一门工业控制领域协议,open62541 是它的开源实现,最近
有个项目要用到 opcua 协议,以前熟悉的员工都离职,不得已,自己接手熟悉一下,单看
协议的理论文档是比较枯燥乏味和难以理解的,最好是借助已有的协议分析工具和开源
sdk 。
幸好这两样都有: 工具 UaExpert + wireshark(用于协议包的分析)
开源 sdk : open62541
下面的链接是我入门时碰到比较好的示例教程;
(287 条消息) 学习 open62541 --- [1] 初始_爱就是恒久忍耐的博客-CSDN 博客
_open62541
批量订阅
针对具体问题的流程分析:
从 Client 的角度来说,Client 想去查看 Server 端变量的值,可以使用 polling
的方式,查不到这个值就一直在那等着,而且很有可能多次查到的值都是没变化的,这样比
较浪费时间而且效率不高。通过监测,在变量值发生变化时会通知 Client,然后去做相应
的操作,这样效率比较高。
(事件可以主动发送,需要主动触发)
opcua 采集数据更新周期 20ms + 10ms 采样周期 = 30 ms (与震动传感器有 30ms
的误差)
批量订阅:
每个变量的采样周期可以不一样,但是订阅发布的周期一个订阅是一样的。服务端有
一个订阅发布定时器,每个变量有一个定时采样定时器,如果发现数据改变后会放到发布
队列中,发布周期到了之后一起发布,发布队列的长度可以在客户端订阅时指定,要根据
资源而定。
把小事做精
opcua server 代码流程
client 订阅 server 变量的流程:
#0 0x00005555555b7fbe in Service_CreateSubscription ()
#1 0x00005555555aa8ab in processMSGDecoded ()
#2 0x00005555555aadc2 in processMSG ()
#3 0x00005555555aafcf in processSecureChannelMessage ()
#4 0x00005555555c8628 in assembleProcessMessage ()
#5 0x00005555555c8abf in processSymmetricChunks ()
#6 0x00005555555c8bf6 in processCompleteChunks ()
资源评论
zairenjian1234
- 粉丝: 15
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功