馬樹,李俊,王其斌
(南京工業大學電氣工程與控制科學學院,南京211816)
新型中央空調中網絡溫控器和物聯網關設計
馬樹,李俊*,王其斌
(南京工業大學電氣工程與控制科學學院,南京211816)
針對傳統中央空調系統通過RS485總線傳輸方式帶來的數量限制、通訊距離、響應速度等問題,設計一種新型中央空調控制系統,系統中的新型溫控器通過Modbus/TCP傳輸數據。并且設計Modbus/TCP網關,將舊有的基于RS485總線和Modbus/RTU傳輸數據的溫控器連接到新系統中。新型溫控器和網關運行于μC/OS-Ⅲ和Lw IP基礎上。此系統充分利用舊有的溫控器和總線資源,解決了設備數量限制、響應延遲大、通訊距離和速度問題。經過測試,新型溫控器通信正常,網關工作性能穩定。
中央空調;網關;Modbus/TCP;μC/OS-Ⅲ;Lw IP
傳統的中央空調系統利用溫控器對環境溫度實時監測,并受系統控制,調整輸出溫度和調整風機速度等。它的組網方式如圖1所示,控制中心通過485總線與溫控器實現連接。
如圖1所示的中央空調系統中,在組網規模小,數量不多的情況下可以很好的工作。但隨著中央空調系統的擴大和溫控節點的增加,基于串行鏈路的組網方式顯現弊端:干擾增大、自適應差、通訊距離小、響應延遲。本文采用基于TCP/IP協議的Modbus協議,即Modbus/TCP協議進行數據通訊,解決設備數量和組網范圍限制和通信穩定性問題。

圖1 基于RS485的中央空調系統組網結構
如圖2所示的基于以太網的中央空調系統組網結構中,新型溫控器(Modbus TCP服務器)通過以太網與控制中心交換數據。控制中心本質是一個或者多個TCP客戶機,他們與溫控器(端口502)建立連接發送數據。另外,為了繼續使用現有溫控器設備和總線資源,需要把舊有溫控器接入新型溫控器中。因為舊有溫控器使用Modbus/RTU協議,無法直接連入以太網,這里使用物聯網關Modbus TCP服務器網關。該網關是所有串行溫控器總代理,負責Modbus TCP客戶機和Modbus串行服務器之間數據幀格式的轉換。

圖2 基于以太網的中央空調系統組網結構
2.1 溫控器硬件設計
溫控器硬件結構如圖3所示。MCU采用Cortex-M3內核。關于以太網接口,STM32F407芯片內部自帶10/100 Mbit/s數據傳輸速率的MAC內核,符合IEEE802.3協議接口標準,支持通過SMI/MⅡ/ RMⅡ接口配置和管理PHY設備。只需外接PHY (物理層)芯片即可實現以太網通信功能。本系統的PHY層選用低功耗高傳輸速率的芯片LAN8720,且采用精簡介質獨立接口RMⅢ減少MCU的以太網外設與外部PHY芯片的引腳數。串口功能用于前期設備開發與調試。

圖3 溫控器硬件結構
2.2 溫控器軟件設計
網絡溫控器軟件結構如圖4所示。溫控器的軟件體系建立在操作系統μC/OS-Ⅲ基礎上,并且由μC/OS-Ⅱ實現任務管理與調度;為了實現對Modbus/TCP數據傳輸,采用Lw IP協議實現TCP/IP通信機制;同時,溫控器上還一直了復合標準Modbus協議棧FreeModbus,實現對ModbusPDU數據統一處理;而且,溫控器自帶一個Web服務器,用于出廠時對溫控器的IP地址等屬性進行配置,在溫控器運行時,該Web服務器可以為用戶提供管理界面,方便用戶隨時查看溫控器的工作狀態和參數。

圖4 溫控器軟件結構
2.3 M odbus TCP服務器設計
Modbus TCP服務器設計需要經過:μC/OS-Ⅲ系統移植—FreeModbus移植—Lw IP移植過程。Modbus TCP服務器(網絡溫控器)設計采用并發模型,這樣當收到多個連接請求時可以及時響應。以太網服務器設計基于Lw IP的Sequential API實現,分為主任務和子任務兩個模塊設計。其中主任務通過監聽到數據連接請求而為其創建子任務與其通信。主任務和子任務關系結構如圖5所示。

圖5 主任務和子任務關系
因為μC/OS-Ⅲ中每個任務的堆棧由程序員自己分配(堆棧空間用于保存任務切換時每個任務切換前狀態)。刪除子任務時,必須回收堆棧空間,以免發生內存溢出。子任務負責處理客戶端傳輸的Modbus/TCP數據幀。數據幀格式如圖6所示。

圖6 M odbus/TCP幀格式
同時,因為涉及訪問共享資源,這里引入了互斥量機制,保證獨占式訪問。
子任務的詳細工作流程如圖7所示。

圖7 子任務工作
子任務工作關鍵代碼如下所示:
sys_sem_wait(&mem_sem)//獲取信號量
usUID=(TcpRcvBf[Lwip_UID]?8U)+TcpSndRcvBf[Lwip_UID]+1//獲取MBAP幀中事物標識
unLgth=(TcpRcvBuf[Lwip_LEN]?8U)+TcpSndRcvBf[Lwip_Len+1]//獲取MBAP幀中長度
ucUID=TcpSndRcvBf[Lwip_UID]//獲取單元標識符
ucFctCode=TcpSndRcvBf[Lwip_FUNC]//獲取功能碼
eException=xFuncHandlers[i].pxHandler(ucMBFrame,&usLength)////調用功能碼函數,處理Modbus PDU
Sendstat=netconn_write(conn,TcpSndRcvBF,usLgth+ Lwip_FUNC,NETCONN_COPY)////向客戶端返回數據,數據拷貝式發送
sys_sem_signal(&mem_sem)//釋放互斥量
nebuf_delete(inbuf)//刪除客戶端數據包
OSTaskDel(OS_PRIO_SELF)//刪除任務自身
舊有的溫控器總線上運行的是Modbus/RTU協議,新型傳輸線運行的是Modbus/TCP協議。網關需要完成Modbus/RTU和Modbus/TCP之間協議的轉換功能。
Modbus/TCP利用IP地址尋址服務器,但為了訪問舊有的Modbus/RTU溫控器,需要在MBAP幀頭中加事物標識單元。此外,TCP/IP協議的可靠連接特性和ICMP等協議協議機制保證了數據包傳遞的正確性,因此Modbus/TCP不需要CRC校驗。
Modbus/RTU和Modbus/TCP幀協議數據差別如圖8所示。

圖8 M odbus RTU幀格式和M odbusTCP幀格式對比
在軟件架構上,物聯網關和溫控器使用完全相同的架構:基于操作系統μC/OS-Ⅲ的支撐多任務管理與調度;基于Lw IP協議棧實現TCP/IP通信。
3.1 物聯網關硬件設計
物聯網關硬件結構圖如圖9所示。

圖9 物聯網關硬件結構圖
以太網模塊由芯片內部自帶的MAC內核,外加LAN8720(PHY層芯片)組成。LAN8720可以通過自協商的方式與目的主機最佳的連接方式(速度和雙工模式),且支持HP Auto-MDIX自動翻轉功能,具有較高性能。以太網模塊可以接收來自多個Modbus/TCP客戶端的請求。其中RS485模塊必須工作于串行方式,在某一時刻RS485只能存在一個Modbus/RTU請求和響應。因此,讓多個Modbus/TCP客戶端互斥和獨占使用RS485是網關設計的核心。
3.2 物聯網關軟件設計
網關服務器實現為并發模式。設計原理與溫控器原理類似,都采用多任務方式完成。服務器主任務監聽新連接,子任務負責處理新連接數據幀。這里,網關服務器需要完成的任務是實現客戶端Modbus/ TCP命令幀和串行鏈路Modbus/RTU響應幀的轉換。
子任務具體流程如圖10所示:接收到客戶端發過來的Modbus/TCP請求幀—濾除幀長非法的數據幀—對合法數據幀幀頭分解—調用embrtusend函數發送構造的Modbus/RTU響應幀。同時,子任務在RS485接口接收Modbus/RTU響應幀,若驗證通過,封裝成為Modbu/TCP格式數據,并發送到上位機系統。

圖10 物聯網關子任務流程
物聯網子任務中針對網關程序中協議代碼如下:
(1)將Modbus/tcp幀轉為Modbus/rtu幀usPID= (TCPSendReceiveBuf[LwIP_TCP_PID]?8U)+TCPSendReceiveBuf[LwIP_TCP_PID+1]
usLength=(TCPSendReceivBuf[Lw IP_LEN]?8U)+ TCPSendReceiveBuf[LwIP_TCP_LEN+1]
usUID=TCPSendReceiveBuf[LwIP_TCP_UID]
usFun=TCPSendReceiveBuf[LwIP_TCP_FUNC]
memcpy(ucRTUBuf,&TCPSendReceiveBuf[LwIP_TCP_ UID],usLength);
(2)發送Modbus/RTU幀err=eMBRTUSend(usUID,&ucRTUBuf[1],usLeth-1)
If(err!=MB_ENOERR)
{procesflag=MBGATE_ERRSENDRTU;
break;}
(3)發送成功后,等待Modbus/rtu響應,若響應成功,讀取數據
err=eMBRTUReceive(&RTURcvAddress,&PDUStartAddr,&PDULength)
if(err!=MB_ENOERR)
{processflag=MBGATE_BADCRC;
break;}
(4)將Modbus/RTU轉換為Modbus/TCP幀
TCPSendReceiveBuf[LwIP_TCP_LEN]=(PDULength+1)?8U
TCPSendReceiveBuf[LwIP_TCP_LEN+1]=(PDULength+ 1)&0xFF
memcpy(&TCPSendReceiveBuf[LwIP_TCP_FUNC],PDUStartAddr,PDULength)
(5)發送Modbus/TCP響應給客戶端,拷貝方式發送
netconn_write(conn,TCPSendReceiveBuf,PDULength+
Lw IP_TCP_FUNC,NETCONN_COPY)
4.1 溫控器測試
溫控器的測試方法是在控制中心主機運行Modbus TCP客戶端測試軟件,該軟件向溫控器(Modbus TCP服務器端)發送指令,根據溫控器返回幀,判斷通信工作正常.測試結果如圖11所示。

圖11 溫控器測試結果
溫控器和測試軟件處于同一網段。軟件讀取起始地址為0的23個寄存器值。可以看出,成功接收到寄存器中數據。服務器響應正常。
4.1 物聯網關從測試
為了測試物聯網關,把網關接入以太網,網關的RS485接口接入到舊有溫控器的串行鏈路上。測試的組網結構如圖12所示,其中控制中心的IP地址為
10.1 3.118.10,物聯網網關的IP地址為10.13.118.130。

圖12 網關測試組網圖
控制中心的主機運行Modbus Poll客戶端軟件來測試網關功能,Modbus Poll能夠模擬Modbus客戶端,實現對Modbus服務器調試。如圖13所示,配置Modbus Poll客戶端,使其連接到網關10.13.118.130的端口502上。同時配置數據讀寫地址和范圍。Modbus Poll客戶端通過物聯網網關查詢Modbus串行鏈路上1號溫控器的保持寄存器值,采用1 000ms自動掃描方式,讀取起始地址0處10個寄存器數據。

圖13 Modbus Poll軟件配置
對1號溫控器寄存器的查詢結果如圖14所示,可以看到Modbus Poll客戶端對溫控器寄存器進行了213此掃描,所有的213次掃描沒有發生通信終端或者查詢失敗的情況,經過長時間測試,網關工作狀態穩定,性能可靠。

圖14 物聯網關測試結果
設計了中央空調系統中的能接入互聯網的新型溫控器和物聯網關。此網關完成Modbus/TCP協議與Modbus/RTU協議轉換,為工控領域的串行接口產品聯入以太網實現了一種解決方案。經過測試,系統通信正常,運行穩定。
[1]關永,王雪立,劉維民,等.基于ARM的嵌入式系統實驗研究[J].電子器件,2005,3:628-632.
[2]張學森.基于WEB的中央空調遠程集中監控系統[D].山東大學,2014.
[3]楊靜,吳乃陵.嵌入式操作系統應用研究[J].電子器件,2005,28(1):204-206,210.
[4]李偉.基于Modbus協議的工控節點設計與實現[J].計算機工程,2010,16:226-228,231.
[5]袁中書,陸陽.輕量級TCP/IP協議棧機制分析與優化[J].計算機工程,2015,2:317-321.
[6]朱晶,齊向東.基于OPC、Modbus以及Modbus Tcp/Ip的iFIX與PLC的通信[J].電子器件,2013,2:260-264.
[7]徐榮珍,張敏聰,李從心.基于ARM和TCP/IP協議的嵌入式串口網絡轉換器設計[J].電子器件,2006,3:909-912,916.
[8]浦漢來,劉昊,凌明.小型嵌入式操作系統中斷管理的實現[J].電子器件,2003,2:218-221.

馬樹(1990-),男,漢族,江蘇省徐州市,南京工業大學,碩士研究生,研究方向為計算機網絡控制和信號處理,moveforward333@163.com;

李俊(1972-),男,漢族,江蘇省南京市,南京工業大學,教授,研究方向是電力系統,j262402@163.com。
Design of Network Thermostat and Connection Gateway in Central Air Conditioner
MA Shu,LI Jun*,WANGQibin
(Nanjing Tech University Electrical Engineering and Control Science College,Nanjing 211816,China)
The traditional central air conditioning system transfers data by RS485 and causes some problems such as increase of interference,bad adaptive control and short communication distance,a new type of central air conditioning control system is designed,the system’s new thermostat transmits data via Modbus/TCP.Modbus/TCP gateway is designed by this way,the old temperature controller based on RS485 bus characteristics and Modbus/RTU transmission will be able to connected to the new conrtol system.Besides,the new thermostat and Modbus/TCP gateway is based onμC/OS-Ⅲand LwIP.This system makes full use of the existing temperature control device and bus resources,and it solves the limit of the number of devices,system response delay,short communication distance and low speed problem.After a long time test,new thermostat and Modbus/TCP gateway serversmeet in communications,the working state of the gateway is stable and reliable.
network transmission;gateway;modbus/TCP;μC/OS-Ⅲ;Lw IP
C:7230;7320R
10.3969/j.issn.1005-9490.2017.01.039
TN915
:A
:1005-9490(2017)01-0207-05
2016-01-08修改日期:2016-03-04