打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合

随着 时序数据库(Time Series Database)的日益普及,越来越多的工业自动化控制(工控)人员开始认识到其强大能力。然而,时序数据库在传统实时数据库应用领域,特别是在过程监控层的推广仍面临挑战,主要原因在于缺乏适合操作技术(OT)人员使用的连接方式。在工业自动化的五层架构中,过程监控层通常由监控与数据采集系统(SCADA)代表,这些系统与特定 SCADA 厂商的实时数据库紧密集成,主要服务于 OT 人员。随着客户在数据存储、查询和外部交互方面遇到越来越多的瓶颈,他们对时序数据库的需求也日益增长。

为满足这一需求,TDengine 推出了全新的 ODBC 工具,显著简化了与 SCADA 系统的交互。这一工具使得 TDengine 在过程监控层的应用更加深入,为 SCADA 系统提供了更强大的赋能,帮助其进一步发挥价值。

SCADA 介绍

SCADA 英⽂全拼为”Supervisory Control And Data Acquisition”, 即数据采集与监视控制系统。SCADA 位于 IEC 62264-1 传统五层模型中 L2 层过程监控层,相对来讲,更加侧重集中监视,通常对现场 设备、PLC、DCS 等数据采集,集中监视以及控制。同时,作为⼯控中流砥柱,为上层⽣产管理层,包含 mes\mom 系统以及企业资源层,如 ERP 系统,提供完整的⽣产数据,包含实时、历史、报警数据, 以及相应的统计数据等,是⼯业控制系统的坚实底座。部分⾏业将 SCADA 系统、现场控制系统、设备 感知系统以及相应的通讯⽹络统⼀称之为 SCADA 系统,即不再是纯软件的形态,⽽是软、硬⼀起的综合监控系统。为了⽅便认识,本⽂按照传统⼯业五层架构进⾏讲解。

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

工业五层架构

SCADA 系统规模收缩性很⼤,性能较好的 SCADA 产品会采⽤分布式部署架构,将不同的服务部署在不 同计算机节点上,充分利⽤计算机性能,单套 SCADA 系统的采集设备点数规模可以到数万点规模。SCADA 功能通常分为采集服务、实时服务、历史服务、报警服务、事件服务、登录服务、校时服务、 脚本引擎、对外接⼝等⼏⼤模块。功能上包含实时⼯艺流程图、实时报警、历史报警、实时曲线、历史曲线、实时报表、历史报表、事件查询、通讯监视、故障诊断、冗余部署等功能。

按照架构来分,SCADA 软件包含单机、C/S 架构、B/S 架构、M/S 架构,即单机运⾏、客⼾端-服务端、浏览器-服务端、⼿持终端-服务端模式运⾏。⽬前主流的 SCADA 系统都⽀持 html5 瘦客⼾端发布,可以在⼿机、电脑、智能电视、云桌⾯等进⾏浏览、操作和控制。新⼀代 SCADA 系统会融合云技术,将会极⼤提⾼ SCADA 数据处理、分析的规模,以及带客⼾端负载能⼒和系统本⾝⾼可⽤性。

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

SCADA 基本架构

TDengine 与 SCADA 交互方式

TDengine 支持标准的 SQL 子集,以 OT 人员最喜欢的方式实现数据信息的交互,如下图所示:

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

SCADA 与 TDengine 交互模式

  • SCADA->TDengine

SCADA 系统广泛支持 OPC 和 MQTT 等标准通信协议,以便与外部系统进行数据交换。TDengine 平台提供了对这些数据源类型的直观可视化采集功能,消除了手写代码的需求,确保了数据的顺畅正向流通。它的操作界面简洁明了,同时系统的维护也极为方便。

  • SCADA<->TDengine

SCADA 系统通过 ODBC 标准接口与 TDengine 进行交互,确保了数据的双向流通。这种访问方式简化了操作,使得 SCADA 与 TDengine 的集成变得像操作 MySQL 数据库一样便捷,非常适合 OT 人员使用。TDengine 的最新 ODBC 版本不仅全面满足了 SCADA 系统的访问需求,而且在性能上显著超越了传统数据库。用户可以轻松使用标准的 SQL 语句来执行复杂的查询操作,如选择、投影和聚合,从而充分利用 TDengine 的强大数据处理能力。这不仅减轻了 SCADA 系统的工作量,还促进了 SCADA 与其他系统之间的数据整合,为全面的数据分析提供了更加丰富的应用方案。

TDengine 与 SCADA 交互场景

性能描述

考虑到不同 SCADA 系统的脚本执行效率和计算机硬件配置的多样性,它们在处理查询和数据插入任务时的性能可能会有所差异。经过对市场上一些领先的 SCADA 产品(如 WinCC 和 KingSCADA)进行深入测试,我们发现在标准的 4 核心 x86 Windows 系统环境下,这些系统能够实现每秒数万点的访问性能,这一性能水平已经完全能够满足绝大多数客户的实际应用需求。

架构描述

TDengine 天生适合承担 IoT 中台或数据中心的角色,无论是在边缘侧处理实时数据,还是在中心侧进行大规模数据分析,它都能提供出色的性能表现。这一特性不仅增强了现有技术方案的灵活性和扩展性,还为创新和优化提供了更多可能性。

TDengine 可以为边缘 SCADA 提供数据支持,如下图所示:

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

边缘侧 SCADA 与 TDengine 交互

TDengine 作为中心库,可以为 SCADA 提供数据支持,打破 SCADA 数据流动限制,充分调用 SCADA 展示分析能力,如下图所示:

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

不同边缘侧的 SCADA 与中心 TDengine 交互

边云协同。TDengine 支持单副本、双副本、三副本的高可用、分布式、负载均衡集群方案,以及容灾双活部署,方案灵活,而且部署、运维十分方便。边云系统支持断线续传、统计学降采样同步、删除修改同步等功能,数据传输压缩 80% 以上,极大节省带宽。

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

TDengine 边云协同

在只读应用场景中,TDengine 具备替代 SCADA 系统采集功能的能力,有助于减少因 IO 点数而产生的限制和成本。通过与 SCADA 客户端的无缝集成,TDengine 实现了一种创新的组合方式,显著降低了企业在数据采集和展示方面的成本负担。

打破工业实时数据库势力边界,TDengine 时序数据库与工业 SCADA 深度融合 - TDengine Database 时序数据库

TDengine 采集、SCADA 分析展示

功能描述

  • 获取实时数据

TDengine 的批流一体功能显著提升了数据处理能力,其支持的实时数据缓存确保了从数据写入到查询显示的耗时控制在数十毫秒以内,非常适合需要快速数据访问的应用场景,类似 Redis 等高速缓存解决方案。SCADA 系统利用 ODBC 接口能够迅速捕获实时数据,这对于进行报警分析和实时监控至关重要。此外,TDengine 的分组和分区查询功能,为用户提供了高效且灵活的数据查询和变量赋值能力。

Select tbname,last(val) from meters partition by tbname;
  • 获取历史数据

SCADA 系统能够无缝地从 TDengine 中检索历史数据,不仅支持等间隔降采样查询,以确保数据的均匀性和连续性,还能够对时间戳进行拉齐处理,保障数据展示的一致性。此外,TDengine 的步进和线性插值数据填充功能,使得在面对数据缺失或不连续的情况时,依然能够生成平滑连续的曲线,极大地便利了数据的可视化和深入分析。如下所示的 SQL 查询示例,进一步说明了如何利用 TDengine 进行这些高级的数据查询和处理操作。

Select _wstart,avg(val) from meters where ts>'2024-01-01 00:00:00' and ts<'2024-01-02 00:00:00' interval(1h)fill(prev);
  • 获取分析数据

TDengine 提供了对 SQL2003 窗口分析语句的全面支持,包括时间窗口、事件窗口、状态窗口、计数窗口和会话窗口等,极大地增强了数据分析的多维度能力。利用这些功能,用户能够便捷地执行复杂的查询,例如统计某段时间内设备的状态及其持续时间,这在 SCADA 系统中通常难以实现。TDengine 的这一优势,让数据分析变得更加直接和高效,为用户提供了更为深入的数据洞察。SQL 语句如下:

Select sum(t) from (select _wstart,_wduration/1000 as t,val from meters where ts>'2024-01-01 00:00:00' and ts<'2024-01-02 00:00:00' state_window(val))
where val=1;
  • 设备断线统计

物理量在指定离线时间阈值内是否有数据入库,如有则判 Online,否则判 Offline

select last(ts),tbname from meters partition by tbname having now-60s>last(ts);
  • 数据存储

TDengine 通过 OPC 和 MQTT 协议提供了可视化的数据采集配置,使得 SCADA 数据的集成变得直观而高效。利用 TDengine 的 ODBC 接口,用户可以轻松地通过 SCADA 系统的脚本,将自定义数据定时或基于事件触发地存储到 TDengine 中,实现数据的自动化收集和实时更新。TDengine 的批量插入功能进一步优化了数据写入过程,大幅提升了写入效率,尤其在处理大规模数据集时,能够显著减少数据写入时间,提高系统的整体性能。

Insert into d1 values('2024-08-01 00:00:00',1,1) d2 values('2024-08-0200:00:00',2,1).....
  • AI 应用

借助 TDengine 的 AI 大模型功能,我们能轻松实现时序数据的预测和异常点检测功能。其中预测包含对于历史数据的补全以及未来数据的预测分析。使用也是非常简单,TDgpt 提供了 SQL 函数 Forecast 来实现时序数据的预测,SQL 示例如下:

select _rowts, forecast(ts, val, 300) from meters;

其中 forecast(ts, val, num[, confidence-level][, 'option str']):Note: ts(必选参数)表示时序列,为表中已存在的列名;val(必选参数)是数据列,为表中已存在的列名;num(必选参数)表示预测多少数据(即输出行数);confidence-level(可选参数)表示置信水平,[1, 99]之间的整数;’option str’(可选参数)是预测参数,形如 k1=v1, k2=v2 的逗号分隔的字符串;返回值,该函数的返回类型与 val 数据列类型一致,其他信息需要使用伪列进行提取。

TDgpt 提供了 SQL 函数  Anomaly 提供时序数据异常检测,SQL示例如下:

select _rowts, anomaly(ts, val, 99) as anomaly from meters;

其中 anomaly(ts, val[, confidence-level][, 'option str'])

Note: 该函数的返回类型与 val 数据列类型一致,当输入时间戳对应的数据预测为异常值时,返回值为预测值,否则返回值为 NULL 。其他信息同 FORECAST,需要使用伪列进行提取。

总结

TDengine 与 SCADA 系统的无缝集成,不仅简化了操作流程,提高了工作效率,还显著降低了整体成本。借助 TDengine 强大的数据查询和分析能力,SCADA 系统能够深入挖掘数据应用并高效展示,从而为用户提供更加丰富和直观的数据体验。

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

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

相关文章

渗透靶场:事件和属性被阻止的反射xss

本关很多标签被拦截了&#xff0c;需要使用 burp 模糊测试哪个标签可以用 <a>和<animate>可以使用&#xff0c;<animate>是<svg>标签中用来给动画设定属性的&#xff0c;看看<svg>可不可用 利用<svg>、<animate>、<a>来构造 这…

STM32中Usart的使用

目录 一、USART简介 1.电平标准 2.通信接口 3.硬件电路 4.串口参数以及时序 5.串口时序 二、USART结构介绍 1.USART功能框图 ​编辑 1.1 功能引脚 1.2 数据寄存器 1.3 控制器 1.4 波特率发生器 1.5简化结构图 2.数据帧 一、USART简介 USART&#xff08;Universa…

鸿蒙HarmonyOS 5小游戏实践:数字记忆挑战(附:源代码)

数字记忆挑战游戏&#xff1a;打造提升大脑记忆力的鸿蒙应用 在当今数字时代&#xff0c;人们的记忆力面临着前所未有的挑战。从日常的待办事项到复杂的工作任务&#xff0c;强大的记忆力都是提高效率和表现的关键。本文将介绍一款基于鸿蒙系统开发的数字记忆挑战游戏&#xf…

记录一个C#/.NET的HTTP工具类

记录一个C#/.NET的HTTP工具类 using Serilog; using System.Net; using System.Text; using System.Text.Json;namespace UProbe.Common.Comm.Http {public class HttpClientHelper{/// <summary>/// 发送HttpGet请求/// </summary>/// <typeparam name"T…

深度学习:PyTorch卷积神经网络之图像入门

本文目录&#xff1a; 一、二值图像二、**灰度图像*三、**索引图像**四、**真彩色RGB图像****星空图** 前言&#xff1a;这篇文章开始讲解CNN&#xff0c;此前讲解的人工神经网络&#xff08;ANN&#xff09;如果有小伙伴还不清楚&#xff0c;一定要多看&#xff0c;多练习&…

PyTorch RNN实战:快速上手教程

PyTorch实现RNN的实例 以下是一个使用PyTorch实现RNN的实例代码,包含数据准备、模型定义、训练和评估步骤。 RNN流程图 RNN流程图,在使用t来表示当前时间点(序列中的第t项),RNN接收所有先前内容得单一个表示h和关于序列最新项的信息,RNN将这些信息合并到迄今为止所有看…

C++项目快速配置SQLite

前言&#xff1a;完全没接触过数据库&#xff0c;但老师课程设计要求数据存储在数据库怎么办&#xff1f;&#xff1f;&#xff1f;主包看了些网络上的资源&#xff0c;觉得讲得都不是很能快速上手&#xff0c;所以决定自己写一篇博客 SQLiteCpp是一个基于 C 封装的 SQLite 操…

ArcGIS中对输入面图层A的相交问题批量处理的实现方法

一、背景及意义 在各种数据建库中&#xff0c;拓扑错误是必须处理的&#xff0c;其中最常见的是重叠问题&#xff0c;我们常用拓扑工具来检查重叠&#xff0c;但是由于拓扑工具只能作为检查且不能批量修改&#xff0c;此时我们可以使用“相交”工具来检查出重叠部分&#xff0…

【学习笔记】3.3 Decoder-Only PLM

参考资料&#xff1a;https://github.com/datawhalechina/happy-llm Decoder-Only是当前大型语言模型&#xff08;LLM&#xff09;的基础架构&#xff0c;如 GPT 系列。GPT 是 Decoder-Only 架构的代表&#xff0c;而开源 LLM 如 LLaMA 也是在 GPT 架构基础上发展而来的。 3…

主流的Attention Backend介绍

Attention Backend 技术背景 注意力&#xff08;Attention&#xff09;机制在深度学习中扮演着关键角色&#xff0c;它帮助模型在处理序列数据时&#xff0c;有选择地关注输入中的重要信息。然而&#xff0c;传统的注意力计算往往受到内存访问和算力分配的双重制约&#xff0c…

Linux内存取证

我们先把linux取证文件放到kali中&#xff0c;然后这里的Ubuntu18.04-5.4.0-84-generic.zip需要不解压直接放到vol工具中 然后把Ubuntu18.04-5.4.0-84-generic放到vol工具中&#xff0c;然后开始去这个&#xff0c;使用vol工具查看linux的版本信息 这个LinuxUbuntu18_04-5_4_0-…

使用docx4j 实现word转pdf(linux乱码处理)

由于系统之前使用了是itext进行转换的&#xff0c;现在已经不是开源的工具了&#xff0c;需要收费&#xff0c;然后进行改造&#xff0c;具体处理如下。 <dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version…

C++ - vector 的相关练习

目录 前言 1、题1 只出现一次的数字 &#xff1a; 解法一&#xff1a;遍历 参考代码&#xff1a; 解法二&#xff1a;按位异或 参考代码&#xff1a; 解法三&#xff1a;哈希表 参考代码&#xff1a; 2、题2 杨辉三角&#xff1a; 参考代码&#xff1a; 总结 前言 …

JDK 1.8 Stream API:集合流处理深度解析

JDK 1.8 Stream API&#xff1a;集合流处理深度解析 摘要&#xff1a;Stream API 是 JDK 1.8 的革命性特性&#xff0c;它将集合操作从传统迭代升级为声明式函数式处理。Stream API三个阶段&#xff08;创建→中间操作→终端操作&#xff09;详解流处理机制&#xff0c;辅以代…

2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(二)

2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷&#xff08;二&#xff09; 第一部分&#xff1a;第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&#xff1a;应急响应&#xff08;可以培训有答案&#xff09;任务 2&…

AiPy实战(5):效率革命!5分钟构建行业分析报告

在当今数字化时代&#xff0c;数据呈指数级增长&#xff0c;行业分析报告对于企业的决策制定愈发关键。传统上&#xff0c;撰写一份行业分析报告&#xff0c;需要分析师耗费大量时间从各类数据库、新闻资讯平台、行业报告中手动收集数据&#xff0c;再进行整理、分析和撰写&…

docker小白自存-windows系统通过docker安装n8n-nodes-puppeteer

n8n上直接在社区下载puppeteer节点&#xff0c;使用时会报错说没有chromium依赖。 找到了n8n-nodes-puppeteer的github试图解决 根据他的docker安装指南执行&#xff0c;运行容器时会报exec /docker-custom-entrypoint.sh: no such file or directory &#xff08;明明文件都有…

脚本shebang的作用与使用方法

#!&#xff08;称为 shebang 或 hashbang&#xff09;是脚本文件开头的前两个字符&#xff0c;用于告诉操作系统应该使用哪个解释器来执行该脚本。 核心作用&#xff1a; 指定解释器&#xff1a; 明确告诉系统运行这个脚本时应该调用哪个程序&#xff08;解释器&#xff09;来…

【大模型学习 | BERT 量化学习 (1)】

BERT 情感分析 一、 数据集加载与模型训练 from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments from datasets import load_dataset import torch import numpy as np from sklearn.metrics import accuracy_score mode_na…

用低通滤波优化串口或485 通信指示灯电路

常见的通信指示灯电路就是简单的把LED 连到TXD 和RXD 上&#xff0c;一有动静就闪一下。问题是&#xff0c;如果波特率很高&#xff0c;一次通信时间很短&#xff0c;相当于占空比很低&#xff0c;LED 闪烁的亮度就很弱&#xff0c;不容易观察。比如MODBUS 通信&#xff0c;波特…