Springboot集成Milo实现OPCUA客户端,读取OPCUA服务端节点数据
OPCUA
·
使用Springboot集成Milo实现OPCUA客户端,利用KEPServerEX6.4模拟OPCUA服务端,实现OPCUA客户端读写服务端数据
KEPServerEX6.4模拟OPCUA服务端数据请参考: https://blog.csdn.net/m0_48172732/article/details/126519555?spm=1001.2014.3001.5502
GitHub拉去OPCUA客户端代码: https://github.com/jellyleo/opcua
修改OPCUA配置文件
url是KEPServerEX6.4模拟OPCUA服务端的连接路径
userName是自己新添加的用户名
password是自己新设置的密码
启动类-OpcUaApplication
接口在CommonController,里面有连接客户端接口,关闭客户端接口,订阅接口,读取、写入接口
连接客户端接口
启动OpcUaApplication类,浏览器中输入接口地址http://localhost:9099/connect
**注意:**在创建连接过程中,会创建OPCUA的客户端,我们需要注意在创建客户端时会进行安全策略认证,我这里将KEPServerEX6.4中OPCUA配置的安全策略设置成无(None),如果想实现安全策略自行修改。客户端的配置信息,LocalizedText.english(“my”),my是OPCUA服务端中创建的通道名,可以选择用户名密码登录,也可以选择匿名登录。
报红处对程序运行没影响
关闭客户端接口
订阅接口
1、模拟一个数据,RANDOM(1000,200,240),1000表示一秒更新一次数据,(200,240)是数据的取值区间。
2、运行订阅接口,my.device.x2指的是通道名.设备名.标记名
3、订阅的值一直在运行中
读取接口
验证:OPCUA服务端里面该节点的值确实是0
写入接口(这里只能修改服务端门已有的节点数据)
写入时要注意写入数据的节点是否存在,否则会报(Bad_NodeIdUnknown,0x80340000,节点ID指向服务器地址空间中不存在的节点),也要注意写入值得类型一定要和OPCUA服务端值得数据类型一致,否则会报(Bad_TypeMismatch,0x80740000,为属性提供的值与属性值的类型不匹配)
id=my.device.x1&value=100&type=Short,my.device.x1表示已有的节点,100表示将节点的值修改成100,Short节点的数据类型是短整型
验证节点数据成功被修改
更多推荐
已为社区贡献1条内容
所有评论(0)