news 2026/9/28 6:15:51

Kingscada日报表与趋势曲线:基于任意变量查询的完整实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kingscada日报表与趋势曲线:基于任意变量查询的完整实现

最近接触了不少做产线数字化改造的同行,大家不约而同地在问Kingscada里日报表和趋势曲线的做法。很多人一上来就想着接数据库、写脚本,其实Kingscada自带的实时历史库完全够用,而且用起来比你想的简单得多。标题里那句话“通过查询ks任意一变量生成”,就是这套玩法最核心的思路:先有历史数据,再基于变量名去查、去算、去画,最终落到日报表和趋势曲线上。

这篇就围绕Kingscada自带的实时数据库,把从变量归档、日报表生成到趋势曲线联动的完整流程捋一遍。不管你是刚接触组态软件的新手,还是被项目报表折磨过几次的老手,按这个思路走,基本都能少踩一半的坑。

1. 需求分析与整体设计思路

1.1 日报表和趋势曲线到底在解决什么问题

工业现场做日报表,本质上不是在“做表格”,而是在回答三个问题:今天这台设备到底运行了多久?产量是多少?有没有异常时段?趋势曲线则是把时间轴拉出来,让人直观看到变量的变化过程,比如温度在几点开始超限、液位在哪个时间段波动最大。

很多人第一反应是“那我用SQLite、MySQL记录数据,然后写查询语句生成报表”。这个方向没错,但如果你用的是Kingscada,其实是在重复造轮子。Kingscada自带的实时数据库模块已经把数据采集、压缩存储、按时间检索这些事情做完了,你只需要把变量归档打开,然后通过查询任意一个变量名,就能把数据捞出来生成报表、绘制曲线。省掉的不仅是开发工作量,还有后期维护数据同步的麻烦。

1.2 为什么首选“Kingscada自带历史数据库”

组态软件里做历史数据,绕不开两条路:一条是自带实时库,另一条是外接关系数据库。我做了几个项目对比下来,自带历史库的优势非常明显。

第一是数据写入及时。Kingscada采集变量的频率可以做到几百毫秒一次,数据先写入实时库再批量落盘。而外接数据库如果频繁连接、插入,很容易成为瓶颈,尤其点位多的时候,写库延迟直接拖累采集线程。

第二是查询方便。自带历史库对时间范围、变量名称做了索引,查询某个变量某段时间的数据,接口调用非常直接。你不需要关心数据表结构,不用学SQL,甚至不用理解数据库连接串怎么配。

第三是部署省心。外接数据库要考虑安装服务、配置账号、备份数据,现场如果是个老工控机,内存资源本来就紧张,多一个数据库服务只会添乱。Kingscada自带历史库随工程走,换机器、拷工程,数据跟着走,不用额外处理。

当然,自带历史库也不是没有短板。它的定位偏“产线监控级”数据存储,如果要做复杂的业务分析、跨系统共享数据,还是建议用OPC或者接口把数据同步到专门的数据平台。但就日报表和趋势曲线这个需求来说,自带库已经足够。

1.3 变量规划是后边所有操作的地基

别看“任意变量查询”听起来很自由,实际项目里,变量规划做得不好,后边查询和报表会特别痛苦。我有一个比较深的体会:变量名就是数据资产的身份证,一开始就按统一规则命名,后边所有功能开发都会很顺畅。

建议在工程创建之初就定义变量命名规范,比如:

  • 温度类:TAG_Temp_React_001表示反应釜1号温度
  • 压力类:TAG_Press_React_001表示反应釜1号压力
  • 状态类:TAG_Status_Pump_001表示1号泵运行状态

这样做的原因有两个。一是查询任意变量时,通过关键字能快速筛选,不至于几百个变量里一个个找。二是在日报表模板里做批量配置时,利用变量名的前缀规律,可以复制模板快速修改,而不用每次都从下拉列表里翻半天。

2. 历史数据存储机制深度解析

2.1 什么是“历史数据归档”以及为什么要手动开启

几乎每个新手都会遇到一个问题:变量都建立了,报表也做了,但运行起来报表就是空的。这时候90%的原因是变量没有开启历史数据归档。

在Kingscada里,“归档”就是指把变量的实时值按设定的周期和时间段保存下来。和PLC里的保持性存储器概念类似——只有你把数据“保持”下来,之后才能随时去查。新建变量时默认是不归档的,你需要进变量属性,找到“历史数据”或者“归档”选项,勾选启用,设置存储周期。

归档频率怎么定?这个很关键。如果产线波动快,比如温度、压力、流量,建议500毫秒到1秒存一次。如果是液位或者累计量这种变化相对平滑的,可以5秒到10秒存一次。归档频率越密,数据越精细,但存储文件膨胀也快。一个变量按1秒存一次,24小时就是86400条记录,几十个变量跑一个月,文件体量会非常可观,所以不要无脑设成最小间隔。

2.2 实时值、平均值、最大值、最小值几种存储方式的区别

Kingscada的历史存储通常支持几种方式:存实时值、存区间平均值、存区间最大值和最小值。很多人不理解这些选项到底影响什么。

简单理解:如果你关心变化过程,存实时值;如果你关心一段时间里的平均水平,存平均值;如果你要看报警峰值,存最大值。日报表里的“今日最高温度”“今日最低压力”,就依赖最大值、最小值的归档记录。

实际操作中,我会把变量按用途分开归档。用于趋势展示的核心工艺变量,存实时值,周期1秒;用于日报表统计的变量,再单独配置平均值归档,周期1分钟。这样报表查询1分钟平均数据,趋势曲线看1秒实时数据,两不耽误。一个变量可以同时配置多种存储类型,不要只勾一个。

2.3 历史数据库的存储位置和生命周期

Kingscada自带历史数据通常存储在工程目录下的指定文件夹中,按时间分块保存。这块数据是二进制格式,不能用文本工具打开,但它有自己的管理机制,比如按存储天数拆分文件,支持定期自动清理。

建议在一开始就设置好最大存储天数。比如现场要求保留90天数据,那就把保存周期配成90天,超期数据自动覆盖。如果不设置,文件会越滚越大,最后磁盘满了,第一个遭殃的就是历史查询,报表直接卡死。

注意:修改历史存储配置后,不是立即生效的。很多时候需要重启Kingscada的运行环境,或者至少重新初始化历史库服务,新手在这儿卡的时间最多。配完记得“重启使生效”这个动作。

3. 日报表的实现思路与具体步骤

3.1 日报表本质上是“按时间分组、按变量聚合”

日报表的逻辑并不复杂:把某一天24小时的数据,按小时或按班次分组,然后对每个变量计算平均值、累计值、最大值、最小值。Kingscada的报表模块背后就是帮你完成这么一件事——你只需要告诉它变量名、起始时间、结束时间、统计方式,它自动去历史库里捞数据。

一个我常用的类比:日报表就像去查一个人的体检报告。历史库是抽血样本,变量名是体检项目,起始结束时间是你挂号的日期范围,统计方式是你关心的指标——看全称平均值、最高值、最低值,完全由你决定。

3.2 创建日报表的逐步操作

在Kingscada的工程环境中新建一个画面并插入报表/表格控件,之后的配置步骤如下:

第一步,确定时间范围。报表控件通常有“起始时间”和“结束时间”属性,可以绑定到两个内部变量,运行时由操作员在画面上选择日期。不要写死时间,否则每天都要改工程,很傻。

第二步,添加报表行。每一行绑定一个变量,设置变量名后,再指定统计方式。比如要出温度日报,就添加一行,变量选择TAG_Temp_React_001,统计方式选择“平均值”,显示单位选择℃。

第三步,设置统计周期。日报表通常按小时出数据,那就把分段时间设成60分钟。这样一张日报表自动生成24行,每行是某个小时的统计数据。

第四步,设计表头和格式。设置列标题、表头文字、字体字号、小数位数。这一步决定了报表能不能直接打印给领导看,建议把有效数字位预留出来,温度显示一位小数,压力显示两位小数。

第五步,绑定查询触发条件。画面放一个“生成日报表”按钮,按钮的弹起事件里调用报表查询函数,让它根据当前时间控件的值去查历史库,刷新报表数据区域。

3.3 日报表白底数据为空的快速自查

即便你完全按上面五步做了,还是可能遇到数据空白。这里有一个排查顺序极其实用:先看变量有没有归档,再看归档时间段对不对,最后看报表统计方式是否匹配。

如果变量归档没开,历史库根本没有这个变量的数据,报表控件再聪明也查不到任何东西。如果归档开了,但时间范围选的是今天,而数据存在昨天,报表当然也是空的。还有一个隐藏问题,就是统计方式不匹配——比如你存的是实时值,却偏要查平均值,部分版本里会直接查不到数据,因为平均值的归档序列是空的。

提示:日报表的查询时间范围,最好默认设置成“昨天0点到今天0点”。因为生产上很多班报表是早上统计前一天的数据,如果默认选今天0点到当前时刻,那上午运行时数据是残缺的,很容易误判。

3.4 导出Excel和打印的几个细节

Kingscada的报表控件基本都支持导出和打印。导出Excel时注意三点:一是提前在目标电脑上装好对应版本的Office或WPS,否则导出组件会直接报错;二是导出路径要选到有写权限的文件夹,别放到系统盘根目录;三是导出前一定先把报表数据刷新出来,没刷新就导出,Excel里就是空表。

打印的话,页面设置里要改成横向,因为日报表通常列数和宽度都比较占地方,纵向打印经常被裁掉最右边的列。这个坑我踩过不止一次,每次都是现场办公室的打印机打出来少了几列数据,特别尴尬。

4. 趋势曲线的搭建与实用技巧

4.1 趋势曲线不只是“折线图”

Kingscada的趋势曲线控件和普通图表不一样,它是带时间轴联动、支持历史回放、支持多变量叠加显示的专用控件。在画面上插入趋势控件后,主要配置点包括:曲线数量、变量绑定、时间轴范围、数据源类型。

关键的一个设置是数据源要选“历史数据”,而不是“实时数据”。很多新手插入趋势控件后,默认是实时刷新模式,画出来的曲线只从当前时刻往右走,看不到任何历史波形。要查某一天的数据,必须在属性里把数据源改成历史库,并指定起始时间。

4.2 多变量趋势曲线怎么摆才不乱

设备上有温度、压力、流量多个变量,一股脑塞进同一个趋势控件,曲线叠在一起根本没法看。我的习惯是分两种情况处理:

如果变量数量不超过4个,且量纲接近,比如都是温度,可以放同一个趋势控件,用不同颜色区分。如果量纲差异大,比如温度和压力一起,建议用双Y轴,左侧Y轴给温度,右侧Y轴给压力。

如果变量超过4个,就别硬塞了,多用几个趋势控件,每个控件放一两类变量,画面用标签页切换。这样画面看起来清爽,操作员也好用。

绑定额外的一个小技巧:曲线的线宽和颜色,尽量按现场习惯统一。比如温度用红色,压力用蓝色,状态量用绿色,这不需要什么标准,但会极大提升值班人员看图的速度。

4.3 时间轴缩放和定位

趋势曲线的价值在于回看。Kingscada里可以通过鼠标拖拽或者按钮来缩放时间轴。我一般会在趋势画面下面放几个快捷按钮:24小时、12小时、8小时、1小时。“24小时”按钮把时间轴设成近一天,“1小时”按钮则看最近一小时的变化细节。

这里有一个注意点:时间轴的起始时间要设置成“远端”,也就是相对当前时间的偏移量。比如点“1小时”按钮,就把起始时间设为当前时间减去3600秒,结束时间设为当前时间。这样每次点按钮,显示的都是最近一小时,而不是某一天某一小时,更符合现场巡检的直觉。

4.4 趋势曲线的数据断线和“毛刺”怎么解决

实际运行中,趋势曲线最常遇到两类问题:曲线中途断线、曲线出现异常跳变。

断线通常是变量归档通道不稳定。排查思路是先看这个变量在历史报表里有没有数据,如果报表有数据而趋势没有,问题大概率出在趋势控件的数据源配置上,检查是不是误选了实时模式。如果报表里这段数据本身就是空白,那就是采集断线了,去查PLC通讯连接。

异常跳变通常是数值滤波没做。现场工况下,传感器偶发干扰是家常便饭,一个瞬间的尖峰值能直接把曲线拉得很难看。解决办法是给变量添加滤波或者限幅处理。Kingscada的变量属性里如果有滤波选项,直接用;没有的话,在PLC程序里加一个简单的高低限判断也能解决大部分毛刺。

5. 常见问题与排查技巧实录

5.1 常见问题速查表

下面这张表是我在几个项目里整理出来的高频问题,基本覆盖了日报表和趋势曲线联调阶段的绝大多数情况。

现象大概率原因快速处理办法
日报表全部是空的变量归档没启用检查变量属性,勾选历史归档并重启
今天的数据有,昨天的没有存储天数设置太短调大历史保存时间范围
部分变量有数据,部分没有变量没归档或者采集未连接查PLC通讯,确认变量实时值是否刷新
趋势曲线只有当前时刻一条线数据源选了实时模式切换为历史数据源,设置查询时间
趋势曲线断断续续采集通道不稳定用通讯诊断工具查丢包率,重新初始化通道
报表数据总和和实际产量对不上统计方式选错累计量应该选累计值而不是平均值
导出Excel失败缺少Excel组件或路径无权限安装办公软件,换可写路径
打印报表缺列页面方向不对改成横向打印,调整页边距

5.2 因为“类型不匹配”折腾一整天的一个案例

有一个项目,做的是储罐液位日报表。变量在Kingscada里定义的是模拟量,报表行配置时我随手在“数据类型”下拉里选了整型。结果查询出来的液位全部是0,试了好几次都以为是归档没生效,折腾很久才发现是数据类型不匹配。

这个启发是:报表字段的数据类型必须和变量定义保持一致。模拟量是浮点数就选浮点,整数标签就选整型,状态量就选离散/布尔。选错的话,历史库读取数据时会按错误类型解析,轻则显示异常,重则直接空白。

5.3 时间同步问题最容易在交接班时暴露

生产现场经常有多台触摸屏、多个上位机,如果各设备时间不统一,日报表的交班时段就会错位。比如交接班时间名义上是8点,但电脑时间快了两分钟,最后统计出来的8点产量就少了一截。

解决这个问题的笨但有效办法是:在Kingscada启动时加上时间自动校时,让所有上位机以一台时钟源为准。公司里有NTP服务器最好,没有的话,至少保证工控机每周和手机时间对一次。虽然土,但比事后查报表里的数据缺口要省心得多。

5.4 从其他组态软件迁移数据的一个思路

有些工厂以前用别的组态软件,比如mcgs,历史数据堆了一大堆,想迁移到Kingscada里继续用。如果原系统数据没有按标准格式导出,想直接把历史数据“平移”过来基本不现实,因为各家历史库的底层存储格式各不相同。

我的建议是:不要纠结历史数据迁移,把重点放在“当前值和后续数据”的连续采集上。原系统的历史数据如果有必要留存,可以让原系统继续运行一段时间,或者让它把历史数据导出成CSV/Excel存档,作为备份供查询。Kingscada这边的历史库从接入那天开始积累新数据,两套体系并行一段时间,等新系统数据量够了,再停旧系统。

6. 几个能让日报表和趋势曲线更好用的经验

日报表和趋势曲线做到“能显示”只是及格线,做到“好用”才是经验值。这里分享几个我在项目里反复用的小做法。

第一,把“查询时间段”做成一个独立的小控件区,放上“昨日”“本周”“本月”三个快捷按钮。操作员不需要去手动输入时间,点一下按钮,报表自动刷新。这能省掉大量培训成本,因为工人真的不愿意研究怎么选时间范围。

第二,报表的画面里,很重要的一个细节是“刷新提示”。查询操作完成后,在画面角落显示一下“数据已更新”的状态,或者显示查询所花的时间。这个小提示在现场很有用,不然你以为画面卡死了,实际上数据已经在刷新。

第三,趋势曲线的画面不要塞太满,保留一些空白区域。曲线旁边至少要留一个信息栏,显示当前鼠标所在位置的时间戳和对应数值。值班人员排查异常时,移动鼠标就能读到精确值,比肉眼去刻度上估要准得多。

第四,做好“一键回到正常模式”。很多人会去缩放趋势时间轴看历史,看完之后需要恢复到实时刷新模式。如果没这个功能,操作员就会被困在历史画面里,以为监控丢了。做一个“恢复实时”按钮,把数据源切回实时、时间轴归零,这是人机工程上的小细节,但很能提升体验。

第五,如果项目有条件,建议给日报表做一个“数据导出自动命名”的规矩。导出的Excel文件名不要叫“报表1”,而是用变量名加日期时间,比如TAG_Temp_React_001_20250614.xlsx。文件多了以后找起来真的省事,这个习惯从第一个项目就值得养成。

说实话,Kingscada这套自带历史库的工具链,本质上就是让你把精力集中在“变量怎么定义、报表怎么呈现”上,而不必去研究底层存储和查询机制。我自己做项目时,日报表和趋势曲线这一整套,从零搭建到跑通,顺利的话一天之内就能完成。遇到问题也别慌,按着“变量是否归档、时间范围是否正确、类型是否匹配、数据源是否选历史”这几个方向排查,绝大多数坑都能很快爬出来。希望这篇整理对正在折腾Kingscada的你有点帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 6:14:27

刀具识别数据集实战:VOC 5089张原图与81.1%识别率训练指南

简介:这份刀具识别数据集面向计算机视觉学习者与工业检测方向的开发者,提供可直接用于目标检测训练与验证的VOC格式标注资源,帮助解决刀具类别识别任务中数据获取与标注成本高的问题。压缩包内共2000个文件,以xml标注文件为主&…

作者头像 李华
网站建设 2026/9/28 6:13:36

WPF动画实战指南:从依赖属性到Storyboard的性能优化与技巧

做 WPF 开发的朋友,迟早会遇到动画需求。登录窗体的淡入淡出、仪表盘的动态柱条、后台系统的加载进度条,哪怕你只是写普通的管理系统,老板也会指着某个网页交互动画说“照着这个效果来一个”。WPF 动画本质上不是逐帧手绘,而是基于…

作者头像 李华
网站建设 2026/9/28 6:12:13

TC264串口通信实战:ASCLIN配置与iLLD驱动详解

1. 为什么TC264的串口值得单独拿出来讲英飞凌TC264这颗芯片在嵌入式圈子里出现的频率越来越高,尤其是智能车竞赛、电机控制、车载网关这类场景。很多人第一次拿到TC264主板的时候,第一反应是"这玩意儿怎么连个串口都这么难搞"。我当初也是这么…

作者头像 李华
网站建设 2026/9/28 6:11:01

Umar Jami谈AI时代的学习经验:用TaoToken统一Key跑通CUDA与Triton实验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 6:10:45

游戏陪玩DDoS防护实战:分层防御与源站隐藏方案

做游戏陪玩这行,最怕什么?不是玩家跑单,不是陪玩跳槽,是半夜三点接到监控报警电话:高防IP被打满,几百个语音房全部掉线,用户刷屏问“平台是不是跑路了”。我做游戏行业运维这些年,DD…

作者头像 李华
网站建设 2026/9/28 6:09:59

增强型Howland恒流源设计:从原理推导到PCB布局与实测

恒流源这个东西,说简单也简单,一个运放加一个MOS管,几个电阻就能搭出来;说难也难,真正要做到微安级稳定、负载从零到几百欧姆变化时电流纹丝不动,那里面全是细节。我前后做过三版恒流源,从最基础…

作者头像 李华