基于Java的OPCDA采集中间件

1.软件功能及技术特点简介:

软件功能及技术特点简介:

OPCDA是基于Java语言开发的OPC client(OPC客户端)跨平台中间件软件,他支持OPC SERVER的OPC DA1.0/2.0/3.0。OPCDA实时采集数据(包括实时数据、报警数据、历史变化数据等),同时提供MQTT发布订阅功能,为工业大数据平台提供现场基础数据支撑,且适用于所有的工业控制行业。

1、支持读取OPC DA1.0、2.0、3.0;

2、支持MQTT物联网功能,发布内容包括实时值、报警等内容;

3、支持操作系统(Windows);

4、适用于工业互联进程中的车间-车间、车间-厂集控中心、厂集控中心-地区集控中

心。

5.采集频率在5s以上,支持5000点位采集。

2.程序配置


1.jre opcdaclient.exe运行所需的java环境

2.lib opcda采集需要的dll文件

3.config.properties 配置文件,程序会默认读取同级目录下的配置文件

4.pointconfig.xlsx文件是点位表,程序会读取同级目录下的pointconfig.xlsx

3.程序界面

双击opcdaclient.exe

OPC服务设置:

输入OPC服务器地址点击游览,查找opcDA服务,点击连接。

点击同步指标,将pointconfig.xlsx文件的点位信息同步显示出来。

采集频率自定义设置不能低于1000ms

MQTT服务设置

输入服务地址,端口 ,用户名和密码。点击连接,如果成功日志会显示MQTT连接成功。

会自动按照采集频率去发送MQTT。

4.部分代码

java 复制代码
```java
// 主面板使用BorderLayout
        JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
        mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        // 左侧面板(使用BorderLayout垂直排列)
        JPanel leftPanel = new JPanel(new BorderLayout(5, 5));

        // 顶部面板 - OPC和MQTT设置
        JPanel settingsPanel = new JPanel(new GridLayout(2, 1, 5, 5));
        settingsPanel.add(createOpcPanel());
        settingsPanel.add(createMqttPanel());
        leftPanel.add(settingsPanel, BorderLayout.NORTH);

        // 中间表格
        dataTable = new JTable(new DefaultTableModel(
                new String[]{"ItemID", "类型", "值", "质量"}, 0));
        JScrollPane tableScroll = new JScrollPane(dataTable);
        tableScroll.setBorder(BorderFactory.createTitledBorder("数据表格"));
        leftPanel.add(tableScroll, BorderLayout.CENTER);

        // 右侧日志面板(使用JPanel包装确保正确布局)
        JPanel rightPanel = new JPanel(new BorderLayout());
        rightPanel.setPreferredSize(new Dimension(350, 0));
java 复制代码
// 新增方法:更新采集频率
    private void updateCollectFrequency() {
        try {
            int newInterval = Integer.parseInt(collectFrequencyField.getText());
            if (newInterval < 999) {
                logMessage("警告: 采集频率不能低于999ms");
                return;
            }

            if (newInterval != collectInterval) {
                collectInterval = newInterval;
                logMessage("采集频率已设置为: " + collectInterval + "ms");

                // 如果正在采集,则重新启动定时器
                if (collectTimer != null && collectTimer.isRunning() &&
                        jopc != null && jopc.ping()) {
                    //startDataCollection(); // 这会自动停止旧的定时器并创建新的
                    readAllIndicatorValues();
                }
            }
        } catch (NumberFormatException e) {
            logMessage("错误: 请输入有效的数字");
        }
    }

如有需要请私聊。

相关推荐
眠りたいです4 天前
基于脚手架微服务的视频点播系统-脚手架开发部分-brpc中间件介绍与使用及二次封装
c++·微服务·中间件·rpc·架构·brpc
眠りたいです4 天前
基于脚手架微服务的视频点播系统-脚手架开发部分-jsoncpp,protobuf,Cpp-httplib与WebSocketpp中间件介绍与使用
c++·websocket·微服务·中间件·json·protobuf·cpp-httplib
深蓝电商API5 天前
Scrapy 中间件详解:自定义下载器与爬虫的 “拦截器”
爬虫·scrapy·中间件
知行合一。。。5 天前
SOFA 架构--02--核心中间件与工具
中间件·架构
谢尔登6 天前
【Nest】日志记录
javascript·中间件·node.js
SirLancelot17 天前
MinIO-基本介绍(一)基本概念、特点、适用场景
后端·云原生·中间件·容器·aws·对象存储·minio
RunningShare8 天前
云原生时代的数据流高速公路:深入解剖Apache Pulsar的架构设计哲学
大数据·中间件·apache·pulsar
野熊佩骑9 天前
一文读懂Redis之数据持久化
linux·运维·数据库·redis·缓存·中间件·centos
武子康9 天前
AI-调查研究-90-具身智能 机器人数据采集与通信中间件全面解析:ROS/ROS2、LCM 与工业总线对比
人工智能·ai·中间件·机器人·职场发展·个人开发·具身智能
十五年专注C++开发9 天前
通信中间件 Fast DDS(三) :fastddsgen的安装与使用
linux·c++·windows·中间件·跨平台