多协议数据采集网关结合TDEngine时序数据库
多協議數據采集網關結合TDEngine時序數據庫在車輛環境監測中的應用
一、項目背景
隨著經濟發展,國家對環境越來越重視,為貫徹《中華人民共和國大氣污染防治法》,落實《汽油車污染物排放限值及測量方法(雙怠速法及簡易工況法)》(GB18285-2018)、《柴油車污染物排放限值及測量方法(雙自由加速法及加載減速法)》(GB3847-2018)兩項標準的實施,根據中國環境科學研究院發布的《在用汽車排放檢驗信息系統及聯網規范(征求意見稿)》,燃油車環境參數實時監測也變得越來越迫切,對在用機動車排放檢驗過程監控,能更有效對異常數據進行預警控制,防止弄虛作假行為,促使超標車輛維修治理,減少污染排放,整合移動污染源排放數據,建立一套科學化、系統化、智能化的移動源污染排放在線監控系統,實現機動車年檢、路檢、遙測、新車核查、非道路移動機械、檢測維修IM制度、監控預警等綜合管理,連通機動車排放檢驗機構、市區縣生態環境局、國家生態環境部、市政務信息資源共享平臺,實現國家、省市、區縣三級聯網,數據交換與共享。
系統設計性能參數要求:
| 1 | 數據管理 | 單一記錄的查詢 | 時間<=2S |
| 多記錄項復合查詢 | 時間<=10S | ||
| 多表查詢 | 時間<=30S | ||
| 2 | 統計分析 | 參與統計的數據量10萬條內 | 時間<=20S |
| 參與統計的數據量100萬條內 | 時間<=1M | ||
| 參與統計的數據量100萬條以上 | 時間<=5M |
如何實現準確高效的采集并實時存儲查詢大數據分析等功能,在技術上必須具備分布式采集,大數據分析等能力,筆者在構建系統時,查閱了大量案例,學習對比了很多架構,基于超級性能和易用性,最后選擇TDEngine時序數據庫作為本系統的實時數據庫。
二、系統方案
1、整體架構
云端采用EMQ作為協議轉發服務器,搭配TDEngine做數據倉庫,實時采集數據采用MQTT進行傳輸,后期將拓展其他協議。
邊緣控制器利用自身所帶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采樣。
作為樂鑫當家花旦,稟承了樂鑫ESP-IDF的強大軟件能力,基于freertos+lwip雙劍合璧,協議是相當的全,工業4.0的核心協議OPC-UA,MQTT,Modbus,HTTP(S),websocket,ODB(SAEJ1939,ISO15765)…。
數據采集控制器協議轉換網關
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很好的解決了過程數據的實時存儲和連續查詢功能,很好的實現了系統要求的數據吞吐性能,查詢速度并不會因為數據的增加而有明顯的增加,基本上0.02秒左右,時間段的任意查詢大大的簡化了程序的邏輯處理。
三、 業務功能
1、業務流程
注冊登記檢驗流程
汽油:
柴油:
在用車輛
汽油:
柴油:
2系統及功能
2.1 檢測業務
該功能面向檢測機構
1、合規性確認
檢測機構在車輛檢驗完成后,對整個檢驗過程進行合規性核查,當出現影響檢測過程準確性的情況,判定為檢驗過程不合規,該次檢驗無論檢驗結果合格或不合格都計為無效數據。機構工作人員需對檢驗數據、報告單、照片、視頻等當次檢驗檔案進行逐項核查,核查完根據事實情況做出合規性確認。合規性確認后方可進行數據上傳和報告單打印等相關操作
2、不合規申請
根據不合規判定的原則,由于出現影響檢測過程準確性的情況,車輛無需到M站維修,可以直接再次復檢,因此當出現該情況時,為保障車主利益,檢測機構工作人員應在系統中通過該功能發起不合規申請,由監管中心工作人員進行審核后可以立即復檢。
3、車輛同步
車輛檢驗結束后該車的環檢結果自動同步至公安安檢平臺。此外在免檢車申請時,監管中心人員也應該在判定車輛免檢提交數據的真實性后,進行手動同步數據。
4、檢測實時數據
對檢測業務數據進行實時查詢,可查看車輛檢測數據,外檢照片,現場視頻等相關數據。
5、車輛退辦
車輛在檢測過程中,受各方面影響,檢測機構工作人員可在系統中申請退辦該筆業務,退辦原因必須在系統內進行如實備注。
6、檢測終止
車輛在檢測過程中,監管中心發現車輛上傳的檢測數據存在異常或其他特殊情況的,監管中心工作人員可以通過檢測終止功能取消該次檢測流程。終止后檢測機構需重新進行該車檢測業務。
7、檢測方法修改
車輛在檢測過程中,發現車輛存在異常問題,無法正常適配默認檢測方法,可以在系統中進行檢測方法修改,修改檢測方法需備注變更方法原因,提交后可用其他方法進行檢測,此功能只能由授權簽字人進行操作。
8、免檢車申請
若車輛由于處于免檢有效期內,可以免于進行環保檢測,因此檢測機構工作人員可以對該類車輛信息進行錄入拍照,提交免檢車申請,由監管中心進行審核并同步車輛信息至公安,免于檢測。
9、站務管理
檢測機構可對站內人員進行設置,新增、修改、刪除帳號,配置人員權限。也可在系統內對檢測設備、檢測線進行配置。
10、報告打印
車輛檢測完成后,檢測機構工作人員可以在檢測記錄中找到車輛檢測記錄進行報告打印,紙質報告蓋章并由授權簽字人簽名后交予車主或機構自行存檔。
11、I/M維修記錄
交通管理部門將M站內完成的車輛維修記錄傳輸至機動車排氣污染監控平臺,并在系統內生成對應車輛的維修記錄列表,展示機動車基本數據、檢測報告單數據,維修現場照片等相關維修數據,供檢測機構查看。
12、視頻監控
可以對檢測機構內各檢測線攝像頭采集的視頻信息進行實時調閱,可以在車輛檢測中進行檢測視頻回放、也可以選擇時間段進行回放。
13、檢測統計
檢測機構可通過查詢統計功能對車型、合規率、合格率等數據進行統計并生成與之相對應的統計報表,以供檢測機構了解日常檢測作業情況。
2.2 監管業務
該功能面向管理部門
1、信息發布
管理部門工作人員可以通過監控平臺實時發布通知公告信息,使用平臺的所有用戶都可以收到并查看通知公告信息。
2、退辦車輛記錄
管理工作人員可以通過退辦車輛功能查詢車輛所有退辦記錄。根據記錄情況對檢測機構業務開展規范性,是否存在一車多次退辦等異常情況進行倒查。
3、不合規車輛記錄
通過不合規車輛功能,可以查看全市所有不合規車輛情況,如出現某站大面積不合格車輛數據,可通過此功能對該站進行重點監管。
4、數據核查
車輛檢測完成后,該車檢測數據交由監管中心工作人員核查并備注核查意見,
5、數據復核
檢測數據經過監管中心工作人員核查后,可由中心管理人員進行二次復核。
6、IM車輛維修
針對在IM制度中,可能出現各種異常情況或其他特殊原因,管理部門可以通過該功能取消特殊情況的車輛卡控進行上線。
7、方法變更
車輛在檢測過程中,發現車輛存在制動、驅動等異常問題,無法正常適配默認檢測方法,可以在系統中進行檢測方法修改,修改檢測方法需備注變更方法原因,提交后可用其他方法進行檢測。所有方法變更痕跡都在系統中進行保留,以方法變更原因為準,核查歷史變更方法車輛檢測數據,如某站惡意頻繁變更方法可以通過該功能進行數據溯源。
8、重點監管車輛
管理部門工作人員在日常工作過程中,根據中心管理要求可以對符合條件的車輛進行錄入納入重點監管車輛范圍,通過對重點監管車輛的主動監管,提升宜賓市機動車排污監控能力。
9、免檢車審核
若車輛處于免檢有效期內,檢測機構工作人員可以對該類車輛信息進行錄入拍照,提交免檢車申請,由監管中心進行審核并同步車輛信息至公安,免于檢測。所有免檢車需完整提交車輛信息、照片,由中心審核后同步公安。
10、抽查不合格數據
管理部門工作人員可對不合格車輛進行抽查,驗證不合格車輛數據真實性、有效性。
11、手動審核
管理部門工作人員按照中心管理辦法對已配置為手動審核范圍的檢測機構、檢驗方法對應的檢驗車輛數據進行逐一手動審核。批注審核結論和意見。
12、注冊不合格車輛庫
管理部門工作人員按照管理辦法注冊檢驗尾氣不合格的車輛進行備案,錄入車輛庫,定期通過行政渠道反饋至車輛生產企業。
13、檢測機構管理
管理部門工作人員按照中心管理辦法對檢測機構進行管理,查看檢測機構資料、人員信息、檢測線、檢測設備等,可進行檢測機構關停,檢測線關停,檢測人員帳號停用等相關操作。
14、I/M維修記錄
交通管理部門將本市具備開展尾氣維修治理的企業信息通過機動車尾氣治理信息化管理系統傳輸至機動車排氣污染監控平臺,并在系統內生成對應車輛的維修記錄列表,展示機動車基本數據、檢測報告單數據,維修現場照片等相關維修數據,供管理部門和檢測機構查看,并由環保部門依據職責對機動車排放檢測機構的不合格車輛排放復檢工作開展情況進行監督檢查。
15、視頻監控
可以對全市檢測機構各檢測線攝像頭采集的視頻信息進行實時調閱。可以在車輛檢測中進行檢測視頻回放、也可以選擇時間段進行回放。
16、統計
管理部門可通過查詢統計功能對車型、合規率、合格率、核查率、核查通過率、核查量等數據進行統計并生成與之相對應的統計報表
2.3 手持終端APP應用模塊
手持終端APP應用模塊主要面向檢測機構工作人員
檢測機構工作人員通過輸入機動車車輛基本信息,車牌號、車牌顏色、VIN碼進行車輛登錄進行外檢操作
檢測人員輸入車牌號,系統自動通過公安接口獲取機動車資料,并有檢測人員補充其它車輛信息,完成車輛基本資料錄入
檢測人員對新車查驗環保隨車清單是否與信息公開內容是否一致。檢查車輛污染控制裝置和發動機與環保信息隨車清單是否一致。對在用車檢查被檢車輛的車況是否正常、檢查發動機排氣管、排氣消聲器和排氣后處理裝置的外觀及安裝緊固部位是否完好、檢查車輛是否配置有OBD系統、判斷車輛檢測方法、確認車輛輪胎表面無夾雜異物、查驗污染控制裝置是否完好等相關檢驗工作,對三項否決項重點檢查1、排氣污染控制裝置是否齊全,正常2、燃油蒸發控制系統是否正常3、車輛是否存在燒機油、或者嚴重冒黑煙現象,若以上三點存在問題,外檢直接判定車輛不合格,檢測流程結束。最后按照要求拍照并上傳。
系統會將車輛以列表形式在系統內展示,檢測人員也通過該功能查看當前待檢車輛外檢記錄,也可查看車輛歷史外檢記錄。
四、展望
隨著TDEngine
2.0版本的到來,開源了分布式多節點功能,彌補了原有社區單機版的遺憾,讓我覺得選擇TDEngine
這個生態超級幸運。
通過系統實踐,不僅滿足了系統設計的初衷,而且帶來了更多驚喜,在以后的項目中,筆者將繼續實踐TDEngine新功能,包括引入linux
版本的邊緣存儲架構去適應更多工業控制采集領域對響應時間的嚴格要求,可維護性強,硬件資源占用極少的TDEngine將大放異彩。
總結
以上是生活随笔為你收集整理的多协议数据采集网关结合TDEngine时序数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英雄杀判定
- 下一篇: 三国杀开源系列之一104@365