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