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

 

posted @   Fyy发大财  阅读(440)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示