石愛(ài)峰
(200093 上海市 上海理工大學(xué) 機(jī)械工程學(xué)院)
為了解決水處理公司對(duì)水質(zhì)監(jiān)測(cè)設(shè)備測(cè)取數(shù)據(jù)的實(shí)時(shí)查看及遠(yuǎn)程控制,設(shè)計(jì)該遠(yuǎn)程水質(zhì)監(jiān)測(cè)系統(tǒng),本系統(tǒng)前端使用React,JavaScript,CSS 等進(jìn)行搭建,后臺(tái)使用Django 進(jìn)行搭建,數(shù)據(jù)庫(kù)采用MySQL 進(jìn)行數(shù)據(jù)儲(chǔ)存,并將系統(tǒng)部署到云端服務(wù)器,實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)與實(shí)時(shí)監(jiān)測(cè)。其中,數(shù)據(jù)來(lái)源于硬件部分測(cè)取,通過(guò)傳感器將所測(cè)數(shù)據(jù)遠(yuǎn)程回傳至服務(wù)器[1],使用InfluxDB 服務(wù)器進(jìn)行存儲(chǔ),并基于 Django-crontab 進(jìn)行定時(shí)水質(zhì)預(yù)警判斷,最終結(jié)合包括 Echarts 等工具,將獲取到的數(shù)據(jù)以圖像的方式進(jìn)行展示,從而實(shí)現(xiàn)水質(zhì)數(shù)據(jù)的實(shí)時(shí)化、可視化展示,使得企業(yè)在查看水質(zhì)數(shù)據(jù)和追蹤水質(zhì)變化的能力上得到大大加強(qiáng)。
針對(duì)平臺(tái)使用對(duì)象和服務(wù)對(duì)象的不同需求,首先建立核心需求規(guī)劃表,如表1 所示。
表1 平臺(tái)核心需求規(guī)劃Tab.1 Core requirements planning
(1)實(shí)現(xiàn)各設(shè)備水質(zhì)監(jiān)測(cè)數(shù)據(jù)的遠(yuǎn)程監(jiān)控;(2)實(shí)現(xiàn)各設(shè)備工作環(huán)境中的水質(zhì)預(yù)警;(3)實(shí)現(xiàn)設(shè)備管理與調(diào)度功能;(4)實(shí)現(xiàn)基本的設(shè)備管理,該功能主要服務(wù)于企業(yè);(5)實(shí)現(xiàn)基本的用戶管理,該功能主要服務(wù)于企業(yè)。
軟件部分的整體組成邏輯圖如圖1 所示。該平臺(tái)采用React 作為前端框架,這是因?yàn)镽eact可以非常輕松地創(chuàng)建用戶交互界面[2],設(shè)計(jì)簡(jiǎn)潔的狀態(tài)視圖,在數(shù)據(jù)改變時(shí),高效地更新渲染內(nèi)容界面。React 使用虛擬DOM,可以幫助解決跨瀏覽器問(wèn)題,并能提供標(biāo)準(zhǔn)化的API。此外,React 采用組件化、模塊化方式管理[3],代碼的維護(hù)性更高,后臺(tái)部分采用Django 進(jìn)行開(kāi)發(fā)[3],數(shù)據(jù)庫(kù)選擇MySQL 進(jìn)行數(shù)據(jù)管理。該數(shù)據(jù)庫(kù)是一個(gè)成熟的關(guān)系型數(shù)據(jù)管理系統(tǒng),運(yùn)行平穩(wěn),適合中小型系統(tǒng)。數(shù)據(jù)溝通采用Axios 進(jìn)行前后臺(tái)數(shù)據(jù)異步請(qǐng)求,每次數(shù)據(jù)更新無(wú)需刷新整個(gè)瀏覽器頁(yè)面,只針對(duì)更新部分進(jìn)行局部數(shù)據(jù)更新。
圖1 軟部分整體設(shè)計(jì)邏輯Fig.1 Overall design logic of software part
1.3.1 水質(zhì)監(jiān)測(cè)功能設(shè)計(jì)
該數(shù)字化平臺(tái)的核心功能實(shí)際上就是遠(yuǎn)程水質(zhì)監(jiān)測(cè),水質(zhì)監(jiān)測(cè)數(shù)據(jù)的主要查看途徑主要分當(dāng)前實(shí)時(shí)數(shù)據(jù)直接查看與歷史數(shù)據(jù)折線圖查看,在二者結(jié)合的情況下,能夠更好地對(duì)當(dāng)前水質(zhì)情況有所了解,并有利于對(duì)未來(lái)水質(zhì)的預(yù)判[4]。
如圖2 所示,在線平臺(tái)會(huì)將最近24 h 的各傳感器水質(zhì)記錄數(shù)據(jù)以折線圖的形式進(jìn)行展示,并輔以當(dāng)前實(shí)時(shí)水質(zhì)數(shù)據(jù),在二者并用的情況下,水質(zhì)當(dāng)前情況已經(jīng)變得異常清晰,便于判斷。
圖2 水質(zhì)監(jiān)測(cè)頁(yè)面Fig.2 Water quality monitoring page
1.3.2 水質(zhì)提醒功能設(shè)計(jì)
水質(zhì)預(yù)警的目的在于幫助設(shè)備操作者判斷是否需要添加各類藥劑。由于水質(zhì)預(yù)警事件發(fā)生時(shí)機(jī)的特殊性,并不總是恰好發(fā)生在設(shè)備用戶或者企業(yè)運(yùn)維人員查看設(shè)備傳感器監(jiān)測(cè)數(shù)據(jù)時(shí)[5]。水質(zhì)提醒界面如圖3 所示。除此之外,水質(zhì)預(yù)警信息也應(yīng)當(dāng)能夠查閱歷史記錄,以方便追究責(zé)任人等情況。在此需求下,本系統(tǒng)除了將傳感器測(cè)量數(shù)據(jù)存儲(chǔ)于設(shè)備本地之外,還將監(jiān)測(cè)數(shù)據(jù)每5 min 上傳一次。并在上傳的同時(shí),監(jiān)控測(cè)量值是否達(dá)到閥值,若超過(guò)閥值,則根據(jù)各設(shè)備和傳感器的相應(yīng)設(shè)置發(fā)起水質(zhì)預(yù)警,水質(zhì)提醒記錄頁(yè)面如圖4 所示。
圖3 水質(zhì)提醒頁(yè)面Fig.3 Water quality reminder page
圖4 水質(zhì)提醒記錄頁(yè)面Fig.4 Water quality reminder record page
1.3.3 設(shè)備管理功能設(shè)計(jì)
設(shè)備創(chuàng)建流程如圖5 所示,采取了相對(duì)簡(jiǎn)單的二級(jí)管理機(jī)制,即主機(jī)型號(hào)與設(shè)備。主機(jī)型號(hào)是用于統(tǒng)一設(shè)備本體的管理,例如嵌入式等核心設(shè)備相同的主機(jī)均屬于同一主機(jī)型號(hào)。在主機(jī)型號(hào)下面還要?jiǎng)?chuàng)建設(shè)備,就可以根據(jù)客戶的不同需求配備數(shù)量不等的各類型、各型號(hào)的傳感器,滿足客戶在生產(chǎn)環(huán)境下的實(shí)際需求,并使得整個(gè)系統(tǒng)更具靈活性[6]。
圖5 設(shè)備創(chuàng)建流程Fig.5 Device creation process
首頁(yè)模塊主要展示設(shè)備地區(qū)分布情況、設(shè)備的數(shù)量和當(dāng)前的運(yùn)行狀態(tài)。設(shè)備運(yùn)維走勢(shì)曲線展示了不同省份各個(gè)季度設(shè)備的維護(hù)情況。
運(yùn)維模塊由運(yùn)維首頁(yè)、設(shè)備實(shí)時(shí)監(jiān)控、水質(zhì)提醒記錄、傳感器標(biāo)定和設(shè)備維護(hù)子模塊組成。
運(yùn)維首頁(yè)直觀地展示了各個(gè)地區(qū)設(shè)備數(shù)量、單位、編號(hào)和運(yùn)行狀態(tài)等信息,還可以根據(jù)地區(qū)、用戶單位和設(shè)備狀態(tài)來(lái)搜索獲得具體設(shè)備的相關(guān)信息;點(diǎn)擊設(shè)備圖片可以跳轉(zhuǎn)到該設(shè)備的實(shí)時(shí)監(jiān)控頁(yè)面。
設(shè)備實(shí)時(shí)監(jiān)控模塊展示了設(shè)備對(duì)水質(zhì)的一個(gè)遠(yuǎn)程監(jiān)測(cè),點(diǎn)擊水質(zhì)監(jiān)控、傳感器標(biāo)定和設(shè)備維護(hù)圖標(biāo),能夠跳轉(zhuǎn)到相應(yīng)的詳細(xì)的信息展示頁(yè)面;點(diǎn)擊設(shè)備詳情和客戶單位會(huì)彈出彈框,展示設(shè)備詳情和客戶基礎(chǔ)信息。不同傳感器會(huì)對(duì)應(yīng)不同的傳感器監(jiān)控曲線,直觀展示了水質(zhì)情況,搜索功能能幫助用戶更便捷獲得水質(zhì)情況信息。
水質(zhì)提醒記錄模塊展示了設(shè)備在工作環(huán)境中發(fā)出的水質(zhì)預(yù)警提示信息。各種類型的傳感器在出廠時(shí)會(huì)設(shè)定相應(yīng)的理論值、閥值和提醒內(nèi)容,當(dāng)測(cè)得實(shí)際值不在預(yù)定范圍,就會(huì)觸發(fā)傳感器發(fā)送提示內(nèi)容,實(shí)現(xiàn)水質(zhì)預(yù)警作用。根據(jù)所選的時(shí)間段和傳感器類型,可以查詢到特定的水質(zhì)提醒記錄信息。
傳感器標(biāo)定模塊是設(shè)備維護(hù)人員用來(lái)展示傳感器標(biāo)定記錄和保存維護(hù)人員測(cè)得的標(biāo)定實(shí)際值和補(bǔ)償值的。傳感器標(biāo)定列表是用做維護(hù)人員記錄測(cè)得的標(biāo)定實(shí)際值和補(bǔ)償值,傳感器標(biāo)定記錄列表展示的是所有傳感器的標(biāo)定信息,可以通過(guò)選擇時(shí)間段和傳感器類型來(lái)查詢指定數(shù)據(jù)。
設(shè)備維護(hù)模塊展示的是該臺(tái)設(shè)備的所有維護(hù)記錄,通過(guò)選擇時(shí)間段和維護(hù)原因能查詢到具體的設(shè)備維護(hù)記錄。點(diǎn)擊設(shè)備報(bào)修按鈕,彈出彈窗,可以進(jìn)行設(shè)備維護(hù)記錄的創(chuàng)建,點(diǎn)擊編輯按鈕可以對(duì)設(shè)備維護(hù)記錄進(jìn)行編輯。
客戶信息模塊展示了所有客戶的基本信息,通過(guò)搜索客戶單位可以查看到該客戶單位的地址、郵編、電話等基本信息,可以創(chuàng)建、編輯、刪除客戶信息。聯(lián)系人彈窗不僅展示了聯(lián)系人職位和電話等基礎(chǔ)信息,還可以實(shí)現(xiàn)新增聯(lián)系人、編輯和刪除聯(lián)系人的功能。
基本信息模塊主要由主機(jī)信息和傳感器信息頁(yè)面組成。主機(jī)信息頁(yè)面主要由主機(jī)信息列表和搜索區(qū)域組成。主機(jī)信息列表上展示了所有的主機(jī)信息,例如主機(jī)編碼、主機(jī)名稱、開(kāi)始生產(chǎn)日期和狀態(tài)等信息。通過(guò)選擇時(shí)間段和主機(jī)編號(hào),可以搜索到指定的主機(jī)信息。可以新增、編輯和刪除主機(jī)信息。傳感器信息頁(yè)面展示了所有傳感器的基本信息,例如傳感器的編號(hào)、類型、狀態(tài)等信息。搜索功能是通過(guò)選擇傳感器類型、型號(hào)和編號(hào)來(lái)進(jìn)行檢索,可以實(shí)現(xiàn)傳感器信息的新增、編輯和刪除。
賬戶信息管理模塊主要由角色權(quán)限管理和賬戶信息管理組成,企業(yè)用戶可以在該模塊設(shè)置新用戶的賬戶信息與權(quán)限,其中權(quán)限部分在前端完成,通過(guò)每次登錄時(shí)從后臺(tái)獲取賬戶信息,將賬戶權(quán)限信息存儲(chǔ)于瀏覽器的cookie 中,在登錄完成跳轉(zhuǎn)進(jìn)入系統(tǒng)時(shí),根據(jù)cookie 中的賬號(hào)權(quán)限信息來(lái)限制訪問(wèn)的路由,實(shí)現(xiàn)賬戶權(quán)限控制。
硬件部分的整體組成邏輯圖如圖6 所示。上位機(jī)采用國(guó)產(chǎn)芯片瑞芯微RK3288 的Firefly 開(kāi)源主板,通過(guò)RS485 總線與擴(kuò)展板連接,擴(kuò)展板再與各個(gè)傳感器的電極變壓器的接線連接采集傳感器的電壓信號(hào)。
圖6 硬件整體邏輯圖Fig.6 Hardware integration logic
嵌入式軟件采用QT Creator 進(jìn)行編寫(xiě),因?yàn)镼T 代碼有很好的移植性,搭配自帶的界面編輯器,可以快速地進(jìn)行界面設(shè)計(jì),并且移植到各個(gè)平臺(tái)。
通過(guò)調(diào)用QSerialPort 模塊[7],可以實(shí)現(xiàn)上位機(jī)與下位機(jī)的RS485 串口通訊,并且發(fā)送的數(shù)據(jù)內(nèi)容符合MODBUS-RTU 協(xié)議,能夠極大地保障發(fā)送與接收數(shù)據(jù)的準(zhǔn)確性和抗干擾能力。由于QT 運(yùn)行的窗口是一個(gè)main 函數(shù),中間不能發(fā)生時(shí)間中斷,否則會(huì)導(dǎo)致窗口的運(yùn)行崩潰。為了滿足嵌入式上位機(jī)能延時(shí)自動(dòng)向下位機(jī)發(fā)送報(bào)文,在編程時(shí)調(diào)用了QThread 模塊進(jìn)行了多任務(wù)的設(shè)計(jì)。傳感器所測(cè)水質(zhì)數(shù)據(jù)遠(yuǎn)程回傳至服務(wù)器,使用 influxDB 服務(wù)器進(jìn)行存儲(chǔ),通過(guò)該數(shù)字化系統(tǒng),定時(shí)訪問(wèn)服務(wù)器,獲取數(shù)據(jù),并通過(guò)前后端交互,將數(shù)據(jù)通過(guò)Echarts 渲染在頁(yè)面上。
本云平臺(tái)是一個(gè)基于對(duì)現(xiàn)有水質(zhì)監(jiān)測(cè)設(shè)備的數(shù)字化設(shè)計(jì),采用Web 技術(shù)搭建的遠(yuǎn)程實(shí)時(shí)水質(zhì)監(jiān)測(cè)的云平臺(tái),可以滿足企業(yè)用戶對(duì)于水質(zhì)的實(shí)時(shí)監(jiān)控的需求,并提供了水質(zhì)提醒、設(shè)備管理等輔助功能,是一個(gè)完善的遠(yuǎn)程實(shí)時(shí)水質(zhì)監(jiān)測(cè)云平臺(tái)。