欒 奕,劉昌華
(武漢輕工大學 數(shù)學與計算機學院,湖北 武漢 430023)
糧食是人類賴以生存的基礎,也是中國的重要戰(zhàn)略物資,糧食在存儲尤其是長期存儲過程中,對于溫度、濕度、微生物、蟲害、光照都有著嚴格的要求。盡管如此,在大規(guī)模的糧食存儲中仍然不可避免地要面對一些諸如發(fā)熱、霉變現(xiàn)象,而造成這種現(xiàn)象發(fā)生的關鍵因素就是糧食存儲[1]過程中的上述環(huán)境參數(shù)不合適。因此,及時有效甚至可預測的糧倉環(huán)境監(jiān)控系統(tǒng)可以為管理者提供一個便捷的途徑,實時了解糧倉中的環(huán)境參數(shù)并根據(jù)預警提前預防災難性事件的發(fā)生,使用戶防患于未然,對于糧食安全有著重大意義。
在環(huán)境溫度的預測模型方面已經(jīng)有不少學者進行過相關研究,2002年鄭應文提出了一個較為精簡的溫室溫度預測算法[2],通過室外溫度和糧倉保溫性能這兩大參數(shù),在誤差允許范圍內(nèi)實現(xiàn)對下一時刻的溫度預測控制;2014年周偉、汪小旵等人將室外溫度、太陽輻射、濕度以及風速這些外部擾動因素納入考量范圍,于2014年提出約束模型預測控制算法[3]。2017年Muhammad Tayab提出了一種基于多元線性回歸的預測模型[4],并通過對輸入方式和參數(shù)的改變來優(yōu)化多元線性回歸。這些預測模型對于實際應用中的環(huán)境參數(shù)預測起到了很好的指導作用,但未能以硬件載體在實際中檢驗,也未能將硬件設備的采集、處理的反應時間納入考量范圍。除此之外,也有外國學者通過ANN(人工神經(jīng)網(wǎng)絡)結(jié)合FPGA實現(xiàn)了對于環(huán)境溫度的預測[5],并且其系統(tǒng)的延時最終小于Matlab的模擬情況,預測誤差控制在±1 ℃之內(nèi)。徐宇、冀榮華于2019年提出了基于復數(shù)神經(jīng)網(wǎng)絡的智能溫室溫度預測研究[6],該模型在獲取了環(huán)境數(shù)據(jù)的時間序列特征后,通過建立雙隱層的復數(shù)神經(jīng)網(wǎng)絡的智能溫室溫度預測模型,實現(xiàn)溫度預測以及精準調(diào)控,預測精度0.873,誤差小于0.548。Anupam Boro、Ben Thomas等人[7]與2016年實現(xiàn)了一種基于人工神經(jīng)網(wǎng)絡(ANN)的專用處理器,用于預測特定位置的日最高溫度。該模型使用印度古瓦哈蒂一年的數(shù)據(jù)進行培訓,并在XilinxVirtex-6FPGA上實現(xiàn)。上述方案能夠?qū)Νh(huán)境做出自適應調(diào)整,從而較為準確地預測某一時刻的環(huán)境溫度,但其缺點在于預測模型需要經(jīng)過數(shù)據(jù)集的訓練和驗證,為了達到更高的準確度必然需要更大規(guī)模的數(shù)據(jù)集,以及更長的訓練時間。盡管該系統(tǒng)在理論上可以實現(xiàn)開放性環(huán)境溫度的預測,但在特定的、變化幅度小的環(huán)境中顯得尤為麻煩。
針對蔡甸區(qū)三杰面粉廠所屬的面粉儲備立筒倉的特點——其建筑結(jié)構(gòu)決定了糧倉內(nèi)部較為穩(wěn)定的環(huán)境屬性以及相對倉外較為明顯的遲滯性,文中通過軟件定義硬件的方式[8]將FPGA高速并行、可定制可裁剪的優(yōu)勢與溫度預測數(shù)學模型結(jié)合起來,提出一種應用于特定農(nóng)業(yè)設施內(nèi)部[9-11],支持高速低延時的多路設備接入,且易于擴展、可靈活部署的溫度數(shù)據(jù)采集預警系統(tǒng)。該系統(tǒng)可以對實時溫度進行監(jiān)控,也可以對自定義的任意時刻進行預警[12],通過分析當前和過去時間內(nèi)的溫度數(shù)據(jù)及環(huán)境參數(shù)來預估下一時刻的糧倉(室內(nèi))內(nèi)部溫度[13],實現(xiàn)溫度預警的功能,并將預測誤差控制在±0.5 ℃以內(nèi),驗證FPGA利用數(shù)學模型來大規(guī)模預測農(nóng)業(yè)[14-15]領域重要參數(shù)的可靠性。
文中設計的系統(tǒng)由FPGA數(shù)據(jù)處理模塊、溫度采集模塊、顯示(報警)模塊組成。FPGA芯片采用Altera EP4CE115F29C7芯片,F(xiàn)PGA對總線上的采集模塊進行初始化并按照規(guī)定的時序讀取并處理(識別符號位、溫度轉(zhuǎn)換)采集的數(shù)據(jù)[13]。傳感器則選用數(shù)字溫度傳感器DS18B20負責溫度數(shù)據(jù)的采集工作,通過單總線與FPGA芯片建立通信并接收FPGA的各項操作指令,將轉(zhuǎn)換后的溫度數(shù)據(jù)傳輸?shù)紽PGA??偩€上可掛載若干傳感器,通過ROM搜索算法識別各傳感器ID,并對數(shù)據(jù)分別處理。由開發(fā)板上的數(shù)碼管和LED作為顯示和報警模塊。圖1是溫度預警系統(tǒng)硬件框圖,本節(jié)將介紹具體的溫度預警系統(tǒng)電路設計并重點闡述FPGA對傳感器的驅(qū)動以及數(shù)據(jù)分析預警這兩個部分。
圖1 溫度預警系統(tǒng)硬件框圖
該系統(tǒng)以Altera公司的Cyclone IV EP4C115F29 C7芯片為處理器,通過ROM指令和功能指令實現(xiàn)處理器與傳感器之間通信,傳輸和接收信令,在外部控制邏輯的控制下完成特定的任務,最后將結(jié)果交給顯示邏輯。除此之外,F(xiàn)PGA還會對采集到的數(shù)據(jù)進行分析,預測下一時刻的溫度是否達到或超過報警值。
傳感器采用外部供電模式,即對DS18B20電源引腳采取單獨供電的模式,在溫度轉(zhuǎn)化期間不受單總線上的信號的影響,溫度轉(zhuǎn)換時可以在單總線上傳輸其他數(shù)據(jù)。外部供電的情況下不需要對控制器的端口進行上拉,在主機的I/O的驅(qū)動能力范圍里,可掛載多個傳感器,在通過跳過ROM搜索和溫度轉(zhuǎn)化指令的作用下,I/O口上的傳感器將進行溫度轉(zhuǎn)化。這種供電方式工作穩(wěn)定、抗干擾能力強。通過單總線與FPGA進行通信,執(zhí)行包括復位、確認、溫度轉(zhuǎn)換在內(nèi)的存儲器操作指令并上傳數(shù)據(jù)到FPGA,完成一個數(shù)據(jù)采集和讀取的周期。
外部控制、顯示邏輯均采用DE2-115開發(fā)板上的按鍵、開關和數(shù)碼管作為外設,統(tǒng)一由FPGA控制。在Quartus Prime 17.0硬件設計平臺上完成溫度數(shù)據(jù)采集的核心——DS18B20芯片驅(qū)動模塊的設計后,為其添加數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)顯示、預警分析以及頂層模塊后,完成溫度預警系統(tǒng)的電路設計。
DS18B20是達拉斯公司研發(fā)的新型數(shù)字溫度傳感器。DS18B20主要由64位寫ROM及單總線端口、溫度傳感器模塊、高速寄存器RAM、高溫報警觸發(fā)器TH和低溫報警觸發(fā)器TL組成。圖2展示了DS18B20的內(nèi)部結(jié)構(gòu)。
圖2 DS18B20的內(nèi)部結(jié)構(gòu)
溫度傳感器可以通過寫精度位中6~7位,即精度位R0與R1的值來實現(xiàn)9~12位的數(shù)據(jù)輸出,如表1所示。DS18B20的系統(tǒng)默認R0、R1都為“1”,即為12位的分辨率,一位輸出數(shù)字量精度為0.062 5 ℃。
表1 DS18B20的分辨率設置
DS18B20在接受到FPGA對其發(fā)出的“溫度轉(zhuǎn)換”指令后,數(shù)據(jù)就會被寫到暫存器的字節(jié)0~1中,存儲的方式是帶符號位的十六位二進制補碼。DE2-115通過I/O口接收該數(shù)值,傳輸方式是先傳輸?shù)臀唬賯鬏敻呶?。測量得到的溫度數(shù)據(jù)被連續(xù)存放在暫存器的0~1字節(jié)中,存放方式是先存低位數(shù)據(jù)、再存高位數(shù)據(jù)。這16位的溫度數(shù)據(jù)中高4位是溫度的符號位,全部為“0”代表大于零度,全部為“1”代表小于零度。其余12位存放的是具體數(shù)據(jù),正溫度用源碼、負溫度用補碼。在12位數(shù)據(jù)情況下,單個數(shù)據(jù)的精度就是0.062 5,即溫度等于測量的二進制數(shù)乘以精度,文中采用的是也正是12位分辨率。表2所示為十進制溫度值與16位數(shù)據(jù)之間的轉(zhuǎn)換關系。
表2 溫度數(shù)據(jù)轉(zhuǎn)換關系
處理器訪問DS18B20有規(guī)定的執(zhí)行序列:(1)初始化(復位和等待存在脈沖);(2)ROM操作指令;(3)功能指令。每一次對傳感器的操作都必須遵循上述順序,否則將不會返回值。為了使傳感器能夠正常地將采集到的數(shù)據(jù)通過單總線傳輸給FPGA,需要執(zhí)行兩個指令周期,第一個周期依次為復位、跳過ROM指令、執(zhí)行溫度轉(zhuǎn)換存儲器操作指令并等待至少500 us的溫度轉(zhuǎn)換時間;之后立刻進入第二個周期,復位指令、跳過ROM指令、執(zhí)行讀RAM操作指令、最后讀取數(shù)據(jù)。這樣才能完成正確的溫度采集傳輸功能,同時FPGA在通過單總線與傳感器通信時務必嚴格遵守復位、讀操作、寫操作的時序。上述過程均由Verilog HDL硬件描述語言編寫狀態(tài)機來完成,并將此狀態(tài)機封裝在Task塊中隨時調(diào)用。
圖3和圖4中所有的初始化,讀、寫操作都需要遵循各自的操作時序。至此完成傳感器驅(qū)動模塊中最核心的部分,使傳感器能夠依據(jù)FPGA對其下達的各項指令執(zhí)行相應的操作。在該模塊的基礎上為其添加輸入輸出端口、時序控制模塊后就可以完整地實現(xiàn)底層驅(qū)動部分。
圖3 第一個指令周期
圖4 第二個指令周期
Δx(i+1)=a1Δx(i)+a2Δx(i-1)
(1)
(2)
Δx(i+2)=a1Δx(i+1)+a2Δx(i)=
a1[a1Δx(i)+a2Δx(i-1)]+
a2Δx(i)
(3)
再算出i+2時刻倉外溫度估計值:
(4)
最后將式(4)帶入倉內(nèi)溫度預測方程來推算出倉內(nèi)溫度預測值:
(5)
可以看出該算法的思路是首先通過室外溫度的補償值來預測下一時刻的室外溫度,再將預測室外溫度值帶入室內(nèi)溫度預測方程中,以得到室內(nèi)溫度的預測值。
考慮到ds18b20的采樣精度為0.625 ℃,單次數(shù)據(jù)刷新的變化程度并不明顯,而且此模式下溫度轉(zhuǎn)換的預留時間達到500 ms,這意味著單次數(shù)據(jù)的刷新周期較長,同時還考慮到預警的周期要預留足夠的時間讓用戶對預警做出反應,啟動相關的應急設備,這里將預警周期設為20 s,也便于觀察到明顯的溫度變化。
在Quartus Prime 17.0中完成整個工程的設計和編譯,包括頂層模塊、傳感器驅(qū)動模塊、溫度數(shù)據(jù)轉(zhuǎn)換模塊和預警模塊,驗證時通過邏輯分析儀對關鍵信號進行分析。
表3 白天夜間實驗結(jié)果
通過Altera Cyclone Ⅳ FPGA和溫度傳感器DS18B20作為主要硬件搭建了糧倉溫度采集系統(tǒng)的硬件模型,使用EP4CE115F29C7為處理芯片,采用Verilog HDL硬件描述語言進行各模塊的電路設計,在FPGA溫度采集系統(tǒng)的基礎上結(jié)合室內(nèi)溫度預測算法模型,針對特定的采集環(huán)境,最終實現(xiàn)了糧倉的溫度采集預警系統(tǒng)。通過白天和夜間兩組實驗結(jié)果表明,該系統(tǒng)可以穩(wěn)定運行,可實時地感知不同環(huán)境下的溫度,成功驗證FPGA利用數(shù)學模型來預測農(nóng)業(yè)領域某些重要參數(shù)的可行性,同時在一定程度上降低了預測誤差。該系統(tǒng)實時性強,可靠性高,同時發(fā)揮了Altera Cyclone系列芯片低功耗、高性能的優(yōu)勢。同時基于軟件定義硬件的概念,可以隨時對FPGA芯片內(nèi)部邏輯進行調(diào)整,可根據(jù)應用場景不同而隨時修改FPGA芯片內(nèi)部邏輯電路,以應對其他硬件需求,靈活部署在不同環(huán)境的農(nóng)業(yè)設施內(nèi)部。下一步可以利用FPGA這一特性擴展或增強系統(tǒng)功能,例如:添加存儲模塊、豐富計算類型、對數(shù)據(jù)進行安全加密并上傳物聯(lián)網(wǎng),甚至最終形成一個邊緣計算模型,更好地服務于未來的大規(guī)模、高帶寬、設備密集型的農(nóng)業(yè)物聯(lián)網(wǎng)。