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
// 主面板使用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));
// 新增方法:更新采集频率
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("错误: 请输入有效的数字");
}
}
如有需要请私聊。