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

在当代工业自动化系统中,实时监测和数据分析变得至关重要。本文将介绍如何通过集成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.mzph.cn/news/735140.shtml

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

相关文章

哈希表|242.有效的字母异位词

力扣题目链接 bool isAnagram(char* s, char* t) {int len_s strlen(s), len_t strlen(t);if(len_s ! len_t) {return false;}int table[26];memset(table, 0, sizeof(table));for(int i 0; i < len_s; i) {table[s[i] - a];}for(int i 0; i < len_t; i) {table[t[i…

Unity 关节:铰链、弹簧、固定、物理材质:摩檫力、 特效:拖尾、

组件-物理-关节&#xff1a;铰链&#xff08;类似门轴&#xff09; 自动动作、多少力可以将其断开、 弹簧可以连接另一个刚体&#xff08;拖动即可&#xff09; 固定一般是等待一个断裂力&#xff0c;造成四分五裂的效果。 物理材质 设置摩檫力&#xff0c;则可以创造冰面的…

复制表

目录 复制表 将部门 30 的所有员工信息保存在 emp30 表中 将复杂查询结果创建为表 只将 emp 表的结构复制为 empnull 表 从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 复制表 严格来说&#xff0c;复制表不是复制操作&am…

【NR 定位】3GPP NR Positioning 5G定位标准解读(七)- GNSS定位方法

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

Java积累

文章目录 java积累IDEA快捷键 java积累 Arrays.asList(args)&#xff1a; 将args转为列表的形式输出 常犯的错误&#xff1a;经常直接就new新的了。应该用上面的的。 new Date()是年月日时分秒。 LocalDate.now()是年月日 IDEA快捷键 Ctrl Alt B : 显示实现该类或者接口…

01hadoop概念

大数据与Hadoop 大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 Hadoop是什么&#xff1f; Hadoop是一种分析和处理海量数据的…

2024年掌握人工智能的顶级课程

[AI 课程推荐] 谷歌、微软、哈佛大学, DeepLearning.AI都发布了免费的人工智能和ChatGPT的课程。 以下是 2024 年掌握人工智能的顶级课程: GOOGLE - 生成式人工智能学习路径微软- 为每个人提供生成式人工智能微软 - 人工智能初学者入门哈佛 - CS50 的 Python 人工智能简介Deep…

mysql的安装启动

下载 2.解压后放在某个目录下&#xff1a; 3.修改系统变量 4.修改配置文件 &#xff08;创建一个ini文件放在解压后的目录下&#xff09; 内容如下 5.初始化mysql 1.用管理员模式下输入&#xff1a; mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…

Java面试必考题之线程的生命周期,结合源码,透彻讲解!

写在开头 在前面的几篇博客里&#xff0c;我们学习了Java的多线程&#xff0c;包括线程的作用、创建方式、重要性等&#xff0c;那么今天我们就要正式踏入线程&#xff0c;去学习更加深层次的知识点了。 第一个需要学的就是线程的生命周期&#xff0c;也可以将之理解为线程的…

JVM运行时数据区——对象的实例化内存布局与访问定位

文章目录 1、对象的实例化1.1、创建对象的方式1.2、创建对象的步骤 2、对象的内存布局3、对象的访问定位3.1、对象访问的定位方式3.2、使用句柄访问3.3、使用指针访问 4、小结 平时大家经常使用new关键字来创建对象&#xff0c;那么我们创建对象的时候&#xff0c;怎么去和运行…

ABAP接口-RFC连接(ABAP TO ABAP)

目录 ABAP接口-RFC连接&#xff08;ABAP TO ABAP&#xff09;创建ABAP连接RFC函数的调用 ABAP接口-RFC连接&#xff08;ABAP TO ABAP&#xff09; 创建ABAP连接 事务代码&#xff1a;SM59 点击创建&#xff0c;填写目标名称&#xff0c;选择连接类型&#xff1a; 填写主机名…

pycharm查看Tensor的完整数据

通常debug时&#xff0c;Tensor的数据呈现如下图&#xff0c;只显示开头几个值和结尾几个值&#xff0c;中间被省略&#xff1a; 解决方法&#xff1a; 右击想查看的数据&#xff0c;选择Evaluate Expression 输入如下命令&#xff0c;就会出现View as Array提示&#xff0c;…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:LoadingProgress)

用于显示加载动效的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 LoadingProgress() 创建加载进展组件。 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使…

2024年k8s最新版本使用教程

2024年k8s最新版本使用教程 3. YAML语言入门3.1 基本语法规则3.2 支持的数据结构3.3 其他语法 4 资源管理4.1 k8s资源查询4.2 资源操作命令4.3 资源操作方式4.3.1 命令行方式4.3.2 YAML文件方式 5 Namespace5.1 查看命名空间5.2 创建命名空间5.3 删除命名空间5.4 命名空间资源限…

计算机组成原理之机器:输入输出系统

计算机组成原理之机器&#xff1a;输入输出系统 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chater3&#xff1a;输入输出系统 3.1 输入输出系统的发展概况 早期阶段 外部设备与主机之间采用分散连接&#xff0c;即每一个设备都…

什么是微隔离技术?

微隔离产生的背景 首先来看下南北向流量以及东西向流量的含义 南北向流量 指通过网关进出数据中心的流量&#xff0c;在云计算数据中心&#xff0c;处于用户业务虚拟机&#xff08;容器&#xff09;跟外部网络之间的流量&#xff0c;一般来说防火墙等安全设备部署在数…

Python打印Linux系统中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明&#xff1a; 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表&#xff0c;并统计命令的执行次数。统计时&#xff0c;只统计命令的名称&#xff0c;以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

【C语言步行梯】分支语句if...else、switch详谈

&#x1f3af;每日努力一点点&#xff0c;技术进步看得见 &#x1f3e0;专栏介绍&#xff1a;【C语言步行梯】专栏用于介绍C语言相关内容&#xff0c;每篇文章将通过图片代码片段网络相关题目的方式编写&#xff0c;欢迎订阅~~ 文章目录 什么是语句&#xff1f;引入分支语句&am…

Charles-抓包工具的使用

文章目录 Charles简介与安装Charles的简介Charles的安装Charles 安装证书 抓包在PC端抓取HTTPS请求在移动端进行抓包移动端配置Androd端配置iOS端配置 Charles使用小技巧&#xff1a; 模拟慢速网络 Charles简介与安装 Charles的简介 Charles 是在 PC 端常用的网络封包截取工具…

数字化转型导师坚鹏:科技金融政策、案例及营销创新

科技金融政策、案例及营销创新 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不清楚科技金融有哪些利好的政策&#xff1f; 不知道科技金融有哪些成功的案例&#xff1f; 不知道科技金融如何进行营销创新&#xff1f; 课程特色&#xff1a; 以案例的方式解…