TDengine 与 SCADA 强强联合:提升工业数据管理的效率与精准

news2024/11/6 7:26:40

随着时序数据库(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 系统,即不再是纯软件的形态,⽽是软、硬⼀起的综合监控系统。为了⽅便认识,本⽂按照传统⼯业五层架构进⾏讲解。

工业五层架构

SCADA 系统规模收缩性很⼤,性能较好的 SCADA 产品会采⽤分布式部署架构,将不同的服务部署在不 同计算机节点上,充分利⽤计算机性能,单套SCADA系统的采集设备点数规模可以到数万点规模。 SCADA功能通常分为采集服务、实时服务、历史服务、报警服务、事件服务、登录服务、校时服务、 脚本引擎、对外接⼝等⼏⼤模块。功能上包含实时⼯艺流程图、实时报警、历史报警、实时曲线、历史曲线、实时报表、历史报表、事件查询、通讯监视、故障诊断、冗余部署等功能。按照架构来分,SCADA软件包含单机、C/S架构、B/S架构、M/S架构,即单机运⾏、客⼾端-服务端、浏览器-服务端、⼿持终端-服务端模式运⾏。⽬前主流的SCADA系统都⽀持html5瘦客⼾端发布,可以在⼿机、电脑、智能电视、云桌⾯等进⾏浏览、操作和控制。新⼀代SCADA系统会融合云技术,将会极⼤提⾼SCADA数据处理、分析的规模,以及带客⼾端负载能⼒和系统本⾝⾼可⽤性。

SCADA 基本架构

TDengine 与 SCADA 交互方式

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

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 提供数据支持,如下图所示:


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

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

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

TDengine 采集、SCADA 分析展示

功能描述

1.获取实时数据

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

Select tbname,last(val) from meters partition by tbname;

2.获取历史数据

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);

3.获取分析数据

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;

4.设备断线统计

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

select last(ts),tbname from meters partition by tbname having now-60s>last(ts);

5.数据存储

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-02 00:00:00',2,1).....

6.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.coloradmin.cn/o/2134784.html

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

相关文章

cmd命令

常用命令 查看电脑名称&#xff1a; hostname 查看网卡信息&#xff1a; ipconfig 快速打开网络设置界面&#xff1a; control.exe netconnections 或 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpld 打开防火墙设置&#xff1a; wf.msc 指定网卡设置IP地址&#…

linux_L1_linux重启服务器

使用putty登录到linux服务器切换到管理员账号 sudo -s重启命令 reboot

Unity全面取消Runtime费用 安装游戏不再收版费

Unity宣布他们已经废除了争议性的Runtime费用&#xff0c;该费用于2023年9月引入&#xff0c;定于1月1日开始收取。Runtime费用起初是打算根据使用Unity引擎安装游戏的次数收取版权费。2023年9月晚些时候&#xff0c;该公司部分收回了计划&#xff0c;称Runtime费用只适用于订阅…

ROS1录包偶现一次崩溃问题定位

现象&#xff1a;崩到了mogo_reporter里面 堆栈&#xff1a;crash里面同时存在两个主线程的堆栈 代码 #include "boost/program_options.hpp" #include <signal.h> #include <string> #include <sstream> #include <iostream> #include <…

【PSINS】ZUPT代码解析(PSINS_SINS_ZUPT)|MATLAB

这篇文章写关于PSINS_SINS_ZUPT的相关解析。【值得注意的是】:例程里面给的这个m文件的代码,并没有使用ZUPT的相关技术,只是一个速度观测的EKF 简述程序作用 主要作用是进行基于零速更新(ZUPT)的惯性导航系统(INS)仿真和滤波 什么是ZUPT ZUPT是Zero Velocity Update(…

828华为云征文 | 使用华为云Flexus云服务器X安装搭建crmeb多门店商城教程

&#x1f680;【商城小程序&#xff0c;加速启航&#xff01;华为云Flexus X服务器助力您的业务腾飞】&#x1f680; 1、点击链接进入华为云官网&#xff0c;页面如下&#xff1a; 华为云Flexus云服务器X选购页面 https://www.huaweicloud.com/product/flexus-x.html 2、进…

Uniapp + Vue3 + Vite +Uview + Pinia 实现提交订单以及支付功能(最新附源码保姆级)

Uniapp Vue3 Vite Uview Pinia 实现提交订单以及支付功能&#xff08;最新附源码保姆级&#xff09; 1 效果展示2 提交订单2.1 cart.js2.2 submit-order.vue 3、支付页面order-pay.vue 1 效果展示 2 提交订单 2.1 cart.js // src/pages/store/cart/cart.js import {defineS…

【最新华为OD机试E卷】报文响应时间(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

mybatis获取参数的5种情况

Mybatis获取参数值的两种方式 mybatis获取参数值的方式有两种: ${} 和 #{} ${} 这个的本质就是字符串拼接 这个无法避免sql注入攻击 #{} 这个的本质就是占位符(尽量使用 #{} 的方式) 可以避免sql注入 mybatis获取参数值的情况 1.mapper接口方法的参数为单个字面量类型…

solidity-20-sendeth

发送ETH 这章的标题让我觉得奇怪&#xff0c;因为先前我也发送ETH&#xff0c;如上一篇提到的recieve和fallback函数。 重现了教程中的代码 // SPDX-License-Identifier: MIT pragma solidity ^0.8.21;contract sendeth{// 这个事件是为了打log,记录收到的eth和剩余的gas fee…

echarts中tooptips提示框超出了怎么解决

我们在制作echarts表格时&#xff0c;有时候会遇到提示框内容较多&#xff0c;会让提示框超出&#xff0c;展示不全数据&#xff0c;如下&#xff1a; 这种情况下需要在tooltips下增加一些属性&#xff1a; 1.confine: true&#xff1a;这个配置的作用是让提示框&#xff08;t…

Docker笔记-容器数据卷

Docker笔记-容器数据卷 docker的理念将运行的环境打包形成容器运行&#xff0c;运行可以伴随容器&#xff0c;但是我们对数据的要求是希望持久化&#xff0c;容器 之间可以共享数据&#xff0c;Docker容器产生的数据&#xff0c;如果不通过docker commit生成新的镜像&#xf…

大数据新视界 --大数据大厂之数据挖掘入门:用 R 语言开启数据宝藏的探索之旅

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

类型转换等 面试真题

题目1 请问哪个结果为NaN A. 123null B. 123‘1’ C. 123/0 D. 123undefined 在这四个表达式中&#xff0c;只有D. 123 undefined 的结果是 NaN&#xff0c;原因如下&#xff1a; A. 123 null 结果是&#xff1a;123原因&#xff1a;null 在数值运算中会被自动转换为 0&a…

mac上什么压缩软件没有广告,苹果电脑解压软件BetterZip有广告吗

mac上有很多压缩软件&#xff0c;可以帮助用户压缩或解压各种格式的文件&#xff0c;如zip、rar、7z等。但是&#xff0c;有些压缩软件会在使用过程中弹出广告&#xff0c;影响用户的体验和效率。那么&#xff0c;mac上什么压缩软件没有广告呢&#xff1f;苹果电脑解压软件Bett…

一步步教你利用大模型开发个性化AI应用,告别‘人工智障’!

为了回答这个问题&#xff0c;我用说人话的方式拿gpts创建了一个“我”&#xff0c;然后让她来回答这个问题。&#xff08;确认过眼神&#xff0c;我是懂套娃的&#xff09; 接下来我会先展示下整个定制过程&#xff1b;然后我们一起看一下她能把题答到什么程度&#xff1b;最后…

UnrealEngine 打包Android平台应用

虚幻引擎 支持将项目发布到 安卓&#xff08;Android&#xff09; 移动设备上&#xff0c;并且提供了若干功能帮你将项目发布到 谷歌游戏商店。本节包含了如何设置Android开发环境、如何使用Android功能和服务、以及如何为发布游戏做准备相关的指南。 当前SDK要求 当前UE版本…

JavaSE篇之内部类和图书系统

1.内部类(类中类) 在Java中&#xff0c;将一个类定义在另一个类内部&#xff0c;前者称为内部类&#xff0c;后者称为外部类。 注意事项&#xff1a; 1. 1.静态内部类&#xff08;被static修饰的内部类&#xff09; 1.在静态内部类的方法中不能直接引用外部类的成员变量&…

中国农业银行——轻量式云原生应用平台(轻云平台)

2021年10月&#xff0c;中国人民银行等联合发布了《关于规范金融业开源技术应用与发展的意见》&#xff08;银办发〔2021〕146 号&#xff09;&#xff0c;规范金融机构合理应用开源技术&#xff0c;提高应用水平和自主可控能力&#xff0c;促进开源技术健康可持续发展。前期&a…

幻灯片放映过程中如何调出激光笔

1、第一步先打开制作好的幻灯片 2、进行幻灯片放映 3、看到上图最下面一行&#xff0c;减号左方的小杯进入幻灯片播放 4、幻灯片下方有个放映&#x1f58a;&#xff0c;点击一下 5、选择激光笔就好啦