管立偉, 盧 宇, 吳進營, 何志杰, 陳 曦, 任建明
(福建師范大學(xué) 物理與能源學(xué)院 福建省量子調(diào)控與新能源材料重點實驗室, 福建 福州 350117)
?
基于STM32的嵌入式網(wǎng)絡(luò)通信終端設(shè)計與實現(xiàn)
管立偉,盧宇,吳進營,何志杰,陳曦,任建明
(福建師范大學(xué) 物理與能源學(xué)院 福建省量子調(diào)控與新能源材料重點實驗室, 福建 福州 350117)
太陽能中央熱水工程中通信網(wǎng)絡(luò)需要滿足維護管理難度小、工程成本低和可靠性高的要求,針對此采用STM32和嵌入式Internet技術(shù)設(shè)計了網(wǎng)絡(luò)通信終端,給出了TCP/IP協(xié)議棧的處理方法和軟件流程,系統(tǒng)通過端口號的區(qū)分實現(xiàn)企業(yè)服務(wù)器端和手機APP端不同的網(wǎng)絡(luò)數(shù)據(jù)傳輸通道。在軟件系統(tǒng)中建立多任務(wù)消息機制,引入限時服務(wù)策略對任務(wù)的運行時間進行約束,提高了軟件的可靠性。該設(shè)計已應(yīng)用于景德鎮(zhèn)規(guī)劃局的多個可再生能源示范項目中,實際應(yīng)用表明,該終端的性能指標滿足設(shè)計要求。
STM32;以太網(wǎng);熱水系統(tǒng);限時服務(wù)
目前,各種通信方式的控制系統(tǒng)被廣泛應(yīng)用于太陽能中央熱水工程中,以提高系統(tǒng)運行的數(shù)字化和信息化,減少系統(tǒng)管理和維護的人力物力投入[1-2]。但是,在太陽能中央熱水工程與物聯(lián)網(wǎng)技術(shù)相結(jié)合方面,還存在通信網(wǎng)絡(luò)成本高、安全性差、通信距離受限等問題。在本課題組研究開發(fā)的面向集群應(yīng)用的太陽能中央熱水工程測控與管理系統(tǒng),已經(jīng)在全國各地的太陽能中央熱水工程實現(xiàn)了可視化監(jiān)控與管理[3]。在實驗和實際工程應(yīng)用中發(fā)現(xiàn),區(qū)域集控中心需要由用戶提供能上網(wǎng)的電腦,實現(xiàn)分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)同步,一旦電腦不開啟將無法同步數(shù)據(jù)來為太陽能熱水工程提供系統(tǒng)運行的性能分析和效益評價,出現(xiàn)維護難度大和管理成本高的問題,這必然要求太陽能熱水工程控制器換一種方式接入以太網(wǎng)。本文充分考慮建筑現(xiàn)有網(wǎng)絡(luò)建設(shè)基礎(chǔ)和工程成本,對熱水工程采用嵌入式Internet的方式接入以太網(wǎng)開展相關(guān)研究工作,力求系統(tǒng)運行的經(jīng)濟性、傳輸距離、組網(wǎng)靈活性等一系列問題得到有效解決。
1.1網(wǎng)絡(luò)通信終端設(shè)計
系統(tǒng)結(jié)構(gòu)框圖如圖1所示,系統(tǒng)控制核心由STM32F103VCT6及其外圍電路組成,實現(xiàn)對各個模塊協(xié)調(diào)控制,負責(zé)對數(shù)據(jù)的處理、存儲和與無線數(shù)傳模塊通信。SD卡存儲模塊通過SDIO總線與主控連接,用來存儲太陽能熱水工程歷史數(shù)據(jù)。嵌入式網(wǎng)絡(luò)通信終端通過網(wǎng)口與企業(yè)集控與管理中心實現(xiàn)數(shù)據(jù)交互,在局域網(wǎng)內(nèi)移動區(qū)域管理終端APP通過網(wǎng)口來配置太陽能中央熱水工程的項目信息、結(jié)構(gòu)參數(shù)和運行參數(shù)等。PC測試模塊通過串口與上位機通信,進行參數(shù)顯示、初始化配置,并通過串口與無線數(shù)傳模塊通信,將設(shè)備參數(shù)上傳至服務(wù)器端。液晶顯示模塊顯示網(wǎng)絡(luò)通信終端、移動區(qū)域管理終端APP和企業(yè)端服務(wù)器端網(wǎng)絡(luò)參數(shù)以及當前數(shù)據(jù)時間。供電電源模塊為整機電路各個模塊提供合適的工作電源。
圖1 系統(tǒng)結(jié)構(gòu)框圖
1.2以太網(wǎng)模塊
本文設(shè)計的嵌入式網(wǎng)絡(luò)通信終端采用了美國微芯科技公司生產(chǎn)的ENC28J60芯片,其主要特性為集成MAC和10BASE-TPHY、接收器和沖突抑制電路,最高速度可達10 Mb/s的SPI接口,內(nèi)置8 KB發(fā)送/接收數(shù)據(jù)包SRAM,可配置收發(fā)緩沖器大小、硬件支持循環(huán)接收FIFO、IP校驗和計算等特性[4]。以太網(wǎng)模塊ENC28J60接口電路如圖2所示。
圖2 以太網(wǎng)模塊ENC28J60接口電路圖
STM32F103C8T6在與ENC28J60連接時應(yīng)注意:①其內(nèi)部模擬電路調(diào)節(jié)引腳(RBIAS)與地之間需要外接1個2.7 kΩ、精度為1%的電阻,用于控制差分輸出引腳(TPOUT+/TPOUT-)輸出電壓幅度;②差分輸入引腳(TPIN+/TPIN-)、差分輸出引腳(TPOUT+/TPOUT-)分別通過1個50 Ω、精度為1%的電阻和1個10 μF的電容串聯(lián)后接地,以使差分輸入阻抗、輸出阻抗和雙絞線的阻抗匹配,獲得較好的傳輸效果;③ENC28J60的兩個中斷輸出分別連接到STM32的GPIO管腳,分別用于事件中斷觸發(fā)和網(wǎng)絡(luò)喚醒主機,同時注意設(shè)置SPI的通信速率不大于10 Mb/s。
2.1TCP/IP協(xié)議棧的移植
表1 TCP/IP協(xié)議分層模型
嵌入式TCP/IP協(xié)議采用4層結(jié)構(gòu),其分層模型及協(xié)議如表1[5-6]。
根據(jù)嵌入式Internet的實際應(yīng)用情形,在確保協(xié)議功能完整性的基礎(chǔ)上,可有選擇性地使用其中幾種協(xié)議模塊,如在運輸層可選擇采用簡單而快速的UDP協(xié)議或者可靠而完備的TCP協(xié)議[7-8]。實際上,通過加入自定義的通信協(xié)議來判斷是否連接正?;蜻M行多次重試,UDP也可變得可靠。
在此僅使用UDP、IP、ICMP、DHCP和ARP協(xié)議模塊,ARP協(xié)議完成物理地址的解析,DHCP協(xié)議為TCP/IP設(shè)備提供IP地址和配置,ICMP協(xié)議是主機和網(wǎng)關(guān)進行差錯報告、控制和進行請求/應(yīng)答的協(xié)議,IP協(xié)議主要完成數(shù)據(jù)通信功能,UDP為應(yīng)用程序提供簡單高效的無連接傳輸服務(wù)。對太陽能中央熱水系統(tǒng)現(xiàn)場數(shù)據(jù)的協(xié)議處理和傳輸過程如圖3所示。
圖3 TCP/IP協(xié)議處理過程
系統(tǒng)軟件采用時間片輪轉(zhuǎn)調(diào)度算法和硬件中斷相結(jié)合的程序結(jié)構(gòu),由于沒有采用實時多任務(wù)嵌入式操作系統(tǒng),協(xié)議的實現(xiàn)如果采用中斷處理方式,當系統(tǒng)中有按鍵中斷、實時數(shù)據(jù)采集和實時通信中斷等任務(wù)時,會造成沖突,影響系統(tǒng)軟件的正常運行。因此在處理流程上應(yīng)將實時性要求較低、占用資源較久的TCP/IP協(xié)議棧處理任務(wù)放在主程序中實現(xiàn),而把實時性要求較高的任務(wù)放在中斷處理程序中完成。
2.2網(wǎng)絡(luò)通信程序設(shè)計
本設(shè)計網(wǎng)絡(luò)連接采用UDP通信方式,需要在嵌入式網(wǎng)絡(luò)通信終端上實現(xiàn)客戶端程序來與企業(yè)端通信軟件和手機端APP進行交互。通過端口號的區(qū)分實現(xiàn)企業(yè)服務(wù)器端和手機APP端不同的網(wǎng)絡(luò)數(shù)據(jù)傳輸通道,同時同一應(yīng)用的數(shù)據(jù)發(fā)送和數(shù)據(jù)接收也采用不同的端口號,如本設(shè)計中定義服務(wù)器端發(fā)送端口和監(jiān)聽端口分別為60000和60001,手機APP端發(fā)送端口和監(jiān)聽端口分別為60003和60002,從IP層接收了數(shù)據(jù)包之后,根據(jù)UDP的目的端口號進行分解操作。本設(shè)計中網(wǎng)絡(luò)通信任務(wù)中的接收函數(shù)實現(xiàn)如下:
u8 NetRecDeal(void)
{
u16 PortTemp,datalen;
u32 plen=0;
plen = enc28j60PacketReceive(BUFFER_SIZE, g_NetBuf);∥調(diào)用硬件層函數(shù)以查詢方式收取網(wǎng)絡(luò)數(shù)據(jù)包
…∥ ARP報文處理
if(RecIsIpAndForMe(g_NetBuf,plen)==0) {return(0);}∥接受的包不是IP包或者不是對應(yīng)IP返回0
…∥如果IP數(shù)據(jù)包的類型是ICMP,并且是ICMP請求,那么做回應(yīng)。
PortTemp=RecIpPackIsUdp(g_NetBuf);∥獲取UDP數(shù)據(jù)區(qū)和端口號
datalen=NetReadUint16(g_NetBuf+UDP_LEN)-UDP_HEADER_LEN;
switch(PortTemp)∥如果IP是UDP數(shù)據(jù)包,且端口正確,那么做應(yīng)答處理
{
case DHCP_CLIENT_LOCAL_UDP_PORT:∥DHCP端口
DhcpRecDeal(g_NetBuf);
break;
case INFORM_PORT:∥遠程服務(wù)器監(jiān)聽端口60001
if( PtlUdpRec(g_NetBuf+UDP_DATA_P,datalen)) {…}break;∥應(yīng)用協(xié)議處理
case Cellphone_PORT:∥手機端監(jiān)聽端口60002
memcpy((void *)&g_CellphoneIp[0],(void *)&g_NetBuf[IP_SRC_P],4);∥將手機端IP記錄下來
…
if( PtlUdpcellPhoneRec(g_NetBuf+UDP_DATA_P,datalen)) {…} break;∥應(yīng)用協(xié)議處理
default:break;
}
return 1;
}
網(wǎng)絡(luò)通信任務(wù)中接收數(shù)據(jù)根據(jù)不同的端口號進行相應(yīng)的應(yīng)用協(xié)議處理,其發(fā)送函數(shù)則將接收函數(shù)中目的端口號和源端口號對調(diào),按照相應(yīng)協(xié)議的格式進行數(shù)據(jù)組包。需要注意的是,由于在局域網(wǎng)內(nèi)與手機端APP通信,需要將其IP記錄下來,便于UDP數(shù)據(jù)組包。
2.3多任務(wù)限時服務(wù)
借鑒計算機分時處理和Windows系統(tǒng)事件驅(qū)動等思想,構(gòu)建多任務(wù)軟件框架[5]。網(wǎng)絡(luò)通信終端軟件的多任務(wù)架構(gòu)設(shè)計是根據(jù)工程實際需求,將嵌入式網(wǎng)絡(luò)通信終端要實現(xiàn)的功能劃分為多個任務(wù)模塊,如時間事件(秒事件、分事件等)處理、串口通信數(shù)據(jù)處理、網(wǎng)絡(luò)通信數(shù)據(jù)處理、實時數(shù)據(jù)采集處理、心跳包任務(wù)和LED指示燈任務(wù)等。需要說明的是,由于UDP是無連接數(shù)據(jù)傳輸,這里增加心跳包任務(wù)引入心跳包機制,嵌入式網(wǎng)絡(luò)通信終端定時向企業(yè)服務(wù)器端發(fā)送心跳包來獲取相應(yīng)的配置參數(shù)或者太陽能熱水系統(tǒng)的運行配置參數(shù)。采用事件/消息驅(qū)動機制,按不同優(yōu)先級別給不同的任務(wù)模塊分配MCU的控制權(quán),各個任務(wù)模塊在相應(yīng)的執(zhí)行時間范圍內(nèi)訪問MCU。軟件的多任務(wù)驅(qū)動機制流程如圖4所示,主程序循環(huán)以標志位控制為主,根據(jù)標志位的狀態(tài)來確定任務(wù)能否訪問MCU,即標志位相當于事件消息。
圖4 STM32多任務(wù)流程框圖
當某個任務(wù)出現(xiàn)非正常結(jié)束時,當前使用的資源有可能作為下一次任務(wù)的初始狀態(tài),出現(xiàn)任務(wù)交叉重疊情形,從而影響任務(wù)的正常執(zhí)行,因此必須對這些任務(wù)在運行時間上進行約束。限時服務(wù)設(shè)計流程如圖5和圖6所示。為每個需要限時服務(wù)的任務(wù)模塊分配獨立計時單元和運行狀態(tài)標志位,在定時中斷服務(wù)程序中,依據(jù)任務(wù)標志位的狀態(tài)來獨立計時;在系統(tǒng)主程序循環(huán)中,任務(wù)的限時判斷獨立于原任務(wù)處理模塊之外,如圖6所示,它僅對任務(wù)運行的時間進行判斷,如果任務(wù)運行時間超過了規(guī)定的最大運行時間,則將任務(wù)所使用的全部資源重新初始化,供下一次任務(wù)使用。
圖5 限時服務(wù)設(shè)計的計時流程 圖6 限時服務(wù)設(shè)計的超時服務(wù)流程
本嵌入式網(wǎng)絡(luò)通信終端已應(yīng)用于太陽能中央熱水工程的通信網(wǎng)絡(luò)中,通信網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示,由現(xiàn)場終端控制器、從無線數(shù)傳模塊、主無線數(shù)傳模塊、嵌入式網(wǎng)絡(luò)通信終端和企業(yè)集控與管理中心5部分組成。自主設(shè)計的現(xiàn)場終端控制器采集和處理熱水系統(tǒng)運行數(shù)據(jù),實現(xiàn)系統(tǒng)控制[3]。從無線數(shù)傳模塊通過串口與終端控制器建立通信鏈路,主無線數(shù)傳模塊通過串口與嵌入式網(wǎng)絡(luò)通信終端連接,嵌入式網(wǎng)絡(luò)通信終端通過Internet與企業(yè)集控與管理中心實現(xiàn)數(shù)據(jù)交互,在局域網(wǎng)內(nèi)采用移動區(qū)域管理終端來配置嵌入式網(wǎng)絡(luò)通信終端相關(guān)網(wǎng)絡(luò)參數(shù)以及太陽能中央熱水系統(tǒng)的項目信息、結(jié)構(gòu)參數(shù)、運行參數(shù)和報警閾值等,便于工程現(xiàn)場調(diào)試和維護。圖8顯示了企業(yè)集控與管理中心基于該通信網(wǎng)絡(luò)獲取到的江西省景德鎮(zhèn)市規(guī)劃局的多個可再生能源示范項目工程現(xiàn)場數(shù)據(jù)。目前該通信設(shè)備已經(jīng)投入實際運行,各項功能和技術(shù)指標均滿足設(shè)計要求,系統(tǒng)工作穩(wěn)定可靠。
圖7 太陽能中央熱水工程通信網(wǎng)絡(luò)結(jié)構(gòu)圖
圖8 太陽能中央熱水工程現(xiàn)場數(shù)據(jù)
采用STM32設(shè)計的嵌入式網(wǎng)絡(luò)通信終端,具有維護與管理難度小和高可靠性等特點,不僅充分考慮到建筑現(xiàn)有網(wǎng)絡(luò)建設(shè)基礎(chǔ)工程成本低的要求,而且便于管理,極大地改善了目前太陽能中央熱水工程維護現(xiàn)狀。采用多任務(wù)架構(gòu)體系的軟件系統(tǒng)和任務(wù)限時服務(wù)機制,極大地提高了軟件冗余度和抗干擾能力。使用手機APP配置嵌入式網(wǎng)絡(luò)通信終端相關(guān)網(wǎng)絡(luò)參數(shù)以及太陽能中央熱水系統(tǒng)的項目信息、結(jié)構(gòu)參數(shù)、運行參數(shù)和報警閾值等,便于工程現(xiàn)場調(diào)試和維護。嵌入式網(wǎng)絡(luò)通信終端已經(jīng)成功應(yīng)用于江西省景德鎮(zhèn)市規(guī)劃局的31個可再生能源示范項目中。該系統(tǒng)如果能結(jié)合3G或者無線數(shù)傳等技術(shù),將極大地提高太陽能中央熱水工程維護和管理的數(shù)字化、信息化程度,取得良好的社會和經(jīng)濟效益。
[1]TAHAT A,ABUKHALAF M,ELMUHESEN O.Solar energy water heater remote monitoring and control system[J].ElectronicDevice,Systemsand Amplicatings(ICEDSA),2011(4):98-103.
[2]NKOLOMA M,ZENNARO M,BAGULA A.SM2:Solar monitooring system in Malawi[J].IEEE Computer Sosiety,2013,7(5):866-875.
[3]管立偉,李汪彪,秦永熙,等.太陽能、熱泵熱水工程多模式測試及技術(shù)實現(xiàn)[J].現(xiàn)代電子技術(shù),2013(12):133-136.
[4]Microchip Technology Incorporated.ENC28J60數(shù)據(jù)手冊[EB/OL].[2016-03-21].http:∥www.microchip.com/wwwproducts/en/ENC28J60.
[5]李曉丹.基于STM32的物聯(lián)網(wǎng)嵌入式網(wǎng)關(guān)的設(shè)計[J].計算機工程與應(yīng)用,2015,51(4):61-65.
[6]SCAGLIA Sergio.嵌入式Internet TCP/IP基礎(chǔ)、實現(xiàn)及應(yīng)用[M].潘琢金,徐蕾,拱長青,等譯.北京:北京航空航天大學(xué)出版社,2008.
[7]王峰.基于DSP的Ethernet/CAN總線嵌入式網(wǎng)關(guān)的設(shè)計[D].上海:上海大學(xué),2004.
[8]ADAM Dunkeis.Design and Implementation of the LwIP TCP/IP Stack[DB/OL].(2001-02-20)[2016-03-21].http:∥read.pudn.com/downloads16/sourcecode/embed/60225/lwip移植/lwip.pdf.
[9]吳允平,蔡聲鎮(zhèn),樂仁昌,等.單片機程序的限時服務(wù)策略及設(shè)計[J].系統(tǒng)工程與電子技術(shù),2004,26(11):1672-1674.
[責(zé)任編輯:李 莉]
Design and implementation of embedded network communication terminal based on the STM32
GUAN Li-wei, LU Yu,WU Jin-ying,HE Zhi-jie,CHEN Xi,REN Jian-ming
(Fujian Provincial Key Laboratory of Quantum Manipulation and New Energy Materials,College of Physics and Energy, Fujian Normal University, Fuzhou 350117, China)
In response to such requirements as the easy maintenance and management, low engineering cost and high reliability of the communication network in solar energy central hot water system the study uses STM32 and embedded Internet technology to design the network communication terminal. The TCP/IP protocol stack processing method is given and the software process, through the port number to distinguish the enterprise server and mobile phone APP end of different network data transmission channel. Multitasking message mechanism in the software system, introducing limited-time service strategy operation time constraints of tasks, improves the reliability of the software. Practical application shows that the performance of the terminal completely meets the design requirements, and has been successfully applied in Jingdezhen planning bureau of multiple renewable energy demonstration projects.
STM32;Ethernet;hot water project;prompt service
1673-2944(2016)04-0023-06
2016-04-21
2016-05-25
福建省高新技術(shù)開發(fā)計劃重點項目(2012H0021);福建省高校服務(wù)海西建設(shè)重點項目(2008HX10604)
管立偉(1985—),男,湖北省黃岡市人,福建師范大學(xué)助理實驗師,碩士,主要研究方向為智能檢測與控制系統(tǒng)。
TN919.6+4
A