胡江為,張國平,李慶,后德家,呂順遠(yuǎn)
(1.華中師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院,湖北 武漢 430079;2.華中農(nóng)業(yè)大學(xué) 理學(xué)院,湖北 武漢 430079)
隨著養(yǎng)殖業(yè)的規(guī)?;l(fā)展,畜禽糞便的大量排放造成嚴(yán)重的環(huán)境污染。通過水虻來轉(zhuǎn)化畜禽糞便為蟲體脂肪和蛋白,消除環(huán)境污染的方法已經(jīng)越來越被相關(guān)研究人員認(rèn)可[1]。但由于水虻的生長受季節(jié)和溫度等影響比較大[2],目前市面上還缺少高效的水虻轉(zhuǎn)化糞便生物反應(yīng)器的環(huán)境自動監(jiān)控技術(shù)。同時傳統(tǒng)的人工管理及數(shù)據(jù)獲取方法效率低下且環(huán)境惡劣, 不利于生物反應(yīng)器的規(guī)?;彤a(chǎn)業(yè)化發(fā)展。
為此,本文設(shè)計了一套基于μC/OS-Ⅱ?qū)崟r操作系統(tǒng)的生物反應(yīng)器監(jiān)控系統(tǒng)。該系統(tǒng)應(yīng)用于生物反應(yīng)器環(huán)境參數(shù)的采集和控制,能夠?qū)崟r監(jiān)控生物反應(yīng)器內(nèi)環(huán)境參數(shù)。并且,當(dāng)環(huán)境參數(shù)超出設(shè)定閾值時,系統(tǒng)會驅(qū)動繼電器打開指定設(shè)備來調(diào)節(jié)環(huán)境參數(shù),保證生物反應(yīng)器內(nèi)各項環(huán)境指標(biāo)正常。
監(jiān)測生物反應(yīng)器需要不同時期的各項參數(shù),因此反應(yīng)器內(nèi)含六層裝置,對應(yīng)六個不同反應(yīng)階段,每層裝置配備一個監(jiān)測器,監(jiān)測器上掛載多種傳感器,包含五個溫度傳感器,平均分布在每一層不同的區(qū)域,另外包含一個氧氣傳感器,一個氨氣傳感器和一個二氧化碳傳感器來獲取各項氣體參數(shù)。以上環(huán)境數(shù)據(jù)通過485總線被不斷發(fā)送至控制器,控制器則負(fù)責(zé)分析并處理相關(guān)數(shù)據(jù)。將各項參數(shù)實時顯示到液晶屏上,并可通過液晶屏設(shè)定各項參數(shù)的閾值。判斷當(dāng)前參數(shù)是否超出設(shè)定閾值。當(dāng)超出閾值時,會驅(qū)動繼電器開啟相關(guān)設(shè)備,包括通風(fēng)設(shè)備、噴淋設(shè)備和翻轉(zhuǎn)設(shè)備,從而有效調(diào)節(jié)生物反應(yīng)器內(nèi)的各項環(huán)境參數(shù)。系統(tǒng)設(shè)計框圖如圖1所示。
圖1 系統(tǒng)設(shè)計框圖
為了保證系統(tǒng)的穩(wěn)定性和實時性[3],在控制器和監(jiān)測器上都移植了μC/OS-Ⅱ嵌入式實時操作系統(tǒng)。同時,通信協(xié)議方面,由于μC/OS-Ⅱ內(nèi)核本身卻并不攜帶任何網(wǎng)絡(luò)協(xié)議棧??紤]到系統(tǒng)的兼容性和擴(kuò)展性,選擇FreeModbus協(xié)議[4],F(xiàn)reeModbus協(xié)議是一個針對嵌入式應(yīng)用的開源協(xié)議,其支持多種平臺,可以通過RS485總線進(jìn)行傳輸,完全可以滿足生物反應(yīng)器的通信需求[5]。
監(jiān)測器掛載多種傳感器,可以監(jiān)測溫度、氧氣、二氧化碳和氨氣等,主要負(fù)責(zé)采集所在區(qū)域內(nèi)的各項環(huán)境參數(shù),并通過RS485總線持續(xù)發(fā)送給控制器。由于傳感器的輸出方式不同,主芯片需要豐富的USART接口以及定時器。因此監(jiān)測器主芯片采用基于Cortex-M3架構(gòu)的STM32F103VET6,其模塊構(gòu)成如圖2所示。
圖2 監(jiān)測器模塊構(gòu)成
控制器負(fù)責(zé)處理通過RS485總線收集來的多個監(jiān)測器的數(shù)據(jù),并通過液晶屏實時顯示相關(guān)數(shù)據(jù)??刂破鞲鶕?jù)閾值判斷反應(yīng)器內(nèi)各項環(huán)境參數(shù)是否異常,如果出現(xiàn)異常,會自動開啟繼電器來控制相關(guān)設(shè)備,從而調(diào)節(jié)反應(yīng)器內(nèi)各項環(huán)境參數(shù),使其恢復(fù)正常狀態(tài)。由于控制器需要良好的計算性能和中斷響應(yīng)系統(tǒng),因此采用與監(jiān)測器同系列的STM32F103ZET6,惟一區(qū)別是擁有更多的引腳,其模塊構(gòu)成如圖3所示。
圖3 控制器模塊構(gòu)成
為滿足數(shù)據(jù)采集子系統(tǒng)節(jié)點多、傳輸速率高和組網(wǎng)范圍大等需求,控制器與監(jiān)測器采用RS485總線進(jìn)行數(shù)據(jù)傳輸[6]。RS485總線結(jié)構(gòu)簡單、傳輸速率高、傳輸距離遠(yuǎn)且擴(kuò)展性強(qiáng),符合本系統(tǒng)的要求。
μC/OS-Ⅱ是源碼公開的實時操作系統(tǒng),是一種基于優(yōu)先級的可搶占式的內(nèi)核[7],具有可開源、可移植、可裁剪、可固化、多任務(wù)和搶占式等特點,并支持系統(tǒng)服務(wù)及中斷管理嵌套。執(zhí)行效率高,實時性能好且穩(wěn)定。因此,μC/OS-Ⅱ操作系統(tǒng)被廣泛應(yīng)用于各類單片機(jī)、微控制器以及數(shù)字信號處理器等產(chǎn)品的開發(fā)[8]。
移植工作主要包括在官方網(wǎng)站下載相關(guān)源代碼,然后根據(jù)STM32F103系列處理器的架構(gòu),修改os_cpu.h、os_cpu_a.asm和os_cpu_c.c等與處理器相關(guān)的文件。最后,創(chuàng)建多個用戶任務(wù),完成移植。
在監(jiān)測器和控制器上分別移植了μC/OS-Ⅱ?qū)崟r操作系統(tǒng)。接下來需要根據(jù)功能添加相應(yīng)的任務(wù)。
監(jiān)測器需要完成多種類型傳感器的數(shù)據(jù)實時采集和傳輸?shù)?,要實現(xiàn)多任務(wù)的并發(fā)執(zhí)行,因此將每一路傳感器均設(shè)置為單獨的任務(wù),統(tǒng)稱為數(shù)據(jù)采集任務(wù)。另外還有數(shù)據(jù)上傳任務(wù)。
數(shù)據(jù)采集任務(wù):實現(xiàn)數(shù)據(jù)的并發(fā)高效采集,由以下幾個子任務(wù)組成,包含:
(1) max31865_task任務(wù):用于獲取溫度數(shù)據(jù)。
(2) o2_task任務(wù):用于獲取氧氣數(shù)據(jù)。
(3) co2_task任務(wù):用于獲取二氧化碳數(shù)據(jù)。
(4) nh3_task任務(wù):用于獲取氨氣數(shù)據(jù)。
數(shù)據(jù)上傳任務(wù):負(fù)責(zé)實現(xiàn)通信,通過RS485總線將數(shù)據(jù)上傳給控制器。
監(jiān)測器的工作流程如圖4所示。
圖4 監(jiān)測器工作流程圖
根據(jù)控制器所實現(xiàn)的功能,將控制器程序任務(wù)劃分為3個任務(wù),分別是:數(shù)據(jù)處理任務(wù)(usart_task)、設(shè)備控制任務(wù)(control_task)和人機(jī)交互任務(wù)(gui_task)。數(shù)據(jù)處理任務(wù)優(yōu)先級最高,不允許遺漏接收的內(nèi)容,設(shè)定為2。由于調(diào)節(jié)環(huán)境是一個相對而言較“漫長”的過程,因此設(shè)備控制任務(wù)優(yōu)先級次之,定為3。人機(jī)交互任務(wù),它的實時性稍低一點,優(yōu)先級定為4。
數(shù)據(jù)處理任務(wù):通過周期性的向監(jiān)測器發(fā)送數(shù)據(jù)獲取指令,控制器對接收到的數(shù)據(jù)進(jìn)行解析,根據(jù)解析結(jié)果和監(jiān)測器數(shù)量得到環(huán)境均值。
圖5 控制器工作流程圖
設(shè)備控制任務(wù):將各項環(huán)境數(shù)據(jù)與設(shè)定的閾值參數(shù)進(jìn)行對比,判斷是否需要開啟例如通風(fēng)、噴淋和翻轉(zhuǎn)等功能設(shè)備,來調(diào)節(jié)特定區(qū)域的環(huán)境數(shù)據(jù)。
人機(jī)交互任務(wù):由主程序創(chuàng)建,將采集而來的數(shù)據(jù)展示到液晶屏上,并通過液晶屏修改閾值參數(shù)以及控制通風(fēng)、噴淋和翻轉(zhuǎn)等功能設(shè)備。
控制器的工作流程如圖5所示。
首先在PC上進(jìn)行功能測試,對創(chuàng)建的三個任務(wù)進(jìn)行測試,驗證μC/OS-Ⅱ移植是否成功。一般通過打印日志來驗證μC/OS-Ⅱ的實時性、多任務(wù)性。圖6是打印出的部分日志。
由圖6可知:第一行信息代表系統(tǒng)正在執(zhí)行usart_task;第四行信息代表系統(tǒng)正在執(zhí)行control_task;第十一行則為系統(tǒng)正在執(zhí)行g(shù)ui_task;到了第十七行,日志顯示系統(tǒng)再次執(zhí)行usart_task任務(wù),證明系統(tǒng)正在多任務(wù)運行,也表明μC/OS-Ⅱ系統(tǒng)移植成功。
系統(tǒng)搭建好并啟動后,通過液晶屏可以查看反應(yīng)器內(nèi)的實時環(huán)境參數(shù)。實時數(shù)據(jù)界面如圖7所示。
圖6 控制器工作日志
圖7 控制器實時環(huán)境參數(shù)
數(shù)據(jù)每間隔5 s會刷新一次。通過圖7可以看到,當(dāng)前反應(yīng)器內(nèi)層一至層五各區(qū)域的溫度均超過25 ℃,而將通風(fēng)設(shè)備開啟閾值范圍設(shè)定為20 ℃至25℃。噴淋設(shè)備開啟閾值范圍設(shè)定為25 ℃至30 ℃,翻轉(zhuǎn)設(shè)備開啟閾值范圍設(shè)定為大于30 ℃。層一至層五各區(qū)域內(nèi)最高溫度均達(dá)到噴淋設(shè)備開啟范圍,故層一至層五噴淋設(shè)備均顯示為開啟。層六的各區(qū)域溫度均大于20 ℃但小于25 ℃,符合通風(fēng)設(shè)備開啟范圍,因此此時層六的通風(fēng)設(shè)備顯示為開啟。
氧氣、氨氣以及二氧化碳的含量為六層所得數(shù)據(jù)的平均值,均位于正常狀態(tài),故無任何操作。
經(jīng)過長時間不間斷測試,本系統(tǒng)能正常穩(wěn)定工作,準(zhǔn)確地獲取實時監(jiān)測數(shù)據(jù),并能準(zhǔn)確判斷環(huán)境是否異常,若有異常能及時處理,完全滿足預(yù)期要求,具有一定的應(yīng)用推廣價值。