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

工业五层架构

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 系统能够深入挖掘数据应用并高效展示,从而为用户提供更加丰富和直观的数据体验。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用docker配置wordpress

docker的安装 配置docker yum源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo下载最新版本docker sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-…

门磁模块详解(防盗感应开关 STM32)

目录 一、介绍 二、程序设计 main.c文件 gate_guard.h文件 gate_guard.c文件 三、实验效果 四、资料获取 项目分享 一、介绍 MC-38常闭式门磁开关是作为IO开关输入数字信号的&#xff0c;原理是合在一起信号是导通的 , 配合有线主机使用 不能单独使用。适用于非铁质&a…

Linux——应用层自定义协议与序列化

目录 一应用层 1再谈 "协议" 2序列化与反序列化 3理解read,write,recv,send 4Udp vs Tcp 二网络版本计算器 三手写序列和反序列化 四进程间关系与守护进程 1进程组 1.1什么是进程组 1.2组长进程 2会话 2.1什么是会话 2.2会话下的前后台进程 3作业控…

08_Python数据类型_字典

Python的基础数据类型 数值类型&#xff1a;整数、浮点数、复数、布尔字符串容器类型&#xff1a;列表、元祖、字典、集合 字典 字典&#xff08;Dictionary&#xff09;是一种可变容器模型&#xff0c;它可以存储任意类型对象&#xff0c;其中每个对象都存储为一个键值对。…

C++ | Leetcode C++题解之第407题接雨水II

题目&#xff1a; 题解&#xff1a; class Solution { public:int trapRainWater(vector<vector<int>>& heightMap) {int m heightMap.size(), n heightMap[0].size();int maxHeight 0;int dirs[] {-1, 0, 1, 0, -1};for (int i 0; i < m; i) {maxHei…

python中的各类比较与计算

运算符 1.算数运算符2.关系运算符3.逻辑运算符4.关于短路求值5.赋值运算符1&#xff09;的使用链式赋值多元赋值 2)复合赋值运算符 6.位运算符7.成员运算符8.身份运算符 1.算数运算符 # 加 print(1 2) # 减 print(2 - 1) # 乘 print(1 * 2) # 余数 4%31余数为1 print(4 % 3…

【Redis】之Geo

概述 Geo就是Geolocation的简写形式&#xff0c;代表地理坐标。在Redis中&#xff0c;构造了能够存储地址坐标信息的一种数据结构&#xff0c;帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…

F12抓包11:UI自动化 - Recoder(记录器)

课程大纲 使用场景&#xff08;导入和导出&#xff09;: ① 测试的重复性工作&#xff0c;本浏览器录制并进行replay&#xff1b; ② 导入/导出录制脚本&#xff0c;移植后replay&#xff1b; ③ 导出给开发进行replay复现bug&#xff1b; ④ 进行前端性能分析。 1、录制脚…

微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 。…

pytorch快速入门(一)—— 基本工具及平台介绍

前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置&#xff1a;Anaconda Python编译器&#xff1a;pycharm、jupyter 两大法宝函数 dir&#xff08;&#xff09;&#xff1a;知道包中有什么东西&#xff08;函数 / 属性..…

llama网络结构及源码

目录 模型初始化 config lm_head transformer wte h rms_1/rms_2 attn c_attn c_proj 线性层mlp ln_f rope_cache mask_cache kv_caches tokenizer tokenizer初始化 tokennizer.encoder 位置编码和mask 确定最大文本长度 建立rope_cache 建立mask_cache …

信奥初赛解析:1.1-计算机概述

目录 前言 知识要点 一、发展史 二、计算机的分类 三、计算机的基本特征 四、计算机的应用 课堂练习 题目列表 定项选择题 不定项选择题 参考答案 定项选择题 不定项选择题 前言 从今天开始&#xff0c;我们要重点讲初赛内容&#xff0c; 预计讲半年&#xff0c;信…

Linux下编译Kratos

本文记录在Linux下编译Kratos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1Boost1.74.0oneAPI2024.2.1 一、依赖与代码 1.1 安装依赖 apt-get update apt-get install vim openssh-server openssh-client ssh \build-essential …

Oracle发邮件功能:设置的步骤与注意事项?

Oracle发邮件配置教程&#xff1f;如何实现Oracle发邮件功能&#xff1f; Oracle数据库作为企业级应用的核心&#xff0c;提供了内置的发邮件功能&#xff0c;使得数据库管理员和开发人员能够通过数据库直接发送邮件。AokSend将详细介绍如何设置Oracle发邮件功能。 Oracle发邮…

电气自动化入门01:电工基础

视频链接&#xff1a;1.1 电工知识&#xff1a;电工基础_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW?p2&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电能和电力系统 2.电工常用物理量及其应用 2.1电阻&#xff1a; 2.2电流&#xff1a; 2.3电压&…

面试官问:请描述一次你成功解决问题的经历?

面试官为什么要这么问&#xff1f; 面试官问你描述一次成功解决问题的经历&#xff0c;主要是为了评估你的几个关键方面&#xff1a; 问题解决能力&#xff1a;了解你在面对挑战时的思维方式和应对策略。 决策能力&#xff1a;考察你在压力下做出明智决定的能力。 沟通技巧&am…

Python 全栈系列271 微服务踩坑记

说明 这个坑花了10个小时才爬出来 碰到一个现象&#xff1a;将微服务改造为并发后&#xff0c;请求最初很快&#xff0c;然后就出现大量的失败&#xff0c;然后过一会又能用。 过去从来没有碰到这个问题&#xff0c;要么是一些比较明显的资源&#xff0c;或者逻辑bug&#xff0…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具&#xff0c;它通过直观的方式将数字信…

CesiumJS+SuperMap3D.js混用实现可视域分析 S3M图层加载 裁剪区域绘制

版本简介&#xff1a; cesium&#xff1a;1.99&#xff1b;Supermap3D&#xff1a;SuperMap iClient JavaScript 11i(2023)&#xff1b; 官方下载文档链家&#xff1a;SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考&#xff1a;support.supermap.com.cn:8090/w…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…