java对接opcua协议,KepserverEx6模拟opc服务器,读取模拟数据,webcosket向前端推送实时数据
参考 https://blog.csdn.net/qq_17627195/article/details/123916541
demo代码地址 https://gitee.com/fanyueying_admin/java-opcua-demo.git
我用的KepSeverEx 6软件模拟的opcua服务器,win10系统,可能会连不上opc服务器,那是因为我在本地win10电脑模拟服务器,需要在本地设置----控制面板\系统和安全\Windows Defender 防火墙\自定义设置 关闭防火墙,之后可以正常连接。
try { //单个session推送消息会出现The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method, // 原因是多个线程同时使用同一session发送,解决方法 异步发送消息多线程下需要加锁保证线程安全 session.getAsyncRemote().sendText(message); logger.info("消息推送成功:" + message); return true; } catch (Exception e) { logger.error("推送异常:" + e); clientHandler.disconnect(); CLIENTS.remove(terminalId); TERMINAL_IDS.remove(terminalId); return false; }finally { lock.unlock(); }
# OPC UA
OpcUa协议的Java实现,项目基于Eclipse Milo库开发。服务端采用KepServer 6.X。
---
## 使用步骤:
### 1、启动服务端。
> 打开KEPServerEX 6 Administration
> 添加项目通道、设备和标记
> 项目-属性 启用匿名登录(客户端使用匿名验证时需要)
> 设置-用户管理器 新建用户
> OPCUA配置-服务器端点,TCP连接和安全策略
> 重新初始化服务器运行时
### 2、启动客户端
> 更改application.properties配置文件、opcua.properties配置文件
>> OpcUaClientConfig.setIdentityProvider()提供四种验证方式:
>> + AnonymousProvider
>> + CompositeProvider
>> + UsernameProvider
>> + X509IdentityProvider
>> 其中匿名验证和用户名验证较为常用和简单
> 启动OpcUaApplication
### 3、接口调试
> /connect 建立连接
> /disconnect 断开连接
> /read 节点读取(较为常用信息是节点值和值数据类型)
> /write 节点值写入 需注意服务端节点类型(只读/读/写)和客户端DataValue的数据类型
> /subscribe 订阅节点 监控值有变化时回调通知 (监控参数clientHandle需自动获取,若使用统一的参数批量订阅时会造成先行节点被覆盖)
---
Eclipse Milo 地址:https://github.com/eclipse/milo
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了