告别 DCOM 依赖Java 实现的跨平台 OPC DA 网关支持 Windows / Linux / Mac为什么需要这个项目工业自动化领域的 OPC DAOLE for Process Control - Data Access协议是连接 PLC、DCS 等现场设备与上层应用的核心桥梁。然而传统的 OPC DA 方案存在几个痛点强依赖 Windows DCOMOPC DA 基于微软的 DCOM分布式组件对象模型只能在 Windows 上运行配置复杂调试困难跨平台困难Linux/Mac 等系统无法直接使用传统 OPC DA 客户端集成方式单一大多数 OPC DA 驱动只提供独立部署模式难以嵌入到现有应用系统中本项目实现了纯 Java 的 OPC DA 客户端无需 Windows DCOM 依赖支持 Java 1.8 运行环境天然跨平台。核心特性纯 Java 实现跨平台运行基于 OpenSCADA Utgard客户端无需依赖 Windows DCOM支持 Windows / Linux / MacHTTP 协议转换将 OPC DA 协议封装为 HTTP 协议方便与各类后端系统对接多种集成方式独立部署、Spring Boot Starter 嵌入、SPI 接口自定义实现开箱即用包含模拟后端服务无需真实 OPC 服务器即可开发调试项目结构opcda-http-gateway/ ├── pom.xml # 父 POM多模块聚合 ├── lib/ # 核心依赖无需源码 ├── opcda-http-gateway/ # 驱动网关独立部署 ├── mock-platform/ # 模拟平台调试用 └── driver-opcda-spring-boot-starter/ # Spring Boot 自动装配三种集成方式方式一独立部署HTTP Gateway将驱动网关作为独立进程运行通过 HTTP 与后端服务通信。适用于微服务架构、非 Java 技术栈、需要进程隔离的场景。┌─────────────────┐ HTTP ┌──────────────────┐ │ 用户后端服务 │◄────────────►│ OPC DA Gateway │──► OPC DA Server └─────────────────┘ └──────────────────┘打包产物为driver-opcda-1.0.zip/driver-opcda-1.0.tar.gz解压后修改配置即可运行# 打包mvn package-plopcda-http-gateway-am-DskipTests# 解压并启动unzipopcda-http-gateway/target/driver-opcda-1.0.zip-ddriver-opcdacddriver-opcda bin/driver-opcda# Linux/Macbin/driver-opcda.bat# Windows方式二Spring Boot Starter 嵌入直接在 Spring Boot 应用中引入 Starter驱动作为应用内组件运行共享配置和生命周期。dependencygroupIdcom.wjr.opcda/groupIdartifactIddriver-opcda-spring-boot-starter/artifactIdversion1.0/version/dependency# application.ymlopc:driver:driver-id:demo-001device-id:DEV_001metadata-base-url:http://localhost:8080/api/opcreport-base-url:http://localhost:8080/api/opcalarm-base-url:http://localhost:8080/api/opclifecycle-base-url:http://localhost:8080/api/opccommand-listen-port:8090方式三SPI 接口实现直接依赖driver-opcda-api和driver-opcda-core实现 SPI 接口完全自定义通信方式如 MQTT、gRPC、Kafka 等。// 自定义告警服务publicclassMyAlarmServiceimplementsAlarmService{OverridepublicvoidreportAlarm(AlarmDtoalarm){// 发送到 Kafka}}// 引导启动OpcdaDriverdriverOpcdaDriver.bootstrap(config,mySpiFactory);driver.start();快速开始环境要求JDK 1.8Maven 3.3.11. 编译gitcloneyour-repo-urlcdopcda-http-gateway mvn compile首次编译时maven-install-plugin会自动将lib/目录下的核心 jar 安装到本地 Maven 仓库。2. 启动模拟平台项目内置了模拟后端服务无需真实 OPC 服务器即可调试java-jarmock-platform/target/mock-platform-1.0.jar浏览器访问http://localhost:8080可查看数据上报、告警、反控、心跳、点位浏览等管理页面。3. 启动驱动网关修改conf/application.yml中的配置指向模拟平台地址默认http://localhost:8080/api/opc然后启动驱动网关。配置说明driver:driver-id:demo-001# 驱动 IDdevice-id:DEV_001# 设备 IDover-time-r:60000# 读超时msover-time-w:5000# 写超时msaction-group:0,1,2# 动作组other-parameter:{strict:yes,goodOnly:true,timeAlignment:false}# 后端 HTTP 服务地址metadata-base-url:http://localhost:8080/api/opcreport-base-url:http://localhost:8080/api/opcalarm-base-url:http://localhost:8080/api/opclifecycle-base-url:http://localhost:8080/api/opc# 反控监听端口command-listen-port:8090# 许可文件路径不添加则进入体验模式license-path:license/license.json功能特性数据上报定时采集 OPC 点位数据通过 HTTP POST 上报到后端服务告警上报采集过程中的异常和告警通过 HTTP 推送到后端远程反控监听 HTTP 端口接收后端下发的写值指令元数据同步启动时从后端拉取点位配置信息生命周期管理启动/停止/重启时通知后端服务OPC 服务器浏览支持浏览 OPC 服务器的点位树结构技术栈Java 1.8Spring Boot 2.3.0OpenSCADA UtgardOPC DA 通信Thymeleaf模拟平台 UISLF4J Logback日志FastjsonJSON 序列化总结本项目解决了传统 OPC DA 方案的三大痛点DCOM 依赖、跨平台限制、集成方式单一。通过纯 Java 实现和 HTTP 协议转换让 OPC DA 采集可以轻松集成到任何技术栈的应用系统中。内置的模拟平台让开发者无需真实 OPC 服务器即可快速上手调试。项目地址OPCDA-HTTP-GATEWAY 开源仓库欢迎 Star 和 PR如有问题请在 Issues 中提出。