大体积混凝土测温每天产生数万条温度数据。如何从海量数据中快速提取关键信息,生成监理认可的标准报表,是所有测温工程师的核心痛点。我们基于 TG 云模式远程测温平台构建了完整的数据分析体系:从实时数据看板到历史曲线追溯,从自定义公式引擎到 C5-9 标准报表,从 ECharts 可视化到 XLS 一键导出。本文逐一拆解这些工具的使用方式和设计思路。
一、数据分析体系总览
TG 云平台的数据分析系统分为四个层次:
| 层次 | 模块 | 核心能力 | 典型使用场景 |
|---|---|---|---|
| L1 | 实时看板 | 仪表盘总览、温度分布图、设备在线率、报警概览 | 日常巡检、快速掌握全局状态 |
| L2 | 历史曲线 | ECharts 时间序列图、单设备/多通道对比、小时/天聚合、图片打印导出 | 趋势分析、峰值确认、异常排查 |
| L3 | 定制数据 | 自定义数据列(气温/表面/中心/内部最高/温差/降温速率)、公式引擎、24h 前对比 | 多维度温控指标自动计算 |
| L4 | 标准报表 | C5-9 格式标准报表、多定义管理、日期范围/聚合/步长、XLS 导出 | 竣工验收提交、监理审查签字 |
二、实时数据看板 —— 全局态势一目了然
Dashboard 是工程师每天打开频次最高的页面。它提供了一屏纵览全局的核心统计:
| 统计卡片 | 数据来源 | 技术实现 |
|---|---|---|
| 设备统计 | TG_cjqSetting / DG_cjqSetting 表 | SQL COUNT + 在线状态轮询 |
| 在线率 | 设备最后通信时间 vs 当前时间 | 差值 ≤ 2h 判定在线 |
| 温度概览 | All_LastDt.db(所有设备最新值联合查询) | max / min / avg 聚合 + 温度分布 Chart.js 图 |
| 报警概览 | custom_data_alarm 表 | 规则总数 / 已启用数 / 已禁用数 |
| 趋势对比 | 上次快照 vs 本次快照 | 在线率 delta / 平均温度 delta |
💡 设计考量
Dashboard 的数据查询针对 PostgreSQL 做了大量优化:使用物化视图汇总最新数据避免跨表 JOIN,温度图表采用 Chart.js 轻量渲染(非 ECharts),确保首次加载在 1 秒内完成。
三、历史曲线分析 —— 趋势发现的利器
3.1 单设备历史曲线
每个 TG 设备的数据存储在 PostgreSQL 数据库中(按设备 SN 分表),系统提供分页查询接口和专属曲线页面:
- 数据查询 API:
GET /api/data/history/{dtype}/{sn},支持分页(50 条/页,最大 500 条)、日期范围筛选 - 曲线页面:
/data/chart/{dtype}/{sn},32 通道时间序列全量展示 - 数据完整性:断电续传 + 断网补传机制确保曲线无断点
3.2 多分组历史曲线(ECharts 渲染)
定制数据模块中的历史图表功能,支持按测点分组渲染多条对比曲线:
- 分组管理:用户可将传感器按"底板测点组 / 承台测点组 / 墩身测点组"等逻辑分组
- 时间聚合:支持原始数据 / 小时均值 / 天均值三种聚合模式,适应不同分析粒度
- 可视化交互:ECharts 时间序列图,支持缩放、拖拽、提示框、图例筛选、另存图片、打印图形
- 数据导出:支持导出单组 XLS 和全部 XLS,方便离线分析
📌 实用技巧
分析降温速率时,建议使用"小时均值"聚合而非原始数据。原始数据由于传感器噪声会产生锯齿波动,小时均值平滑后更能反映真实的降温趋势。
四、公式引擎 —— 数据不用自己算
这是定制数据模块最核心的能力。系统内置了灵活的自定义公式引擎,让工程师像使用 Excel 一样定义数据列,系统自动从海量传感器数据中提取和计算。
4.1 传感器引用语法
| 语法 | 含义 | 示例 |
|---|---|---|
SN_通道号 | 指定设备指定通道的当前值 | TG01_04 — TG01 设备通道 4 的当前温度 |
SNB通道号 | 指定设备指定通道的 24 小时前值 | TG01B04 — TG01 通道 4 的 24h 前温度 |
max(a, b, ...) | 取最大值 | =max(TG01_01, TG01_02, TG01_03) |
avg(a, b, ...) | 取平均值 | =avg(TG01_01, TG02_01, TG03_01) |
abs(x) | 取绝对值 | =abs(TG01_04 - TG01_05) |
+, -, *, / | 四则运算 | =TG01_01 - TG01_02 |
4.2 默认列定义 + 一键智能填写
系统预置了 9 个标准数据列,覆盖常用的温控指标:
| # | 列名 | 类型 | 智能填写公式 |
|---|---|---|---|
| 1 | 序号 | 固定 | 自动递增 |
| 2 | 日期时间 | 固定 | 取传感器数据时间戳 |
| 3 | 分组名称 | 固定 | 取最后通信时间 |
| 4 | 气温 | 关键字 | =气温传感器 |
| 5 | 表面温度 | 关键字 | =表面传感器 |
| 6 | 中心温度 | 关键字 | =max(内部传感器) |
| 7 | 砼内表温差 | 关键字 | =abs(max(内部) - 表面) |
| 8 | 砼表面与气温差 | 关键字 | =表面 - 气温 |
| 9 | 降温速率(24h) | 关键字 | =avg(24h前内部) - avg(当前内部) |
用户只需一键点击"智能填写",系统自动根据关键字匹配传感器引用并填充公式,无需手动输入冗长的传感器 ID。
⚠️ 公式调试技巧
系统支持实时预览——点击"计算预览"按钮,立即从数据库拉取最新传感器值代入公式试算,验证公式正确性。如果某个传感器离线挂掉,预览会显示"-"而非报错,方便快速定位问题通道。
4.3 24 小时前数据查询(降温速率核心)
降温速率是温控的关键指标,但计算它需要对比当前值与 24 小时前值。系统通过 B 后缀引用(如 TG01B04)实现:
- 查询每个设备最新数据的时间戳(
IDATETIME字段),以此为基准向前推 24 小时 - 从 PostgreSQL 数据库中查询最接近该时间点的记录
- 将结果注入公式引擎替换 B 后缀引用,参与最终计算
这种设计保证了降温速率的计算不依赖持续 24 小时的连续数据——即使中间有通信中断(断网补传),系统仍能找到最接近 24 小时前的有效数据点。
五、C5-9 标准报表 —— 竣工验收的关键输出
C5-9 是大体积混凝土测温最核心的交付物。它是 GB 50496 附录中规定的《大体积混凝土测温记录表》,监理验收时必须签字存档。我们完整实现了该表格的自动生成。
5.1 报表结构
| 区域 | 内容 | 数据来源 |
|---|---|---|
| 工程信息区 | 工程名称、施工单位、测温部位、测温方式、养护方法、编号 | 用户手动填写(一次配置,多张报表复用) |
| 表头定义区 | 测点编号 + 测温时间 + 各测点温度 + 气温 + 蓄热养护温度 | 系统自动配置(根据测点数量和传感器绑定关系) |
| 数据区 | 每行一条记录,含时间戳 + 所有通道温度值 | TG.db 实时查询 + 聚合(原始/小时均值/天均值) |
| 签名区 | 复核意见 + 技术负责人 / 工长 / 测温员 + 制表日期 | 用户填写 + 日期自动生成 |
5.2 报表配置工具
- 多定义管理:一个项目可以有多个报表定义(不同浇筑部位、不同养护方式),互不干扰
- 日期范围 + 聚合 + 步长:选择任意时间范围,支持原始数据 / 小时均值 / 天均值聚合,步长 N 可跳行显示(如每 4h 取 1 行用于打印)
- C5-9 预览 API:
POST /api/custom-data/c59-preview,传入报表定义 ID + 日期范围,返回完整的填空后数据行 - 独立展示页面:
/custom-data/c59-report,A4 打印优化布局,默认隐藏按钮栏
5.3 导出能力
| 导出方式 | 技术方案 | 适用场景 |
|---|---|---|
| XLS 导出 | SheetJS (xlsx 0.20.0),CDN 懒加载,table_to_sheet 转换 | 提交监理审查、盖章归档 |
| 网页打印 | @media print CSS 优化,A4 纵向,隐藏 UI 控件 | 现场打印签字、纸质存档 |
| 曲线图片 | ECharts 原生 getDataURL 导出 PNG | 插入方案报告、PPT 汇报 |
💡 监理认可的关键
C5-9 报表使用 SheetJS 库将 HTML 表格直接转为 XLSX,保留原始格式(合并单元格、边框、字体)。导出后的 XLS 文件与 GB 50496 附录表格格式一致,监理签字的接受率接近 100%。
六、数据可靠性与完整性保障
数据分析的基础是数据质量。TG 系统从三个层面保障数据可靠:
| 保障机制 | 实现方式 | 效果 |
|---|---|---|
| 断电续传 | TG 终端内置 EEPROM + TF 卡双存储,断电后恢复自动补传 | 零数据丢失 |
| 断网补传 | 4G 信号中断时数据暂存本地,网络恢复后按时间戳顺序回传 | 无断点曲线 |
| 传感器校准 | 出厂逐点校准,±0.2℃ 精度,可附 CNAS 证书 | 数据源头可信 |
| 数据冗余 | 硬盘备份 + 蓝牙转存(TF 卡本地备份),多副本保障 | 多重容灾 |
七、报表系统的后端设计要点
报表系统的后端(custom_data.py,约 1455 行)是整个平台最复杂的模块之一。以下是几个关键技术决策:
7.1 PostgreSQL 配置存储 + JSON 序列化
报表配置、图表表头、报警规则等用户自定义数据,均以 JSON 格式存储在 PostgreSQL 的 JSONB 字段中。这样做的好处是:
- 配置结构灵活,无需 ALTER TABLE(每个用户的列定义可能不同)
- JSON 直接在前后端之间传递,无需额外序列化/反序列化
- PostgreSQL 集中式部署,单库管理所有项目数据,支持主从复制与自动备份
7.2 多数据库联合查询
一个报表可能涉及多个 TG 设备的数据——每个设备的数据存储在同一 PostgreSQL 数据库中(按设备 SN 分表)。系统通过 UNION ALL 或跨表 JOIN 直接联合查询,无需 ATTACH/DETACH 操作,天然支持并发访问。
7.3 聚合查询优化
对于历史图表的大时间跨度查询(如 30 天),直接查原始数据返回数万行会导致前端渲染卡顿。系统在后端 SQL 层直接执行聚合:
-- 小时均值聚合(每个传感器通道)
SELECT strftime('%Y-%m-%d %H:00:00',
REPLACE(IDATETIME, '#', '')) as dt_hour,
AVG(WD01), AVG(WD02), ..., AVG(WD32)
FROM sheet1
WHERE dt_hour BETWEEN ? AND ?
GROUP BY dt_hour
ORDER BY dt_hour这套机制将前端渲染量从数万条降至最多 720 行(30 天 × 24 小时),图表加载从 5 秒降至 500ms。
📋 结语
数据分析不是目的,让数据产生决策价值才是目的。TG 云平台的数据分析体系围绕三个"快"字设计:看板刷新快(1 秒全局态势)、趋势发现快(ECharts 缩放比 Excel 拖拽快 10 倍)、报表出得快(一键生成 + 一键导出)。对于测温工程师来说,这意味着把更多时间花在分析数据含义上,而不是花在制表和画图上。