论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
OPCUA 探讨(一)
OPCUA 探讨(一)
数据人与超自然意识
金牌会员
|
2024-12-5 14:57:19
|
显示全部楼层
|
阅读模式
楼主
主题
786
|
帖子
786
|
积分
2358
一、前言
OPCUA(OPC Unified Architecture)
是一种应用层数据通信协议,其规范由OPC基金会(OPC Foundation)制定,笔者在工作期间(面向西门子数控体系的
数据采集
)接触该协议较多。
西门子数控体系产物称作
Sinumerik
,其内部嵌入了一个
OPCUA服务器
,通过以太网连接,可以用上位机(普通电脑或工控机)的
OPCUA客户端
程序访问OPCUA服务器,获取Sinumerik数控体系内的各种数据。
采集到数据之后,我们才能构建更进一步的工作,例如机床的数字孪生 、工厂信息可视化大屏、及时机床健康状态评估等等,可以说数据采集是全部上层服务的基础。目前在机床数据采集方面,差别厂家的数控体系对外提供的采集协议都不太一样,例如FANUC有FOCAS、西门子有OPCUA、华中数控有NC-Link,我们很大概遇到实际工厂中有支持差别协议的多种数控体系,这时就需要我们在数据采集软件中实现支持差别协议的采集功能。
本系列文章聚焦于西门子数控体系Sinumerik支持的
OPCUA通信协议
,探讨如何使用微软
dotNet
框架(
C#
)开发数据采集程序,并渐渐完善各项功能,别的会团结OPC基金会官方文档探讨OPCUA底层结构。基于其他协议的数据采集暂不讨论。
二、准备工作
2.1 准备开发情况
2.1.1 Visual Studio2022
笔者使用的开发软件是微软的
Visual Studio 2022
,其完整安装包较大。
建议设置时参考网上其他文章(关键词:.NET开发,VS2022)。操作体系是windows11家庭版。
2.1.2 dotNet(.NET)
dotNet(.NET)开发情况/运行情况和C#的关系可以理解为JDK/JVM和Java之间的关系,假如是盘算机专业的应该能明白。
假如不是盘算机的,我简略解释一下,盘算机底层(CPU)需要的是盘算机电子电路能够理解的二进制机器码,差别CPU架构(x86、ARM)的机器码不一样,我们写的C#代码文本都需要转换、翻译成和盘算机能读懂的机器码,因此有了.NET这类软件框架作为中间媒介,负责转换、翻译,让盘算机能够实行程序。
2.1.3 NuGet第三方包管理器
Visual Studio里面有个叫
NuGet
的东西,相当于Python的pip,Java的Maven,其作用是在我们的项目里引入其他人写好的模块(第三方包)。
对于OPCUA相关的项目,必不可少的是OPC基金会提供的OPCUA相关模块,我们都是使用这个NuGet引入的。
2.2 获取OPCUA客户端示例
示例代码在
https://gitee.com/zuoquangong/opcuaapi
(注:该示例代码目前十分粗糙,存在UI层面的bug,一些重要功能如“订阅”有待补全,笔者正在着手整理中)
本OPCUA客户端示例的界面如下,计划的比较朴素,界面操作方法见第三章。
2.3 获取OPCUA服务器
我们在开发时身边大概不会有Sinumerik数控体系,那么需要在电脑上安装一个可以用于测试的OPCUA服务器软件。
2.3.1 获取Prosys软件
推荐使用Prosys的软件,叫“
Prosys OPC UA Simulation Server
”,别下载错了。
Prosys官网入口:
https://prosysopc.com/
注意,红框里这个“opc.tcp://SAM.mshome.net:53530/OPCUA/SimulationServer”就是该OPCUA服务器的访问地址(传输层为TCP协议),我们的OPCUA客户端访问这个地址即可。
实际Sinumerik中,OPCUA服务器的端口是
4840
,可以连接的IP通常有
X127
调试端口的
192.168.215.1
(该IP固定不可调),以及
X130
的公司网络端口
192.168.1.6
(该IP可以本身设,或通过DHCP获取)。
2.3.2 切换模式
这个软件有两种模式,基础模式(Basic Mode)和
专家模式(Expert Mode)
,我们用专家模式。切换方法如下:
2.3.3 添加个用户
Sinumerik体系的OPCUA默认用户是OpcUaClient,我们在prosys里也建一个如许的用户。
注意,两次密码划一“Add User”按钮才能被点击。
如许新用户创建完毕,OPCUA客户端程序可以使用该用户身份与Prosys的OPCUA服务器建立会话连接。
三、OPCUA初试
起首把prosys软件运行起来,即OPCUA服务器开始工作。
然后用Visual Studio2022打开客户端项目,开始运行客户端代码。
3.1 连接服务器
出现界面后,在服务器地址输入prosys提供的OPC地址,并填写用户名、密码信息。
点击“创建”,即可在服务器和客户端之间建立一个OPCUA会话:
成功建立OPCUA会话(Session)之后,可以查看当前会话相关信息:
我们可以通过点击“创建”按钮,创建并维持多个会话;通过会话下拉菜单选择
当前会话(currentSession)
;点击“取消”按钮,可以断开(DisConnect)当前会话。
3.2 浏览OPCUA服务器内容
界面左侧用于连接服务器和会话管理(创建、切换、断开、查看信息),界面右侧则是基于当前会话的一些功能。
起首是浏览OPCUA服务器。OPCUA服务器内容可以树状目录形式进行浏览,点击“浏览”按钮,即可显示OPCUA服务器的根目录节点内容:
这里每一个内容都称作一个
“节点(Node)”
,一个节点包含多个
“属性(Attribute)”
。
单击节点
,即可显示节点信息(即节点内的各个属性):
双击节点
即可进入该节点,浏览其内部节点结构(例如双击“Objects”节点):
点击“返回”按钮即可返回上一级目录。
以上是基本的浏览功能,实际上也包含了节点信息读取(readNode)和节点值读取(readValue),两种读取功能。在OPCUA中,基本的节点操作有:
其中“写入”操作用的较少,因为笔者的工作中,OPCUA服务器数据对应的是数控体系内数据,随意改写会导致安全问题。
实现这几个操作就基本完成了一个客户端的主干功能,后面我们将团结源码和文档对这些操作渐渐解读。
3.3 观察节点信息
通常我们更关注如何读取一个节点的值(readValue),我们可以观察到每个节点都有一个ID
例如这个节点名称为“Counter”的节点,其ID为“ns=3;i=1002”,ns是“namespace”的简写,代表一个命名空间,“3”是该命名空间在服务器上的索引号,“1002”是其在该命名空间内的索引号。该节点值为4。
我们进行数据采集,通常是通过OPCUA客户端的浏览功能(Browser)找到想要获取值的节点(例如机床Z轴坐标或电流)的ID,然后调用读取(readNode)或监控(subscription)方法,获取其值。
假如咱们客户端能缓存节点ID就不消浏览,可以直接读取节点值了。
总结
后续我们将对示例源码和服务器节点结构等问题进行讨论。
附录
OPC基金会:OPCUA英文文档
OPCUA技能开发英文文档
*附言
由于作者水平有限,大概在文章中出现错误或不当描述,如有发现此类情况希望您能及时提供反馈,非常感谢!
假如感觉本文对您有所资助,希望为文章点个
推荐
,谢谢。
作者联系方式,163邮箱:zuoquangong@163.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
数据人与超自然意识
金牌会员
这个人很懒什么都没写!
楼主热帖
kubernetes使用学习(k8s)
【记录】Python爬虫|爬取空间PC版日志 ...
OSPF多区域
4. 事务和锁
2023团队天梯模拟赛 L2-3 智能护理中心 ...
渗透测试02
小白零基础在 Centos 7 中安装 mysql ...
Java如何实现去重?这是在炫技吗? ...
MySQL 主从同步延迟监控
循序渐进介绍基于CommunityToolkit.Mvv ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表