左岐 趙玉杰 王碩 杜春寶 北方工業(yè)大學
能源危機、環(huán)境污染等問題正危及人類的生產(chǎn)與生活。以氫氣作為能源,因其來源廣、安全環(huán)保、具有高能量、密度小易存儲等諸多優(yōu)點,成為最有希望解決這一系列問題的方案之一。制氫過程存在一定的危險,為了使制氫過程更加安全,借助遠程監(jiān)測,能實現(xiàn)對制氫設備狀態(tài)及時掌握。利用網(wǎng)絡技術實現(xiàn)遠程監(jiān)測,降低制氫生產(chǎn)成本提高勞動效率,增強制氫企業(yè)的競爭實力。
本設計以電解水制氫項目為研究背景,實現(xiàn)了嵌入式web服務器的設計。系統(tǒng)以STM32F103ZE單片機為控制核心,利用ENC28J6以太網(wǎng)控制器接接入局域網(wǎng)。移植μC/OSII操作系統(tǒng)和UIP協(xié)議棧,利用協(xié)議棧提供的函數(shù)在STM32上建立服務器。
建立服務器后可以通過PC上的瀏覽器對所設計的嵌入式WEB進行訪問,獲得采集的實時模擬量數(shù)據(jù)網(wǎng)頁,實現(xiàn)對電解水制氫過程中各個參數(shù)傳感器信號采集和遠程監(jiān)測。
2.2.1 系統(tǒng)總體硬件設計
采用基于Cortex-M3內(nèi)核的STM32F103ZE芯片作為嵌入式WEB服務器的核心處理器,采用STM32外接常用的嵌入式以太網(wǎng)控制器ENC28J60并通過RJ45接入因特網(wǎng)。
硬件部分主要包括信號采集模塊、數(shù)據(jù)存儲模塊、通訊模塊、電源模塊、以太網(wǎng)接口模塊以及STM32單片機模塊。其總體硬件結構圖如圖1所示。
圖1 硬件整體結構圖
2.2.2 嵌入式WEB服務器硬件設計
本設計使用的師STM32F103ZET6型號的MCU,該單片機沒有集成以太網(wǎng)控制器,所以采用STM32外接常用的嵌入式以太網(wǎng)控制器ENC28J60接入網(wǎng)絡。ENC28J60芯片兼容IEEE802.3的以太網(wǎng)控制器,集成MAC控制器和10BASE-TPHY控制器,自帶緩沖區(qū)、DMA,使用SPI接口與MCU進行通信。MCU使用SPI接口對ENC28J60芯片的寄存器寫入控制參數(shù)和接收數(shù)據(jù),實現(xiàn)以太網(wǎng)功能。
2.3.1 系統(tǒng)總體軟件設計
軟件設計方面主要采用C語言完成系統(tǒng)程序的編寫,本設計完成了ENC28J60網(wǎng)卡驅動程序編寫,移植了uC/OS-Ⅱ操作系統(tǒng)和UIP協(xié)議棧,最后完成HTTP服務程序的編寫,構成嵌入式web服務器。程序能夠對傳感器傳出信號完成數(shù)據(jù)采集、處理、存儲與網(wǎng)頁發(fā)送功能。根據(jù)前端知識完成了登錄系統(tǒng)界面網(wǎng)頁及電解水制氫主界面網(wǎng)頁的設計。采集數(shù)據(jù)超過規(guī)定值時系統(tǒng)會發(fā)出報警信息,提示設備異常并在電解水制氫的主界面網(wǎng)頁上顯示。
2.3.2 UC/OS-Ⅱ操作系統(tǒng)移植
UC/OS-Ⅱ是一個微型實時操作系統(tǒng),包括了一個操作系統(tǒng)最基本的一些特性,如任務調(diào)度、任務通訊、內(nèi)存管理、中斷管理、定時管理等。簡單明了的代碼,而且代碼完全開放。UC/OS-Ⅱ移植后運行UC/OS系統(tǒng)的設備上,程序執(zhí)行時會初始化系統(tǒng)任務管理所需要的各種鏈表等數(shù)據(jù)結構,接著根據(jù)應用程序需求創(chuàng)建任務,由調(diào)度器管理各個任務,中斷可由操作系統(tǒng)使能和除能,若使能中斷則可以在其他任務運行時跳轉到中斷服務程序。
2.3.3 UIP協(xié)議棧移植
uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡化了通訊流程,但保留了網(wǎng)絡通信必須使用的協(xié)議,設計重點放在了IP/TCP/ICMP/UDP/ARP這些網(wǎng)絡層和傳輸層協(xié)議上,保證了其代碼的通用性和結構的穩(wěn)定性。
向STM32移植UIP協(xié)議棧首先實現(xiàn)tapdev_init()、tapdev_read()及tapdev_send()這三個函數(shù),tapdev_init()用于初始化網(wǎng)卡;tapdev_read()函數(shù)用于從網(wǎng)卡讀取一包數(shù)據(jù);tapdev_send()函數(shù)用于向網(wǎng)卡發(fā)送一包數(shù)據(jù);這三個函數(shù)實現(xiàn)了最底層的網(wǎng)卡操作。 其次需要STM32提供一個定時器做時鐘,提供10ms計時,通過colockarch.c里面的clock_time()函數(shù)返回給uip使用。最后配置uipconf.h里面的宏定義選項。
通過以上三步的修改,我們基本上就完成了uip的移植。在使用uip的時候,一般通過如下順序:1.實現(xiàn)接口函數(shù)(回調(diào)函數(shù))UIP_APPCALL;2.調(diào)用tapdev_init()函數(shù),初始化網(wǎng)卡,配置MAC地址;3.調(diào)用uip_init()函數(shù),初始化uip協(xié)議棧;4.通過uip_ipaddr()、uip_sethostaddr()、uip_setdraddr()和 uip_setnetmask()等函數(shù)實現(xiàn)IP地址、網(wǎng)關以及掩碼 的設置;5.設置監(jiān)聽端口;
6.uip通過uip_polling函數(shù)輪訓處理uip事件。
本設計在實驗室條件下進行了測試,通過測試本設計初步實現(xiàn)對電解水工程工藝的多路數(shù)據(jù)采集、處理和存儲,并通過WEB服務器將數(shù)據(jù)發(fā)布到網(wǎng)上,通過電腦瀏覽器輸入http://192.168.1.16,進入電解水制氫登錄界面,輸入正確的用戶名和密碼提交可到電解水制氫監(jiān)測系統(tǒng)數(shù)據(jù)顯示界面,該界面可以顯示各個參數(shù)的采集數(shù)據(jù),當采集數(shù)據(jù)超過規(guī)定值時,該網(wǎng)頁會顯示具體報警信息。
該測控系統(tǒng)實現(xiàn)了數(shù)據(jù)采集、實時顯示、報警及遠程監(jiān)測等工程要求。但僅僅只在實驗室進行了模擬測試,還未進行現(xiàn)場的測試。下一步工作將與現(xiàn)場設備進行連接、測試。