石愛峰
(200093 上海市 上海理工大學(xué) 機械工程學(xué)院)
為了解決水處理公司對水質(zhì)監(jiān)測設(shè)備測取數(shù)據(jù)的實時查看及遠程控制,設(shè)計該遠程水質(zhì)監(jiān)測系統(tǒng),本系統(tǒng)前端使用React,JavaScript,CSS 等進行搭建,后臺使用Django 進行搭建,數(shù)據(jù)庫采用MySQL 進行數(shù)據(jù)儲存,并將系統(tǒng)部署到云端服務(wù)器,實現(xiàn)遠程訪問與實時監(jiān)測。其中,數(shù)據(jù)來源于硬件部分測取,通過傳感器將所測數(shù)據(jù)遠程回傳至服務(wù)器[1],使用InfluxDB 服務(wù)器進行存儲,并基于 Django-crontab 進行定時水質(zhì)預(yù)警判斷,最終結(jié)合包括 Echarts 等工具,將獲取到的數(shù)據(jù)以圖像的方式進行展示,從而實現(xiàn)水質(zhì)數(shù)據(jù)的實時化、可視化展示,使得企業(yè)在查看水質(zhì)數(shù)據(jù)和追蹤水質(zhì)變化的能力上得到大大加強。
針對平臺使用對象和服務(wù)對象的不同需求,首先建立核心需求規(guī)劃表,如表1 所示。

表1 平臺核心需求規(guī)劃Tab.1 Core requirements planning
(1)實現(xiàn)各設(shè)備水質(zhì)監(jiān)測數(shù)據(jù)的遠程監(jiān)控;(2)實現(xiàn)各設(shè)備工作環(huán)境中的水質(zhì)預(yù)警;(3)實現(xiàn)設(shè)備管理與調(diào)度功能;(4)實現(xiàn)基本的設(shè)備管理,該功能主要服務(wù)于企業(yè);(5)實現(xiàn)基本的用戶管理,該功能主要服務(wù)于企業(yè)。
軟件部分的整體組成邏輯圖如圖1 所示。該平臺采用React 作為前端框架,這是因為React可以非常輕松地創(chuàng)建用戶交互界面[2],設(shè)計簡潔的狀態(tài)視圖,在數(shù)據(jù)改變時,高效地更新渲染內(nèi)容界面。React 使用虛擬DOM,可以幫助解決跨瀏覽器問題,并能提供標(biāo)準(zhǔn)化的API。此外,React 采用組件化、模塊化方式管理[3],代碼的維護性更高,后臺部分采用Django 進行開發(fā)[3],數(shù)據(jù)庫選擇MySQL 進行數(shù)據(jù)管理。該數(shù)據(jù)庫是一個成熟的關(guān)系型數(shù)據(jù)管理系統(tǒng),運行平穩(wěn),適合中小型系統(tǒng)。數(shù)據(jù)溝通采用Axios 進行前后臺數(shù)據(jù)異步請求,每次數(shù)據(jù)更新無需刷新整個瀏覽器頁面,只針對更新部分進行局部數(shù)據(jù)更新。

圖1 軟部分整體設(shè)計邏輯Fig.1 Overall design logic of software part
1.3.1 水質(zhì)監(jiān)測功能設(shè)計
該數(shù)字化平臺的核心功能實際上就是遠程水質(zhì)監(jiān)測,水質(zhì)監(jiān)測數(shù)據(jù)的主要查看途徑主要分當(dāng)前實時數(shù)據(jù)直接查看與歷史數(shù)據(jù)折線圖查看,在二者結(jié)合的情況下,能夠更好地對當(dāng)前水質(zhì)情況有所了解,并有利于對未來水質(zhì)的預(yù)判[4]。
如圖2 所示,在線平臺會將最近24 h 的各傳感器水質(zhì)記錄數(shù)據(jù)以折線圖的形式進行展示,并輔以當(dāng)前實時水質(zhì)數(shù)據(jù),在二者并用的情況下,水質(zhì)當(dāng)前情況已經(jīng)變得異常清晰,便于判斷。

圖2 水質(zhì)監(jiān)測頁面Fig.2 Water quality monitoring page
1.3.2 水質(zhì)提醒功能設(shè)計
水質(zhì)預(yù)警的目的在于幫助設(shè)備操作者判斷是否需要添加各類藥劑。由于水質(zhì)預(yù)警事件發(fā)生時機的特殊性,并不總是恰好發(fā)生在設(shè)備用戶或者企業(yè)運維人員查看設(shè)備傳感器監(jiān)測數(shù)據(jù)時[5]。水質(zhì)提醒界面如圖3 所示。除此之外,水質(zhì)預(yù)警信息也應(yīng)當(dāng)能夠查閱歷史記錄,以方便追究責(zé)任人等情況。在此需求下,本系統(tǒng)除了將傳感器測量數(shù)據(jù)存儲于設(shè)備本地之外,還將監(jiān)測數(shù)據(jù)每5 min 上傳一次。并在上傳的同時,監(jiān)控測量值是否達到閥值,若超過閥值,則根據(jù)各設(shè)備和傳感器的相應(yīng)設(shè)置發(fā)起水質(zhì)預(yù)警,水質(zhì)提醒記錄頁面如圖4 所示。

圖3 水質(zhì)提醒頁面Fig.3 Water quality reminder page

圖4 水質(zhì)提醒記錄頁面Fig.4 Water quality reminder record page
1.3.3 設(shè)備管理功能設(shè)計
設(shè)備創(chuàng)建流程如圖5 所示,采取了相對簡單的二級管理機制,即主機型號與設(shè)備。主機型號是用于統(tǒng)一設(shè)備本體的管理,例如嵌入式等核心設(shè)備相同的主機均屬于同一主機型號。在主機型號下面還要創(chuàng)建設(shè)備,就可以根據(jù)客戶的不同需求配備數(shù)量不等的各類型、各型號的傳感器,滿足客戶在生產(chǎn)環(huán)境下的實際需求,并使得整個系統(tǒng)更具靈活性[6]。

圖5 設(shè)備創(chuàng)建流程Fig.5 Device creation process
首頁模塊主要展示設(shè)備地區(qū)分布情況、設(shè)備的數(shù)量和當(dāng)前的運行狀態(tài)。設(shè)備運維走勢曲線展示了不同省份各個季度設(shè)備的維護情況。
運維模塊由運維首頁、設(shè)備實時監(jiān)控、水質(zhì)提醒記錄、傳感器標(biāo)定和設(shè)備維護子模塊組成。
運維首頁直觀地展示了各個地區(qū)設(shè)備數(shù)量、單位、編號和運行狀態(tài)等信息,還可以根據(jù)地區(qū)、用戶單位和設(shè)備狀態(tài)來搜索獲得具體設(shè)備的相關(guān)信息;點擊設(shè)備圖片可以跳轉(zhuǎn)到該設(shè)備的實時監(jiān)控頁面。
設(shè)備實時監(jiān)控模塊展示了設(shè)備對水質(zhì)的一個遠程監(jiān)測,點擊水質(zhì)監(jiān)控、傳感器標(biāo)定和設(shè)備維護圖標(biāo),能夠跳轉(zhuǎn)到相應(yīng)的詳細的信息展示頁面;點擊設(shè)備詳情和客戶單位會彈出彈框,展示設(shè)備詳情和客戶基礎(chǔ)信息。不同傳感器會對應(yīng)不同的傳感器監(jiān)控曲線,直觀展示了水質(zhì)情況,搜索功能能幫助用戶更便捷獲得水質(zhì)情況信息。
水質(zhì)提醒記錄模塊展示了設(shè)備在工作環(huán)境中發(fā)出的水質(zhì)預(yù)警提示信息。各種類型的傳感器在出廠時會設(shè)定相應(yīng)的理論值、閥值和提醒內(nèi)容,當(dāng)測得實際值不在預(yù)定范圍,就會觸發(fā)傳感器發(fā)送提示內(nèi)容,實現(xiàn)水質(zhì)預(yù)警作用。根據(jù)所選的時間段和傳感器類型,可以查詢到特定的水質(zhì)提醒記錄信息。
傳感器標(biāo)定模塊是設(shè)備維護人員用來展示傳感器標(biāo)定記錄和保存維護人員測得的標(biāo)定實際值和補償值的。傳感器標(biāo)定列表是用做維護人員記錄測得的標(biāo)定實際值和補償值,傳感器標(biāo)定記錄列表展示的是所有傳感器的標(biāo)定信息,可以通過選擇時間段和傳感器類型來查詢指定數(shù)據(jù)。
設(shè)備維護模塊展示的是該臺設(shè)備的所有維護記錄,通過選擇時間段和維護原因能查詢到具體的設(shè)備維護記錄。點擊設(shè)備報修按鈕,彈出彈窗,可以進行設(shè)備維護記錄的創(chuàng)建,點擊編輯按鈕可以對設(shè)備維護記錄進行編輯。
客戶信息模塊展示了所有客戶的基本信息,通過搜索客戶單位可以查看到該客戶單位的地址、郵編、電話等基本信息,可以創(chuàng)建、編輯、刪除客戶信息。聯(lián)系人彈窗不僅展示了聯(lián)系人職位和電話等基礎(chǔ)信息,還可以實現(xiàn)新增聯(lián)系人、編輯和刪除聯(lián)系人的功能。
基本信息模塊主要由主機信息和傳感器信息頁面組成。主機信息頁面主要由主機信息列表和搜索區(qū)域組成。主機信息列表上展示了所有的主機信息,例如主機編碼、主機名稱、開始生產(chǎn)日期和狀態(tài)等信息。通過選擇時間段和主機編號,可以搜索到指定的主機信息。可以新增、編輯和刪除主機信息。傳感器信息頁面展示了所有傳感器的基本信息,例如傳感器的編號、類型、狀態(tài)等信息。搜索功能是通過選擇傳感器類型、型號和編號來進行檢索,可以實現(xiàn)傳感器信息的新增、編輯和刪除。
賬戶信息管理模塊主要由角色權(quán)限管理和賬戶信息管理組成,企業(yè)用戶可以在該模塊設(shè)置新用戶的賬戶信息與權(quán)限,其中權(quán)限部分在前端完成,通過每次登錄時從后臺獲取賬戶信息,將賬戶權(quán)限信息存儲于瀏覽器的cookie 中,在登錄完成跳轉(zhuǎn)進入系統(tǒng)時,根據(jù)cookie 中的賬號權(quán)限信息來限制訪問的路由,實現(xiàn)賬戶權(quán)限控制。
硬件部分的整體組成邏輯圖如圖6 所示。上位機采用國產(chǎn)芯片瑞芯微RK3288 的Firefly 開源主板,通過RS485 總線與擴展板連接,擴展板再與各個傳感器的電極變壓器的接線連接采集傳感器的電壓信號。

圖6 硬件整體邏輯圖Fig.6 Hardware integration logic
嵌入式軟件采用QT Creator 進行編寫,因為QT 代碼有很好的移植性,搭配自帶的界面編輯器,可以快速地進行界面設(shè)計,并且移植到各個平臺。
通過調(diào)用QSerialPort 模塊[7],可以實現(xiàn)上位機與下位機的RS485 串口通訊,并且發(fā)送的數(shù)據(jù)內(nèi)容符合MODBUS-RTU 協(xié)議,能夠極大地保障發(fā)送與接收數(shù)據(jù)的準(zhǔn)確性和抗干擾能力。由于QT 運行的窗口是一個main 函數(shù),中間不能發(fā)生時間中斷,否則會導(dǎo)致窗口的運行崩潰。為了滿足嵌入式上位機能延時自動向下位機發(fā)送報文,在編程時調(diào)用了QThread 模塊進行了多任務(wù)的設(shè)計。傳感器所測水質(zhì)數(shù)據(jù)遠程回傳至服務(wù)器,使用 influxDB 服務(wù)器進行存儲,通過該數(shù)字化系統(tǒng),定時訪問服務(wù)器,獲取數(shù)據(jù),并通過前后端交互,將數(shù)據(jù)通過Echarts 渲染在頁面上。
本云平臺是一個基于對現(xiàn)有水質(zhì)監(jiān)測設(shè)備的數(shù)字化設(shè)計,采用Web 技術(shù)搭建的遠程實時水質(zhì)監(jiān)測的云平臺,可以滿足企業(yè)用戶對于水質(zhì)的實時監(jiān)控的需求,并提供了水質(zhì)提醒、設(shè)備管理等輔助功能,是一個完善的遠程實時水質(zhì)監(jiān)測云平臺。