实时工业控制系统的创新整合:PLC4X与CnosDB的高效数据采集与存储

news2024/11/17 14:53:04

在当代工业自动化系统中,实时监测和数据分析变得至关重要。本文将介绍如何通过集成Apache PLC4X与CnosDB,实现对工业控制系统中的PLC设备进行高效数据采集和存储,为工程师们提供更强大的数据分析和监测工具。

PLC的定义

PLC是可编程逻辑控制器的缩写,是一种用于自动化控制的工业计算机。它广泛应用于工业领域,用于监控和控制生产过程中的机械设备和工艺。它取了传统的继电器逻辑控制系统,以编程方式执行各种控制任务。

PLC的主要特点和功能

  1. 可编程性: 通过编程实现不同的控制逻辑,适应不同的工业过程。
  2. 实时性: 实时监测和响应生产过程中的变化。
  3. 可靠性: 耐用、稳定,并能在恶劣环境中工作。
  4. 通用性: 适用于逻辑控制、运动控制、过程控制等不同类型的控制任务。

PLC4X简介:

PLC4X(Apache PLC4X)是一个开源项目,旨在为工业自动化领域提供灵活、可扩展的工具集,用于与各种可编程逻辑控制器(PLC)通信。它能简化与不同品牌和型号的PLC交互的复杂性,使开发人员更轻松地集成PLC数据到他们的应用程序中。

该项目由Apache软件基金会支持,使用Java编写,并提供了多种语言的API,包括Java、Python和JavaScript等。PLC4X支持多种通信协议,如Modbus、OPC UA、Siemens S7等,使其能够与各种PLC设备进行通信。

总体而言,PLC4X旨在为工业自动化系统提供开放、标准化的接口,以便更容易地集成和管理不同类型的PLC。

CnosDB简介:

CnosDB是一款专注于时序数据存储的开源数据库。其高性能和灵活的查询语言使其成为工业控制系统中理想的数据存储解决方案,特别是在需要实时监测和数据分析的场景下。

下面是用Java语言实现PLC4X集成CnosDB的示例。在示例中,我们将使用PLC4X库从虚拟PLC设备中读取数据,然后写入到CnosDB。

首先配置好写入CnosDB的连接:

// Configure the connection to CnosDB
String cnosDBUrl = "http://127.0.0.1:8902";
String tenant = "cnosdb";
String databaseName = "public";
String username = "root";
String password = "";
String measurement = "plc4x";

String apiUrl = cnosDBUrl + "/api/v1/write?db=" + databaseName + "&tenant=" + tenant + "&pretty=true";
String auth = username + ":" + password;
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes());
String authHeaderValue = "Basic " + new String(encodedAuth);


URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", authHeaderValue);
connection.setDoOutput(true);

然后选择要读取的PLC设备的连接地址,示例中使用PLC4X库提供的虚拟地址:

String plcConnectionString = "simulated://127.0.0.1";

从虚拟地址中读取随机数据,实际项目中需要替换成真实PLC设备的地址。

使用Read请求从该地址中读取一个随机整数,然后写入CnosDB数据库:

try (PlcConnection plcConnection = PlcDriverManager.getDefault().getConnectionManager().getConnection(plcConnectionString)) {
    String field = "foo";

    PlcReadRequest readRequest =  plcConnection.readRequestBuilder()
            .addTagAddress(field, "RANDOM/foo:INT") // Replace with your PLC address
            .build();

    PlcReadResponse response = readRequest
            .execute()
            .get();

    int fieldValue = response.getInteger(field);

    String line = String.format("%s %s=%di",measurement, field, fieldValue);

    System.out.println(line);
    connection.getOutputStream().write(line.getBytes());

    System.out.println(connection.getResponseMessage());

    connection.disconnect();
} catch (Exception e) {
    e.printStackTrace();
}

运行示例代码后,可以查询CnosDB数据库,确认数据已成功写入。

public ❯ show tables;
+------------+
| table_name |
+------------+
| plc4x      |
+------------+
Query took 0.089 seconds.
public ❯ select * from plc4x;
+----------------------------+------+
| time                       | foo  |
+----------------------------+------+
| 2024-01-04T08:27:23.566444 | 3625 |
+----------------------------+------+
Query took 0.024 seconds.
public ❯

通过使用PLC4X与CnosDB的集成,工程师们可以更轻松地建立高效的实时工业控制系统。这种集成不仅使数据采集更加简便,还为用户提供了强大的时序数据库,为工业自动化的下一步发展提供了坚实的基础。

本文提供的代码示例和集成步骤旨在帮助社区成员更容易地使用PLC4X和CnosDB,促进开源工具在工业自动化领域的广泛应用。通过这种集成,我们相信能够推动工业控制系统的创新,提高生产效率和数据分析能力。

CnosDB简介

CnosDB是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的社区网站:https://cn.cnosdb.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1506401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++_lambda表达式

目录 前言-lambda表达式的介绍: 1、lambda表达式的作用 2、lambda表达式的优势 2.1 用lambda构建lambda变量 3、lambda表达式的类型 4、捕捉列表说明 4.1 传值捕捉 4.2 mutable 4.3 传引用捕捉 4.4 混合捕捉 5、lambda的大小 结语 前言-lambda表达…

基于springboot+vue实现早餐店点餐系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现早餐店点餐系统演示 摘要 多姿多彩的世界带来了美好的生活,行业的发展也是形形色色的离不开技术的发展。作为时代进步的发展方面,信息技术至始至终都是成就行业发展的重要秘密。不论何种行业,大到国家、企业&#xff0…

基于51单片机的直流电机调速系统设计

基于51单片机的直流电机调速系统设计[proteus仿真] 电机调速系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的直流电机调速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&#xff…

【Web】浅聊Java反序列化之Rome——EqualsBeanObjectBean

目录 简介 原理分析 ToStringBean EqualsBean ObjectBean EXP ①EqualsBean直球纯享版 ②EqualsBean配合ObjectBean优化版 ③纯ObjectBean实现版 关于《浅聊Java反序列化》系列,纯是记录自己的学习历程,宥于本人水平有限,内容很水&a…

AI相关的实用工具分享

AI实用工具大赏:赋能科研与生活,探索AI的无限可能 前言 在数字化浪潮汹涌而至的今天,人工智能(AI)已经渗透到我们生活的方方面面,无论是工作还是生活,都在悄然发生改变。AI的崛起不仅为我们带…

搭建Android Studio开发环境

一、JDK 1、下载 2、安装 双击进行安装,修改安装路径为:D:\Java\jdk-17.0.4.1即可,安装完成后目录如下: 配置环境变量 3、测试 WinR,输入cmd,按Enter后,键入:java --version&…

云上攻防-云产品篇堡垒机场景JumpServer绿盟SASTeleport麒麟齐治

知识点 1、云产品-堡垒机-产品介绍&攻击事件 2、云产品-堡垒机-安全漏洞&影响产品 章节点: 云场景攻防:公有云,私有云,混合云,虚拟化集群,云桌面等 云厂商攻防:阿里云,腾讯…

力扣难题:重排链表

首先通过快慢指针找到中间节点,然后将中间节点之后和之前的部分分为两个链表,然后翻转后面的链表,注意方法,然后将两个链表交替链接。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode…

【数理统计实验(三)】假设检验的R实现

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

uglityjs非集成方式混淆js代码

文章目录 uglityjs非集成方式混淆js代码一、前言1.简介2.环境3.bat和ps1.ps1 文件.bat 文件 二、正文1.安装Node.js2.安装UglityJS3.代码混淆1)单个文件2)多个文件 uglityjs非集成方式混淆js代码 一、前言 1.简介 UglifyJS 是一个 JavaScript 解析器、…

3.10复试专业课日报【周末总结】

数据结构 考点一,考点二 操作系统 计算机网络 组成原理 1.什么是中断向量 2. 数据库 选择题80-100 1.数据库的逻辑模型(数据模型) 2.DCL,DML,DQL,DDL 3.数据库特点 算法 1.复习 对称二叉树,二叉树最大深度 2.只出现一…

计算机考研|保姆级择校+资料+全年规划

本科211,研究生上岸某985 计算机考研备考过程中走了不少弯路,希望我的经验能够帮助大家少走弯路 大家决定考研之前,一定要认真思考自己考研的目的是什么,有的人是随大流,别人考研,就跟风考研,有…

vulhub中Weblogic WLS Core Components 反序列化命令执行漏洞复现(CVE-2018-2628)

Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。 访问http://your-ip:7001/consol…

初识REDHAWK

文章目录 前言一、什么是 REDHAWK?1、概述2、REDHAWK 的应用 二、REDHAWK 的流程管理和交互方法1、流程管理2、数据传输 三、入门1、安装 REDHAWK2、IDE 快速入门①、启动 REDHAWK IDE②、打开 Chalkboard③、创建信号发生器④、测试组件的输入/输出响应 前言 REDHAWK 是一个…

跨平台是什么意思?——跟老吕学Python编程

跨平台是什么意思?——跟老吕学Python编程 跨平台跨平台释义跨平台软件数据库管理系统(DBMS):网站服务器、应用程序服务器:网络浏览器: 跨平台编程语言跨平台详细解说跨平台应用前景 跨平台 计算机领域术语 跨平台概念是软件开发中…

Python 强大邮件处理库 Imbox

目录 IMAP Mailbox Imbox 安装 特性 提取邮件内容 处理附件 安全性 示例 1:读取收件箱中的邮件 2:搜索并下载附件 3:连接到IMAP服务器获取所有邮件 结论 IMAP Mailbox IMAP(Internet Message Access Protocol&#x…

Ps:清理

清理 Purge命令位于“编辑”菜单下,它主要用于释放 Photoshop 使用的内存资源,有助于提高系统的性能。 通过使用“清理”命令,用户可以有效管理 Photoshop 的资源使用,特别是在处理大型文件或进行长时间编辑会话时。 定期清理可以…

什么是GoogLeNet,亮点是什么,为什么是这个结构?

GooLeNet 亮点 最明显的亮点就是引入了Inception,初衷是多卷积核增加特征的多样性,提高泛化能力 ,比如,最下边是一个输入层,然后这个输入分别传递给1*1,3 * 3 ,5 * 5和一个最大池化层&#xff…

盘点5个正规靠谱的赚钱平台,有手机或电脑就可以增收

找到一个真正靠谱的赚钱平台是一个不错的起点。接下来的一些建议,都是为了让你能在互联网的宇宙世界中,平稳地走出创收的第一步。 1,自媒体写文章 写文章是一项非常适合文学爱好者的兼职工作。如果你拥有良好的文学功底和写作技巧&#xff…

智慧公厕_智慧化公厕_智慧的公厕_公厕智慧化_智能智慧公厕_智慧化的公厕

在当代城市发展中,智慧公厕作为公共厕所信息化的主要表现形式,正在以惊人的速度推动着城市公共环境卫生的智慧化进程。作为智慧城市体系的重要组成部分,智慧公厕不仅提供方便、卫生的公共厕所服务,还提升了城市整体形象&#xff0…