摘 要: 提出了一種支持遠程界面訪問的智能溫濕度控制系統(tǒng)設(shè)計方法。系統(tǒng)由智能溫濕度控制模塊、嵌入式橋接網(wǎng)關(guān)及上位機組成,支持分布式多點溫濕度信息采集、風機控制、上位機監(jiān)控及遠程桌面發(fā)布功能。智能溫濕度控制模塊和橋接網(wǎng)關(guān)基于STM32 MCU設(shè)計,采用Modbus RTU與Modbus TCP數(shù)據(jù)傳輸協(xié)議,分別傳輸串行鏈路信息與網(wǎng)絡(luò)鏈路信息,保證信息幀的準確性。上位機通過組態(tài)軟件的Modbus TCP通訊端口與網(wǎng)關(guān)無縫連接,實現(xiàn)多嵌入式網(wǎng)關(guān)組態(tài)及Web界面發(fā)布功能。實用結(jié)果表明,系統(tǒng)能穩(wěn)定環(huán)境溫濕度,滿足現(xiàn)場對溫濕度環(huán)境控制的要求。
關(guān)鍵詞: STM32; Modbus RTU; Modbus TCP; 組態(tài)軟件
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)20?0102?05
0 引 言
隨著信息化進程的加快,工廠、企業(yè)及現(xiàn)代化樓宇都要求其現(xiàn)場設(shè)備接入信息網(wǎng)絡(luò)進行統(tǒng)一管理。現(xiàn)有工廠企業(yè)控制網(wǎng)絡(luò)中的設(shè)備大多只支持RS 232,RS 485串行鏈路形式的通訊。串行鏈路應(yīng)用廣泛,但由于傳輸距離的限制,只能應(yīng)用在小型局域控制網(wǎng)絡(luò)。要將現(xiàn)場設(shè)備接入信息網(wǎng)絡(luò)必須解決不同網(wǎng)絡(luò)通訊協(xié)議轉(zhuǎn)接問題。要構(gòu)建大型信息控制網(wǎng)絡(luò)必須要采用分層次管理的形式,將一個局域網(wǎng)分為若干子局域網(wǎng),子局域網(wǎng)內(nèi)部采用串行鏈路方式進行連接,對子局域網(wǎng)配置一個信息中轉(zhuǎn)裝置,不同局域網(wǎng)信息通過轉(zhuǎn)換裝置最終連接到控制中心PC,利用網(wǎng)絡(luò)技術(shù)將控制中心信息發(fā)布到互聯(lián)網(wǎng),實現(xiàn)控制網(wǎng)絡(luò)每個節(jié)點信息連入互聯(lián)網(wǎng)。
本文根據(jù)組建大型控制網(wǎng)絡(luò)方案,實現(xiàn)一種支持遠程訪問的智能溫濕度控制系統(tǒng),系統(tǒng)可實現(xiàn)對分區(qū)域、分層多點溫濕度信息的采集,并通過每一處放置的風機設(shè)備對溫濕度情況進行實時控制,支持遠程用戶對控制系統(tǒng)的訪問,遠程用戶同步對整個控制系統(tǒng)進行監(jiān)控。智能溫濕度控制系統(tǒng)由智能溫濕度控制模塊、嵌入式橋接網(wǎng)關(guān)及上位計算機組成,其中智能溫濕度控制模塊及嵌入式網(wǎng)關(guān)都是基于STM32平臺的嵌入式系統(tǒng),支持Modbus RTU串行方式數(shù)據(jù)傳輸,嵌入式橋接網(wǎng)關(guān)支持Modbus RTU與Modbus TCP轉(zhuǎn)接功能,上位機利用組態(tài)軟件的組態(tài)功能與控制系統(tǒng)進行無縫連接。本系統(tǒng)的實現(xiàn)為工廠企業(yè)控制網(wǎng)路的智能化、網(wǎng)絡(luò)化、集中化提供了一種切實可行的技術(shù)路徑。
1 系統(tǒng)組網(wǎng)結(jié)構(gòu)設(shè)計
智能溫濕度控制系統(tǒng)分為4層,分別從底層傳感層、網(wǎng)關(guān)層、上位機到最上層的互聯(lián)網(wǎng)層,分層原則按物理鏈路傳輸路徑劃分。傳感層由智能溫濕度控制模塊及其控制的溫濕度傳感器和繼電器組成,負責實時環(huán)境溫濕度信息采集及風機設(shè)備控制。網(wǎng)關(guān)層為連接傳感層與上位機的中轉(zhuǎn)層,實現(xiàn)鏈路協(xié)議轉(zhuǎn)換,它相對于智能溫濕度控制模塊作為Modbus主機節(jié)點,相對于PC是服務(wù)器端。上位機實現(xiàn)計算機監(jiān)控軟件設(shè)計,實時監(jiān)控環(huán)境溫濕度信息及風機狀態(tài)監(jiān)控,并將監(jiān)控軟件的實時畫面通過Web發(fā)布到遠程客戶端。互聯(lián)網(wǎng)層通過Web瀏覽器對監(jiān)控系統(tǒng)畫面同步監(jiān)控。系統(tǒng)結(jié)構(gòu)如圖1所示。
每個嵌入式網(wǎng)關(guān)與其相連的智能溫濕度控制模塊分布在同一范圍內(nèi),組成一個子局域網(wǎng),負責在局域網(wǎng)內(nèi)的數(shù)據(jù)采集、風機設(shè)備控制。不同的子局域網(wǎng)之間不會產(chǎn)生干擾,有利于整個控制網(wǎng)絡(luò)的模塊化管理。在整個控制系統(tǒng)中,嵌入式橋接網(wǎng)關(guān)只起到協(xié)議橋接作用,并不對數(shù)據(jù)進行處理,所以上位機掛載智能模塊數(shù)量需要根據(jù)Modbus RTU模式規(guī)定有所限制,同時,掛載過多的子節(jié)點也會影響系統(tǒng)實時性。本文智能溫控系統(tǒng)使用5個嵌入式網(wǎng)關(guān),每個網(wǎng)關(guān)搭載10個智能溫濕度控制模塊節(jié)點,保證了傳輸可靠性及實時性。
2 系統(tǒng)硬件系統(tǒng)設(shè)計
2.1 智能溫濕度控制模塊硬件結(jié)構(gòu)設(shè)計
智能溫濕度控制模塊通過溫濕度傳感器的信息采集,將系統(tǒng)所需要的環(huán)境信息轉(zhuǎn)化為可識別的數(shù)字信號,針對這些數(shù)字信號的值及狀態(tài)來決定智能溫濕度控制模塊的繼電器動作,繼電器可控制風機、閥門等設(shè)備的狀態(tài)。智能溫濕度控制模塊的結(jié)構(gòu)框圖如圖2所示。
在智能溫濕度控制模塊中,處理器采用ARM公司低功耗、高性價比32位Cotex?M3內(nèi)核處理器STM32F103VET6,可搭載UCOS,Linux等嵌入式操作系統(tǒng),F(xiàn)103是屬于“增強型”系列,最高工作頻率可達72 MHz,512 KB的FLASH存儲器,其豐富的時鐘系統(tǒng)為外設(shè)提供多種時鐘選擇,溫濕度控制模塊擴展外設(shè)包括溫濕度采集、繼電器驅(qū)動、RS 485接口模塊及其他外圍電路。溫度采集模塊采用SHT10溫濕度傳感器,通訊采用I2C協(xié)議,即單片機I/O引腳模擬I2C總線協(xié)議方式與傳感器通訊。
利用STM32的I/O管腳通過控制三極管的開關(guān)來驅(qū)動繼電器模塊作為風機、閥門控制開關(guān)。溫濕度控制模塊除溫濕度模塊與繼電器模塊外,還包括BOOT電路、時鐘電路、電源電路及串行接口電路,保證系統(tǒng)正常運轉(zhuǎn)。
2.2 嵌入式網(wǎng)關(guān)硬件結(jié)構(gòu)設(shè)計
嵌入式網(wǎng)關(guān)與智能溫濕度控制模塊類似,都是采用STM32處理器作為處理核心,外設(shè)要增加LCD模塊及網(wǎng)絡(luò)接口模塊,但不需要傳感器及繼電器控制模塊。其中,LCD模塊為用戶提供人機交換接口,LCD采用觸摸屏方式,提供比按鍵更加靈活的操作方式。LCD由STM32的FSMC接口、液晶驅(qū)動芯片及觸屏驅(qū)動芯片進行驅(qū)動。以太網(wǎng)模塊提供RJ45接口與計算機通訊,RJ45接口接到10 Mb/s的以太網(wǎng)是通過網(wǎng)絡(luò)變壓器HR911105+SPI接口的獨立以太網(wǎng)控制器ENC28J60完成。
3 系統(tǒng)軟件設(shè)計
3.1 智能溫濕度控制模塊程序設(shè)計
3.1.1 智能溫濕度控制程序流程
智能溫濕度控制模塊主要實現(xiàn)兩個功能:環(huán)境溫濕度監(jiān)測和數(shù)據(jù)上傳。智能溫濕度控制模塊的程序設(shè)計是在STM32函數(shù)庫支撐下實現(xiàn)的,調(diào)用庫函數(shù)實現(xiàn)系統(tǒng)初始化及其外設(shè)接口的程序編寫。溫濕度控制模塊程序流程見圖4。
溫濕度數(shù)值及風機的狀態(tài)是在每一次While()主循環(huán)都會進行讀取,這種方式可以保證系統(tǒng)的實時性,在上位機發(fā)來讀取命令時可以直接將溫濕度及風機狀態(tài)取走,而不必等待溫濕度傳感器相對漫長的讀取過程。
風機的狀態(tài)由智能溫濕度控制模塊自身進行控制,當檢測其溫濕度數(shù)值超標時自動打開風機設(shè)備,當溫濕度達到要求標準時自動關(guān)閉。
在數(shù)據(jù)傳輸中ModbusInput()與ModbusOutput()實現(xiàn)Modbus協(xié)議的解碼與編碼。
3.1.2 基于Modbus RTU實現(xiàn)數(shù)據(jù)傳輸
Modbus是Modicon(現(xiàn)為施耐德電氣公司的一個品牌)開發(fā)的報文傳輸協(xié)議,Modbus通信協(xié)議在OSI模型中屬于數(shù)據(jù)鏈路層[1]。Modbus串行通訊有RTU和ASCII兩種模式,相對于ASCII模式,RTU模式表達相同的信息需要較少的位數(shù),且在相同通訊速率下具有更大的數(shù)據(jù)流量[2],RTU模式的具體每個字節(jié)的格式[3]:編碼系統(tǒng):8位二進制,16進制0~9,A~F;數(shù)據(jù)位:1起始位;8數(shù)據(jù)位,低位先送;奇/偶校驗時1位,無奇/偶校驗時0位;帶校驗時1位停止位,無校驗時2位停止位;錯誤校驗區(qū):循環(huán)冗余校驗(CRC)。
Modbus協(xié)議定義了一個與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU)。特定總線或網(wǎng)絡(luò)上的Modbus協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域。圖5為Modbus RTU下的ADU格式。
ModbusInput()與ModbusOutput()函數(shù)實現(xiàn)數(shù)據(jù)包解析與打包工作,全部要遵循ADU的格式進行編寫。功能碼與數(shù)據(jù)組成了基本的PDU單元,Modbus支持15個功能碼,用戶可以根據(jù)實際需要進行刪減,設(shè)計中只應(yīng)用到3個相應(yīng)功能碼如表1所示。
表1 系統(tǒng)Modbus功能碼及地址對應(yīng)關(guān)系
Modbus協(xié)議除了規(guī)定其數(shù)據(jù)幀格式外,還需要滿足其時序要求,在RTU模式下信息幀開始前必須有至少3.5個字符的靜止時間t3.5,發(fā)送完畢后也需要t3.5時間間隔,即兩個幀之間要有3.5個字符的靜止時間來保證一幀的信息已發(fā)送完成。
在一幀發(fā)送期間,如果出現(xiàn)1.5字符時間以上的間隔,則會認為該信息幀不完整,系統(tǒng)會刷新不完整的幀,并認為下一個接收為下一幀的器件地址,這個時間一般由串口的波特率來保證。
當系統(tǒng)波特率大于19 200 b/s時用1.75 ms代替3.5字符靜止時間,通過對定時器計數(shù)值及預(yù)分頻的設(shè)定達到定時時間=1.75 ms,程序如下:
TIM_TimeBaseStructure.TIM_Period =175;
//計數(shù)值:175 定時1.75 ms
TIM_TimeBaseStructure.TIM_Prescaler=720;
//預(yù)分頻,除數(shù):720 100 kHz
3.2 嵌入式網(wǎng)關(guān)程序設(shè)計
3.2.1 網(wǎng)關(guān)程序?qū)崿F(xiàn)流程
嵌入式網(wǎng)關(guān)相對于智能溫濕度控制模塊是Modbus的主機,相對于上位機PC是服務(wù)器端,所以嵌入式網(wǎng)關(guān)不但要支持兩種模式下的數(shù)據(jù)傳輸,還要解決協(xié)議轉(zhuǎn)換的任務(wù),即Modbus RTU到Modbus TCP/IP之間的相互轉(zhuǎn)換。圖6為一次轉(zhuǎn)換流程圖。
3.2.2 Lwip在STM32上的移植
Modbus/TCP是運行在TCP/IP協(xié)議之上的協(xié)議,所以移植了一輕量級的TCP/IP協(xié)議棧:Lwip。Lwip是一開放源碼的TCP/IP協(xié)議棧,相較于現(xiàn)流行的Uip協(xié)議棧,更加適合在32位嵌入式平臺上應(yīng)用。
在使用Lwip之前,需要對協(xié)議棧的相關(guān)文件進行修改,以便其可以支持STM32平臺,移植主要在以下幾個方面:
(1)數(shù)據(jù)類型的定義,這與移植的硬件平臺及編譯環(huán)境緊密相關(guān)。
(2)協(xié)議棧底層函數(shù)的修改,這里主要是底層的數(shù)據(jù)接收和發(fā)送,主要與使用的網(wǎng)卡芯片有關(guān)。
(3)需要編寫網(wǎng)卡的相關(guān)驅(qū)動,需要在數(shù)據(jù)收發(fā)過程中由Lwip協(xié)議棧進行調(diào)用。
要實現(xiàn)與上位機TCP通訊,還需要編寫相關(guān)的用戶應(yīng)用程序,主要包括初始化及服務(wù)端程序的編寫,其中初始化程序負責初始化網(wǎng)絡(luò)硬件MAC地址、選定通訊方式等;服務(wù)端程序負責完成與上位機通訊,包括指定主機IP及監(jiān)聽端口等任務(wù)。
3.2.3 Modbus RTU到Modbus TCP轉(zhuǎn)換
Modbus已實現(xiàn)應(yīng)用TCP在通訊層進行通訊[4],即Modbus協(xié)議的網(wǎng)絡(luò)版:Modbus TCP,它的基本PDU單元與RTU模式相同,其數(shù)據(jù)幀的格式與RTU稍有不同。
字節(jié)0:事務(wù)處理標識符,通常設(shè)為0;
字節(jié)1:事務(wù)處理標識符,通常設(shè)為0;
字節(jié)2:協(xié)議標識符等于0;
字節(jié)3:協(xié)議標識符等于0;
字節(jié)4:長度字段(上半部分字節(jié))等于0(所有的消息長度小于256);
字節(jié)5:長度字段(下半部分字節(jié))等于后面字節(jié)的數(shù)量;
字節(jié)6:單元標識符;
字節(jié)7:MODBUS功能代碼;
字節(jié)8:寄存器數(shù)據(jù)。
其中Byte 0~Byte 4一般取0x00即可,Byte 5為Byte 6~Byte 8的字節(jié)數(shù),Byte 6單元標識符及RTU模式下的設(shè)備地址,所以Byte 6~Byte 8與RTU模式下的ADU相同,去除了CRC校驗,TCP幀的校驗通過TCP/IP校驗實現(xiàn)。Modbus RTU轉(zhuǎn)為Modbus TCP只需將幀前加上請求響應(yīng)列,去除末尾的CRC校驗字節(jié)。如RTU幀01 03 00 01 00 02 95 F8轉(zhuǎn)換為Modbus TCP數(shù)據(jù)包為00 00 00 00 00 06 01 03 00 01 02即可,然后通過lwip協(xié)議棧打包為tcp傳輸包在網(wǎng)絡(luò)鏈路進行傳輸通訊,響應(yīng)幀采取同樣策略。其中Modbus TCP數(shù)據(jù)包管理是通過結(jié)構(gòu)體pbuf實現(xiàn)的,其結(jié)構(gòu)如下:
struct pbuf {
struct pbuf *next;
void *payload;
u16_t tot_len;
u16_t len;
u8_t
u8_t flags;
u16_t ref;
};
其中payload為指向Modbus TCP數(shù)據(jù)包的指針,len表示數(shù)據(jù)包的長度,通過改寫pbuf指針指向管理數(shù)據(jù)流向,將接收到數(shù)據(jù)包交給處理器處理,由嵌入式網(wǎng)關(guān)處理器實現(xiàn)鏈路協(xié)議的轉(zhuǎn)換。
3.3 上位機軟件
上位機PC是溫控系統(tǒng)人機交換核心:一方面利用上位機組態(tài)軟件對局域網(wǎng)絡(luò)設(shè)備進行現(xiàn)場監(jiān)控,在工廠或企業(yè)的工作人員可以對溫濕度信息進行監(jiān)控,同時自動調(diào)節(jié)風機設(shè)備的運轉(zhuǎn)。在系統(tǒng)沒有連入互聯(lián)網(wǎng)絡(luò)的情況下,在工業(yè)現(xiàn)場進行操作;另一方面PC作為外網(wǎng)訪問的服務(wù)器端,通過組態(tài)軟件的Web發(fā)布功能,使得遠端監(jiān)控PC通過IE客戶端可以與Web服務(wù)端保持高度的數(shù)據(jù)同步,使得遠程用戶可以獲得組態(tài)王運行系統(tǒng)相同的控制畫面,通過網(wǎng)絡(luò)用戶可以與Web服務(wù)器上獲得工廠及企業(yè)現(xiàn)場相同的數(shù)據(jù)顯示、報表顯示、報警顯示、趨勢曲線顯示以及方便快捷的控制功能。
4 試驗與結(jié)果分析
取兩個溫濕度控制節(jié)點進行測試。圖7(a)為未加裝風機設(shè)備,不能自動調(diào)節(jié)節(jié)點溫濕度;圖7(b)為加裝風機,能自動調(diào)節(jié)的節(jié)點溫濕度。在連續(xù)72 h采樣過程中,系統(tǒng)運行穩(wěn)定,并且加裝調(diào)節(jié)設(shè)備后可以獲得較好的調(diào)節(jié)效果,溫濕度曲線在規(guī)定值范圍內(nèi)波動,可以獲得穩(wěn)定的溫濕度環(huán)境,滿足現(xiàn)場對溫濕度環(huán)境控制的要求。
5 結(jié) 語
設(shè)計實現(xiàn)了一種支持遠程監(jiān)控的智能溫濕度控制系統(tǒng),具備溫濕度監(jiān)控、自動調(diào)節(jié)及分布式多節(jié)點控制功能。利用STM32處理器設(shè)計了智能溫濕度控制模塊及嵌入式橋接網(wǎng)關(guān),支持Modbus RTU協(xié)議傳輸及Modbus RTU與Modbus TCP之間的轉(zhuǎn)換功能。在嵌入式網(wǎng)關(guān)上實現(xiàn)了Lwip協(xié)議的移植,使其支持Modbus TCP協(xié)議的傳輸,并通過Modbus TCP與組態(tài)王軟件實現(xiàn)無縫連接。本系統(tǒng)可以解決大型分布式控制系統(tǒng)鏈路轉(zhuǎn)化問題,支持遠程訪問操作,實現(xiàn)了系統(tǒng)的集中化、智能化及網(wǎng)絡(luò)化管理。
參考文獻
[1] RAMIREZ LEYVA F H, CUELLAR J P A, BASILIO R G M, et al. Wireless system for electrical networks testing based on MODBUS protocol [C]// Proceedings of 14th International Conference on Electronics, Communications and Computers. Veracruz, Mexico: ICECC, 2004: 58?62.
[2] 李英奇,吳桂初. Modbus?Modbus TCP/IP的網(wǎng)關(guān)設(shè)計[J].微型機與應(yīng)用,2013,32(10):48?50,53.
[3] Modicon Inc. Modicon modbus protocol reference guide [R]. USA: Modicon Inc., 1996.
[4] GOLDENBERG Niv, WOOL Avishai. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems [J]. International Journal of Critical Infrastructure Protection,2013, 6(2): 63?75.
[5] 吳泓霖,殷瑞祥,劉凱.基于Modbus協(xié)議與MCX314的自動鉆孔系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(18):161?164.
[6]王立峰,李會,程季多.基于TCP/Modbus協(xié)議的面向多連接信號采集器設(shè)計[J].現(xiàn)代電子技術(shù),2010,33(19):175?178.