多协议数据采集网关结合TDEngine时序数据库

多协议数据采集网关结合TDEngine时序数据库在车辆环境监测中的应用

一、项目背景

随着经济发展,国家对环境越来越重视,为贯彻《中华人民共和国大气污染防治法》,落实《汽油车污染物排放限值及测量方法(双怠速法及简易工况法)》(GB18285-2018)、《柴油车污染物排放限值及测量方法(双自由加速法及加载减速法)》(GB3847-2018)两项标准的实施,根据中国环境科学研究院发布的《在用汽车排放检验信息系统及联网规范(征求意见稿)》,燃油车环境参数实时监测也变得越来越迫切,对在用机动车排放检验过程监控,能更有效对异常数据进行预警控制,防止弄虚作假行为,促使超标车辆维修治理,减少污染排放,整合移动污染源排放数据,建立一套科学化、系统化、智能化的移动源污染排放在线监控系统,实现机动车年检、路检、遥测、新车核查、非道路移动机械、检测维修IM制度、监控预警等综合管理,连通机动车排放检验机构、市区县生态环境局、国家生态环境部、市政务信息资源共享平台,实现国家、省市、区县三级联网,数据交换与共享。

系统设计性能参数要求:

序号 指标名称 指标明细 性能要求
1 数据管理 单一记录的查询 时间<=2S
多记录项复合查询 时间<=10S
多表查询 时间<=30S
2 统计分析 参与统计的数据量10万条内 时间<=20S
参与统计的数据量100万条内 时间<=1M
参与统计的数据量100万条以上 时间<=5M

如何实现准确高效的采集并实时存储查询大数据分析等功能,在技术上必须具备分布式采集,大数据分析等能力,笔者在构建系统时,查阅了大量案例,学习对比了很多架构,基于超级性能和易用性,最后选择TDEngine时序数据库作为本系统的实时数据库。

二、系统方案

1、整体架构

多协议数据采集网关结合TDEngine时序数据库_第1张图片

云端采用EMQ作为协议转发服务器,搭配TDEngine做数据仓库,实时采集数据采用MQTT进行传输,后期将拓展其他协议。

多协议数据采集网关结合TDEngine时序数据库_第2张图片

边缘控制器利用自身所带CAN总线采集OBD车载数据(大多数采用SAEJ1939,这个调试真辛苦。。。)及其他环境检测设备采集的数据(采集设备的输出数据通过串口或网络联网),收集数据并通过EC20
4G通信或wifi无线网络采用MQTT协议上传实时数据至云端并存储在TDEngine时序数据库中供查询分析调用。

2、采集器

前端采集设备边缘控制器采用乐鑫的物联网模块ESP32-WROVER-B作为主处理模块,这款模块强劲的处理能力简直让我爽到不行,最高240M主频,而且是双核,是通用型
Wi-Fi+BT+BLE MCU 模组,16M flash,8M
ram,支持SD卡,功能强大,用途广泛,可以用于低功耗传感器网络和要求极高的任务,例如语音编码、音频流和MP3解码等,关键事开源生态好,各种开软件包都不在话下扩展了两路CAN总线,诸多IO口(原谅我唯一缺陷,引脚比较少38针),
支持EC20 4G和北斗GPS模块可接AD7606实现多通道ADC采样。
多协议数据采集网关结合TDEngine时序数据库_第3张图片

作为乐鑫当家花旦,禀承了乐鑫ESP-IDF的强大软件能力,基于freertos+lwip双剑合璧,协议是相当的全,工业4.0的核心协议OPC-UA,MQTT,Modbus,HTTP(S),websocket,ODB(SAEJ1939,ISO15765)…。

多协议数据采集网关结合TDEngine时序数据库_第4张图片
数据采集控制器协议转换网关

3、数据库设计

过程数据表

序号 代码 数据类型 注释
TS TIMESTAMP 时间
VN NCHAR 车牌号
HCGCSJ FLOAT HC过程数据
COGCSJ FLOAT CO过程数据
CO2GCSJ FLOAT CO2过程数据
O2GCSJ FLOAT O2过程数据
NOXGCSJ FLOAT NOX过程数据
GLKQXSSJ FLOAT 过量空气系数过程数据
HCPFZLGCSJ FLOAT HC排放质量过程数据
COPFZLGCSJ FLOAT CO排放质量过程数据
NOXPFZLGCSJ FLOAT NOX排放质量过程数据
LLJO2GCSJ FLOAT 流量计O2过程数据
LLJSJLLGCSJ FLOAT 流量计实际流量过程数据
LLJBZLLGCSJ FLOAT 流量计标准流量过程数据
LLJWDGCSJ FLOAT 流量计温度过程数据
QCWQLLGCSJ FLOAT 汽车尾气流量过程数据
LLJQYGCSJ FLOAT 流量计气压过程数据
ZSGCSJ FLOAT 发动机转速过程数据
YWGCSJ FLOAT 发动机油温过程数据
CSGCSJ FLOAT 车速过程数据
XSBGCSJ FLOAT 稀释比过程数据
XSXZGCSJ FLOAT 稀释修正系数过程数据
SDXZGCSJ FLOAT 湿度修正系数过程数据
JSGLGCSJ FLOAT 寄生功率过程数据
ZSGLGCSJ FLOAT 指示功率过程数据
HJWDGCSJ FLOAT 环境温度过程数据
HJSDGCSJ FLOAT 环境湿度过程数据
HJDQYGCSJ FLOAT 环境大气压过程数据
YDZGCSJ FLOAT 烟度值过程数据
GXSXSGCSJ FLOAT 光吸收系数过程数据
ZTBZ INT 状态标注(1.预热状态,2.高怠速15秒稳定结束点,3.怠速)
HJO2ND FLOAT 环境O2浓度(单位:%vol)
BZLLMMSJ FLOAT 标准流量每秒数据(单位:L/s)
CSGKZJZGL FLOAT 测试工况总加载功率每秒数据(单位:kW)
HJO2HL FLOAT 环境O2含量
CO2ZL FLOAT CO2质量
NOZL FLOAT NO质量
SJQTLL FLOAT 实际气体流量
BZQTLL FLOAT 标准气体流量
FQLL FLOAT 废气流量
JSVELMAXHP FLOAT 计算VelMaxHp(单位:km/h)
SJVELMAXHP FLOAT 实际VelMaxHp(单位:km/h)
GLSMJDGLSJ FLOAT 功率扫描阶段功率每秒数据(单位:kW)
SCZDLBGL FLOAT 实测最大轮边功率(单位:kW)
GLXZXS FLOAT 功率修正系数
XZZDLBGLS FLOAT 修正最大轮边功率数
VELMAXHPYD100 FLOAT 100% VelMaxHp烟度每秒数据(k和N)
VELMAXHPYD90 FLOAT 90% VelMaxHp 烟度每秒数据(k和N)
VELMAXHPCS100 FLOAT 100% VelMaxHp车速每秒数据(单位:km/h)
VELMAXHPCS90 FLOAT 90% VelMaxHp 车速每秒数据(单位:km/h)
VELMAXHPCS80 FLOAT 80% VelMaxHp 车速每秒数据(单位:km/h)
BTGD FLOAT 不透光度
GCJCZT FLOAT 检测状态(1:功率扫描阶段,2:100%VelMaxHp检测阶段, :90%VelMaxHp检测阶段,4:80%VelMaxHp检测阶段)
STRENGTH FLOAT
CGJXSGL FLOAT 测功机吸收功率过程数据
CYDSJ FLOAT 采样点时间过程数据

OBD过程数据表

序号 字段名 字段类型 说明 备注
ts TIMESTAMP 时序
Vn NCHAR 车牌号
jylsh NCHAR 检验流水号
jccs INT 检验次数
cyds INT 采样总点数
cysx BIGINT 以时序类别分类按顺序自增
jqmkd FLOAT 节气门绝对开度 %
fh FLOAT 计算负荷值 %
qycgqxh FLOAT 前氧传感器信号 mV/mA
glkqxs FLOAT 过量空气系数(λ)
ymkd FLOAT 油门开度 %
cs FLOAT 车速 km/h
fdjzs FLOAT 发动机转速 r/min
jql FLOAT 进气量 g/s
jqyl FLOAT 进气压力 kPa
scgl FLOAT 发动机输出功率 kw
zyyl FLOAT 增压压力 kPa
hyl FLOAT 耗油量 L/100km
no FLOAT 氮氧传感器浓度 ppm
nsbsl FLOAT 尿素喷射量 L/h
pqwd FLOAT 排气温度
klbjqyc FLOAT 颗粒捕集器压差 kpa
egrkd FLOAT EGR 开度 %
rypsyl FLOAT 燃油喷射压力 bar

4、 node.js 实现 emq 至 TDEngine的转储

function createConsumer(config = {}) {

  const client = mqtt.connect("mqtt://XX.XX.XX.XX:1883", config);

  client.on("connect", () =\> {

    // 使用共享订阅 \$share/ 前缀

    client.subscribe("VEHICLE/\#", (err, granded = []) =\> {

      if (!err && granded[0].qos \<= 2) {

        console.log("Consumer client ready");

      }

    });

  });

  client.on("message", handleMessage);

}

// 创建 10 个共享订阅消费者

for (let i = 0; i \< 1; i++) {

  createConsumer();

}

// MQTT 处理订阅消息回调

async function handleMessage(topic, message) {

    try {

        console.log(topic, message.toString());

         if (topic.includes("xxx")) {

                // JSON 转对象

                const p = JSON.parse(message.toString());

            const resp = await exec(\`

           INSERT INTO db_vehicle\${p.xxx.xxx}\${p.xxx.xxx }  values(

               '\${p.xxx.DATE+' ' +p.xxx.TIME}',

                \${p.xxx.xxx},

                \${p.xxx.xxx}

              );\`);

                console.log(\`Exec success:\`, resp.data); 

            }

    } catch (e) {

        console.log(

            "exec insert error:",

            e.message,

            e.response ? e.response.data : ""

        );

    }

}

function exec(sql = "") {

    console.log("exc sql", sql);   

  return axios({

    method: "post",

    url: "http://xx.xx.xx.xx:6020/rest/sql",

    auth: {

      username: "root",

      password: "taosdata"

    },

    data: sql

  });

}

5、实时时序过程数据分析

多协议数据采集网关结合TDEngine时序数据库_第5张图片
多协议数据采集网关结合TDEngine时序数据库_第6张图片
多协议数据采集网关结合TDEngine时序数据库_第7张图片
多协议数据采集网关结合TDEngine时序数据库_第8张图片

TDEngine很好的解决了过程数据的实时存储和连续查询功能,很好的实现了系统要求的数据吞吐性能,查询速度并不会因为数据的增加而有明显的增加,基本上0.02秒左右,时间段的任意查询大大的简化了程序的逻辑处理。

三、 业务功能

1、业务流程

注册登记检验流程

汽油:

多协议数据采集网关结合TDEngine时序数据库_第9张图片

柴油:

多协议数据采集网关结合TDEngine时序数据库_第10张图片

在用车辆

汽油:

多协议数据采集网关结合TDEngine时序数据库_第11张图片

柴油:

多协议数据采集网关结合TDEngine时序数据库_第12张图片

2系统及功能

2.1 检测业务

该功能面向检测机构

1、合规性确认

检测机构在车辆检验完成后,对整个检验过程进行合规性核查,当出现影响检测过程准确性的情况,判定为检验过程不合规,该次检验无论检验结果合格或不合格都计为无效数据。机构工作人员需对检验数据、报告单、照片、视频等当次检验档案进行逐项核查,核查完根据事实情况做出合规性确认。合规性确认后方可进行数据上传和报告单打印等相关操作

多协议数据采集网关结合TDEngine时序数据库_第13张图片

2、不合规申请

根据不合规判定的原则,由于出现影响检测过程准确性的情况,车辆无需到M站维修,可以直接再次复检,因此当出现该情况时,为保障车主利益,检测机构工作人员应在系统中通过该功能发起不合规申请,由监管中心工作人员进行审核后可以立即复检。

多协议数据采集网关结合TDEngine时序数据库_第14张图片

3、车辆同步

车辆检验结束后该车的环检结果自动同步至公安安检平台。此外在免检车申请时,监管中心人员也应该在判定车辆免检提交数据的真实性后,进行手动同步数据。

4、检测实时数据

对检测业务数据进行实时查询,可查看车辆检测数据,外检照片,现场视频等相关数据。

多协议数据采集网关结合TDEngine时序数据库_第15张图片
多协议数据采集网关结合TDEngine时序数据库_第16张图片

5、车辆退办

车辆在检测过程中,受各方面影响,检测机构工作人员可在系统中申请退办该笔业务,退办原因必须在系统内进行如实备注。

多协议数据采集网关结合TDEngine时序数据库_第17张图片

6、检测终止

车辆在检测过程中,监管中心发现车辆上传的检测数据存在异常或其他特殊情况的,监管中心工作人员可以通过检测终止功能取消该次检测流程。终止后检测机构需重新进行该车检测业务。
多协议数据采集网关结合TDEngine时序数据库_第18张图片

7、检测方法修改

车辆在检测过程中,发现车辆存在异常问题,无法正常适配默认检测方法,可以在系统中进行检测方法修改,修改检测方法需备注变更方法原因,提交后可用其他方法进行检测,此功能只能由授权签字人进行操作。

多协议数据采集网关结合TDEngine时序数据库_第19张图片

8、免检车申请

若车辆由于处于免检有效期内,可以免于进行环保检测,因此检测机构工作人员可以对该类车辆信息进行录入拍照,提交免检车申请,由监管中心进行审核并同步车辆信息至公安,免于检测。

9、站务管理

检测机构可对站内人员进行设置,新增、修改、删除帐号,配置人员权限。也可在系统内对检测设备、检测线进行配置。

多协议数据采集网关结合TDEngine时序数据库_第20张图片
多协议数据采集网关结合TDEngine时序数据库_第21张图片
多协议数据采集网关结合TDEngine时序数据库_第22张图片

10、报告打印

车辆检测完成后,检测机构工作人员可以在检测记录中找到车辆检测记录进行报告打印,纸质报告盖章并由授权签字人签名后交予车主或机构自行存档。

11、I/M维修记录

交通管理部门将M站内完成的车辆维修记录传输至机动车排气污染监控平台,并在系统内生成对应车辆的维修记录列表,展示机动车基本数据、检测报告单数据,维修现场照片等相关维修数据,供检测机构查看。

多协议数据采集网关结合TDEngine时序数据库_第23张图片

12、视频监控

可以对检测机构内各检测线摄像头采集的视频信息进行实时调阅,可以在车辆检测中进行检测视频回放、也可以选择时间段进行回放。

多协议数据采集网关结合TDEngine时序数据库_第24张图片

13、检测统计

检测机构可通过查询统计功能对车型、合规率、合格率等数据进行统计并生成与之相对应的统计报表,以供检测机构了解日常检测作业情况。

多协议数据采集网关结合TDEngine时序数据库_第25张图片

2.2 监管业务

该功能面向管理部门

1、信息发布

管理部门工作人员可以通过监控平台实时发布通知公告信息,使用平台的所有用户都可以收到并查看通知公告信息。

多协议数据采集网关结合TDEngine时序数据库_第26张图片

2、退办车辆记录

管理工作人员可以通过退办车辆功能查询车辆所有退办记录。根据记录情况对检测机构业务开展规范性,是否存在一车多次退办等异常情况进行倒查。

多协议数据采集网关结合TDEngine时序数据库_第27张图片

3、不合规车辆记录

通过不合规车辆功能,可以查看全市所有不合规车辆情况,如出现某站大面积不合格车辆数据,可通过此功能对该站进行重点监管。

多协议数据采集网关结合TDEngine时序数据库_第28张图片

4、数据核查

车辆检测完成后,该车检测数据交由监管中心工作人员核查并备注核查意见,

多协议数据采集网关结合TDEngine时序数据库_第29张图片

5、数据复核

检测数据经过监管中心工作人员核查后,可由中心管理人员进行二次复核。

多协议数据采集网关结合TDEngine时序数据库_第30张图片

6、IM车辆维修

针对在IM制度中,可能出现各种异常情况或其他特殊原因,管理部门可以通过该功能取消特殊情况的车辆卡控进行上线。

7、方法变更

车辆在检测过程中,发现车辆存在制动、驱动等异常问题,无法正常适配默认检测方法,可以在系统中进行检测方法修改,修改检测方法需备注变更方法原因,提交后可用其他方法进行检测。所有方法变更痕迹都在系统中进行保留,以方法变更原因为准,核查历史变更方法车辆检测数据,如某站恶意频繁变更方法可以通过该功能进行数据溯源。

多协议数据采集网关结合TDEngine时序数据库_第31张图片

8、重点监管车辆

管理部门工作人员在日常工作过程中,根据中心管理要求可以对符合条件的车辆进行录入纳入重点监管车辆范围,通过对重点监管车辆的主动监管,提升宜宾市机动车排污监控能力。

9、免检车审核

若车辆处于免检有效期内,检测机构工作人员可以对该类车辆信息进行录入拍照,提交免检车申请,由监管中心进行审核并同步车辆信息至公安,免于检测。所有免检车需完整提交车辆信息、照片,由中心审核后同步公安。

10、抽查不合格数据

管理部门工作人员可对不合格车辆进行抽查,验证不合格车辆数据真实性、有效性。

11、手动审核

管理部门工作人员按照中心管理办法对已配置为手动审核范围的检测机构、检验方法对应的检验车辆数据进行逐一手动审核。批注审核结论和意见。

12、注册不合格车辆库

管理部门工作人员按照管理办法注册检验尾气不合格的车辆进行备案,录入车辆库,定期通过行政渠道反馈至车辆生产企业。

13、检测机构管理

管理部门工作人员按照中心管理办法对检测机构进行管理,查看检测机构资料、人员信息、检测线、检测设备等,可进行检测机构关停,检测线关停,检测人员帐号停用等相关操作。

14、I/M维修记录

交通管理部门将本市具备开展尾气维修治理的企业信息通过机动车尾气治理信息化管理系统传输至机动车排气污染监控平台,并在系统内生成对应车辆的维修记录列表,展示机动车基本数据、检测报告单数据,维修现场照片等相关维修数据,供管理部门和检测机构查看,并由环保部门依据职责对机动车排放检测机构的不合格车辆排放复检工作开展情况进行监督检查。

多协议数据采集网关结合TDEngine时序数据库_第32张图片

15、视频监控

可以对全市检测机构各检测线摄像头采集的视频信息进行实时调阅。可以在车辆检测中进行检测视频回放、也可以选择时间段进行回放。
多协议数据采集网关结合TDEngine时序数据库_第33张图片

16、统计

管理部门可通过查询统计功能对车型、合规率、合格率、核查率、核查通过率、核查量等数据进行统计并生成与之相对应的统计报表

多协议数据采集网关结合TDEngine时序数据库_第34张图片

2.3 手持终端APP应用模块

手持终端APP应用模块主要面向检测机构工作人员

  1. 车辆登录

检测机构工作人员通过输入机动车车辆基本信息,车牌号、车牌颜色、VIN码进行车辆登录进行外检操作

多协议数据采集网关结合TDEngine时序数据库_第35张图片

  1. 车辆资料录入

检测人员输入车牌号,系统自动通过公安接口获取机动车资料,并有检测人员补充其它车辆信息,完成车辆基本资料录入

多协议数据采集网关结合TDEngine时序数据库_第36张图片

  1. 车辆外观检验

检测人员对新车查验环保随车清单是否与信息公开内容是否一致。检查车辆污染控制装置和发动机与环保信息随车清单是否一致。对在用车检查被检车辆的车况是否正常、检查发动机排气管、排气消声器和排气后处理装置的外观及安装紧固部位是否完好、检查车辆是否配置有OBD系统、判断车辆检测方法、确认车辆轮胎表面无夹杂异物、查验污染控制装置是否完好等相关检验工作,对三项否决项重点检查1、排气污染控制装置是否齐全,正常2、燃油蒸发控制系统是否正常3、车辆是否存在烧机油、或者严重冒黑烟现象,若以上三点存在问题,外检直接判定车辆不合格,检测流程结束。最后按照要求拍照并上传。

多协议数据采集网关结合TDEngine时序数据库_第37张图片
多协议数据采集网关结合TDEngine时序数据库_第38张图片

  1. 检测记录

系统会将车辆以列表形式在系统内展示,检测人员也通过该功能查看当前待检车辆外检记录,也可查看车辆历史外检记录。

多协议数据采集网关结合TDEngine时序数据库_第39张图片

四、展望

随着TDEngine
2.0版本的到来,开源了分布式多节点功能,弥补了原有社区单机版的遗憾,让我觉得选择TDEngine
这个生态超级幸运。

通过系统实践,不仅满足了系统设计的初衷,而且带来了更多惊喜,在以后的项目中,笔者将继续实践TDEngine新功能,包括引入linux
版本的边缘存储架构去适应更多工业控制采集领域对响应时间的严格要求,可维护性强,硬件资源占用极少的TDEngine将大放异彩。

你可能感兴趣的:(环保车联网)