李 響,姜周曙,黃國輝
(杭州電子科技大學自動化學院,杭州 310018)
太陽能作為可再生能源,具有儲量巨大、清潔環保的特點。目前,對于太陽能的利用主要是在太陽能發電和太陽能熱利用方面,太陽能熱水因轉換率高成為太陽能熱利用的普遍形式之一。由于太陽能具有不穩定性,相對于常規能源熱水系統,太陽能熱水系統的自動控制顯得更為重要[1]。傳統太陽能熱水控制器多采用單片機實現,功能單一,交互性差,其控制程序與硬件高度耦合,導致其拓展性差,開發難度高。這類控制器的本地硬件資源較少,大量運行數據未被保存,無法遠程通信,也給開發人員進一步研究帶來了一定的阻礙[2-5]。
本文提出了一種新型太陽能熱水控制器,硬件是基于Cortex-A9平臺開發,資源豐富,與設備間采用RS485總線方式連接,提升了控制器系統的靈活性和可拓展性;軟件上嵌入Android系統,利用Android系統在UI和生態方面的優勢,在此基礎上開發出一套功能豐富的監控軟件,具有良好的人機交互界面,實現了遠程數據傳輸。
太陽能熱水工程隨著實際現場的變化,形式多樣,測量點與所控制的設備數量不好確定。為了控制器的通用性,對控制器的設計采用RS485總線結構,并可根據實際工程大小和需求進行拓展??刂破飨到y硬件結構及其他設備框圖如圖1所示,圖中,左側為控制器硬件部分;右側分別為高精度采集板和開關量控制板,以及其他支持RS485通信的設備;控制器硬件與各設備間通過RS485總線連接。
高精度采集板對現場溫度、液位等模擬量進行實時采集和濾波后,等待控制器讀??;開關量控制板接收控制器通過RS485總線發來的信號,改變繼電器狀態,進而控制水泵等設備。由于實際工程中測量點和控制點很多,因此可以把高精度采集板和開關量控制板拓展為多個,并為其設置不同的地址,總線上最多支持256個設備。

圖1 控制器系統硬件結構及其他設備框圖Fig.1 Block diagram of hardware structure of controller system and other equipment
本新型太陽能熱水控制器硬件部分由最小系統板、網絡通信模塊、人機接口模塊、調試模塊、報警模塊和RS485通信模塊6部分構成。最小系統板搭載基于Cortex-A9架構的三星Exynos4412四核處理器,保證了其對數據的高速并行處理能力;配備了2 GB雙通道DDR3內存,16 GB EMMC存儲空間,使其能在實際運行中保存更多的數據;使用了三星S5M8767電源管理芯片,為處理器提供了比外圍設備更加穩定的電壓。最小系統板上的USB總線集線器也可以將一個USB接口擴展為多個,大幅提升了控制器系統的靈活性及可拓展性。
控制器有GPRS和以太網2種網絡通信方式,可以應用于不同場合。人機接口模塊采用7寸LCD觸摸一體屏,由SN75LVDS83BDGG芯片驅動,低壓差分信號傳輸,具有噪聲低、功耗低、兼容性好等特點,提升了抗干擾性。RS485通信模塊采用SN65HVD3082收發器,由處理器的通用輸入輸出(GPIO)引腳和通用異步收發器(UART)共同控制;GPIO引腳控制RS485通信模塊的數據收發,UART的信號經過電平轉換,轉換成RS485通信模塊的差分電平。
整體硬件搭建好之后,需要對操作系統進行適配。操作系統選用基于處理器 Exynos4412的Android 4.4.4系統,內核版本為Linux 3.0.15。此系統內部已經集成很多常用的標準驅動及接口程序,在此基礎上進行系統裁剪和驅動移植。
在Ubuntu12.04環境下對Android系統裁剪,使其占用更少的空間,運行更流暢,裁剪可分為內核的裁剪和Android上層的裁剪。
內核方面的裁剪借助基于文本菜單的配置工具Menuconfig,如圖2所示。僅選擇與本工程相關的驅動,最終生成“.config”文件。配置完成后,用交叉編譯工具arm-2009q3編譯,生成內核鏡像。

圖2 Menuconfig配置界面Fig.2 Menuconfig configuration diagram
Android上層的裁剪主要是刪除不必要的系統服務,以及修改系統啟動時讀取的配置文件“init.rc”,去除與本工程無關的服務。詳細實現過程不再贅述。
Android系統是基于Linux內核的,通過裁剪保留了工程必須的內核驅動。但是對于RS485通信模塊和報警模塊這種非標準設備,Android系統上層未對其支持,因此,不僅要在 Linux 內核中添加驅動模塊,還必須在Android系統上層添加對應的支持[6]。由于RS485通信模塊與報警模塊的驅動實現過程類似,這里只針對Android系統的RS485通信模塊驅動程序進行架構分析[7],如圖3所示。

圖3 RS485通信模塊驅動程序架構Fig.3 RS485 communication module driver architecture
太陽能熱水控制器軟件運行在Android系統的Dalvik虛擬機上,采用Java語言編寫,可以看到,其實現與硬件無關。Linux內核中的RS485驅動僅提供少量的接口,具體是在Android系統提供的硬件抽象層實現,是以 Linux共享庫(*.so)的形式存在,采用C/C++語言編寫。Dalvik虛擬機支持了Java語言的JNI(Java Native Interface)特性,使應用層Java代碼通過虛擬機調用本地共享庫,充當Java與C/C++之間的橋梁[8]。
對RS485通信模塊在硬件抽象層的程序按照JNI的聲明方法編寫,使用Android系統提供的NDK工具編譯,生成庫文件。應用層的監控軟件在使用該功能時加載該庫文件,即可使用對應的Java接口,簡化了應用層軟件設計的流程。
控制器應用程序軟件需要實現太陽能熱水工程運行狀態的實時監控、運行數據的保存查詢、相關參數的設置,以及與服務器間的遠程通信等功能。需實現的這些功能較為復雜,涉及前臺的Activity組件、后臺的Service組件、數據庫,以及多線程等知識。為降低程序開發的難度,采用模塊化設計,將軟件框架分為前臺的人機交互界面、后臺的監控服務和后臺的網絡服務3個部分。
人性化的設計和友好的界面是控制器應用程序軟件設計的前提。主界面以工程中常用的單水箱、作為輔助熱源的空氣源熱泵為例,動態顯示了集熱器出口溫度T1、水箱溫度T2、回水溫度T3、環境溫度T4、液位,以及熱泵循環泵、供水增壓泵的開啟情況。Android系統平臺其他線程不能刷新主界面的數據,因此,主界面數據動態顯示需通過Handler的消息傳遞機制來實現。軟件主界面如圖4所示。

圖4 應用程序軟件主界面Fig.4 Main interface of application software
考慮到用戶切換至每個界面的便攜性,在上方導航欄加入了參數設置、網絡設置、歷史數據及報警查詢按鈕,點擊不同按鈕可進入相應的界面。參數設置中有強制開關、定溫補水、溫差循環、熱泵輔助加熱、低水位補水、高溫防炸管循環、防凍循環等常用控制策略選項[9-10]。網絡設置保存有服務器IP地址及端口號。歷史數據和報警信息界面在打開時讀取SQLite3數據庫,并將讀取到的數據以表格和列表的形式顯示出來,供用戶查看。為防止由于數據過多而出現卡頓現象,采用了分頁加載的方法。
監控服務是控制器后臺運行的核心部分,會啟動采集線程和控制線程2個線程。采集線程主要負責定時對現場傳感器、儀表等的數據進行采集,然后進行相應處理,把處理后的數據存入SQLite3數據庫中,并通知控制線程。控制線程會讀取參數設置里的配置信息,根據采集來的數據,邏輯運算后對現場設備進行控制。為保證數據的實時性和穩定性,數據采樣時間應盡量小,經測試,采樣時間設置為1 s較為合適。
在實際工程應用中,由于存在環境干擾和儀表故障,會導致通信異常。為保證控制器與現場儀表設備之間通信穩定、可靠,需要對每一次通信進行校驗[11],如CRC16校驗和求和校驗,如果發現通信異常,則需要做出相應的處理(記錄或者報警)。
控制器網絡服務主要包括建立連接、本地數據傳輸、心跳包?;?個部分。為保證數據安全,控制器與服務器之間的通信均采用AES(Advanced Encryption Standard)加密算法進行加密[12]。
控制器與服務器建立TCP連接后,發送身份認證請求,服務器會返回一串隨機數列,再根據收到的隨機數列和本地密鑰計算出MD5值后再發送給服務器,若服務器驗證此MD5值成功,則連接成功;反之,控制器重新發起建立連接請求。當監測到當前處于連接狀態,則進入下一步,根據發送狀態標志位讀取SQLite3數據庫中未發送的數據,結合參數設置中設置的發送周期,向服務器發送本地采集信息;發送成功后,把數據庫中發送狀態標志位置1;發送周期設置在1~10 min之內。
控制器和服務器之間如果發送周期過長,運營商網絡監測到長時間無數據傳輸會切斷此連接節點;或者網絡狀況不好,控制器掉線,服務器無法區別,不會釋放該連接所占用的資源。為保證連接的有效性,引入心跳包機制,建立連接完成后啟動心跳包保活線程,以固定的時間間隔向服務器發送心跳包。
新型太陽能熱水控制器系統完成設計后,以實際工程環境作為本系統的測試環境,對控制器的性能進行測試,驗證系統是否滿足設計要求[13]。
系統整體測試內容主要包括:
1)人機交互界面的反應是否及時。
2)控制邏輯是否正確,各項功能是否正常,如溫差、低水位補水等測試。
3)通過服務器查詢實時數據,分析數據是否正確。
4)觀察控制器在一段時間內持續運行是否會出現異?,F象。
經過測試,控制器系統界面運行正常,控制邏輯正確,監測值與采集值一致,如表1所示??刂破髋c服務器之間保持穩定的網絡連接,并且在測試過程中系統未出現異常現象。

表1 監測與采集的信息Table 1 Monitored and collected information
對控制器RS485通信功能的穩定性測試主要體現在數據收發的成功率。控制器有一套容錯機制,可以保證采集到的數據的準確性,對接收的每一幀數據進行校驗,成功則計數加1。在控制器的RS485總線上接入上位機,對控制器發送的每一幀數據進行校驗,成功則計數加1。
在確?,F場儀表傳感器正常工作的情況下,分別對上述2項性能進行測試,結果如表2所示。

表2 RS485通信數據收發成功率Table 2 Success rate of RS485 communication data sending and receiving
測試結果表明,控制器RS485通信功能穩定,滿足設計需求。
對控制器網絡通信功能的穩定性測試主要體現在數據傳輸成功率和系統狀態發生變化時掉線重連的能力。在服務器正常工作且網絡正常的情況下,分別對上述2項性能進行測試,結果如表3、表4所示。

表3 網絡通信成功率Table 3 Success rate of network communication

表4 網絡通信連接測試Table 4 Network communication connection test
測試結果表明,控制器在以太網與GPRS兩種通信方式下數據傳輸成功率較高;當系統狀態發生變化時,控制器仍能和服務器保持穩定的連接。
本文針對傳統太陽能熱水控制器交互差、拓展性差等問題,基于Cortex-A9平臺,開發出一種新型太陽能熱水控制器。該控制器能夠保存更多的數據,支持遠程通信;采用RS485總線結構,可以根據實際工程需求拓展更多的設備;引入Android系統,控制程序與硬件之間能夠完全解耦,降低了開發難度;監控軟件按照模塊化設計,集成了參數設置、數據查詢等多種功能,具有良好的交互界面。測試結果表明,新型太陽能熱水控制器能夠穩定運行,滿足設計需求。