文獻標識碼: A
文章編號: 0258-7998(2011)06-099-04
近年來,隨著控制技術、計算機技術和寬帶網絡技術的快速發展,測控技術和通信領域的結合應用已經成為大勢所趨。傳統的控制系統都是專用網絡,控制設備及軟件也是專用的,開放程度不夠,給系統維護及升級帶來不便[1]。在因特網遍布全球,各種先進網絡技術日新月異的今天,使用網絡技術實現遠程控制自然成為首選。
本文以全自動電飯煲為例,設計一種基于TCP/IP協議的全自動電飯煲遠程控制系統,該系統分為三個部分:一是利用網卡芯片實現網絡通信接口與因特網服務器之間的通信;二是紅外通信電路的設計,實現網卡芯片與電飯煲微控制器的通信;三是電飯煲的改造,利用微控制器實現電飯煲機電一體化。該系統的實現,為家用電器全面接入因特網進行遠程控制奠定了基礎。
1設計方案
本文設計的全自動電飯煲遠程控制系統參照物聯網模型將系統分為三層:感知層、網絡層和應用層[2],每層執行特定的任務。該系統的整體結構如圖1所示。應用層包含網站應用程序和網絡應用程序,其功能是用戶利用計算機或手機通過因特網遠程控制電飯煲或擴展的其他電器[3]。其中,網站應用程序主要實現人機接口,是用戶進行賬戶管理和電飯煲控制的綜合系統。網絡應用程序使用線程池處理來自網絡層通信芯片的TCP/IP數據包,同時將用戶請求通過TCP協議發送給網絡層的網卡芯片ENC28J60。這種分層結構將大量用戶的控制請求轉由服務器CPU進行處理,從而大大降低了網絡層MCU的負荷。網絡層處理來自應用層的TCP/IP數據包和來自感知層的紅外數據包。該層以單片機STC89C58RD+為核心處理芯片,構建TCP/IP協議棧,并用網卡芯片ENC28J60收發來自應用層的TCP/IP數據包,最后將此數據進行調制解調。感知層的功能是對電飯煲進行狀態監控,并將其實時監控數據傳送到網絡層。具體地說,該層是以AT89S52單片機作為微控制器,用紅外一體化接收頭接收網絡層的紅外載波信號,并對該信號解調以控制電飯煲,同時將電飯煲的狀態信息調制后通過紅外一體化的發送頭傳送給網絡層;感知層還可以連接多個擴展電器,從而實現多用戶控制多電器的方案。
2 硬件設計
全自動電飯煲遠程控制系統的核心是網絡層接口電路和電飯煲機械系統的設計。網卡芯片與現場控制單片機AT89S52的數據通信利用紅外傳輸,采用NEC編碼方式[4],接收端通過一體化紅外接收頭HS0038,對信號進行放大、檢波、整形和解調等,得到TTL電平的編碼信號。HS0038將此編碼信號傳送至AT89S52的P3.2(INT0)引腳,經AT89S52解碼后依據指令執行相關的控制程序。全自動電飯煲系統包括控制系統和機械系統[5]。以AT89S52單片機為核心構建全自動電飯煲的控制系統。用戶通過網站用戶程序輸入控制命令,通過網絡傳輸到現場,現場控制單片機AT89S52接收到這些指令后,判斷指令的具體需求,再調用相關程序以控制機械裝置及電飯煲執行相應動作。
2.1 接口電路設計
網絡層選用增強型的STC89C58RD+單片機作為微控芯片。STC89C58RD+內部僅有1.28 KB的存儲空間,不能滿足處理TCP/IP數據包所需的10 KB左右的存儲空間。因此使用數據存儲器62256將其外部存儲器外擴至32 KB,這樣也有利于提高數據的接收與發送速度。
在網絡層中,紅外信號的接收、發送與感知層的設計類似,其不同點在于采用STC89C58RD+的INT1引腳的中斷方式處理來自外部的紅外信號,見圖2。網卡芯片ENC28J60是由Microchip推出的以太網控制器,使用串行外設接口(SPI)的引腳(SO、SI、SCK、CS)和兩個中斷引腳(INT和WOL)與主控制器進行通信,最高速度可達到10 Mb/s。該芯片內部有一個DMA模塊,可以實現數據的快速吞吐和硬件支持IP校驗和的計算。該芯片的兩個引腳LEDA、LEAB用于連接LED,用于顯示連接、發送、接收、沖突和全/半雙工等狀態。STC89C58RD+內部不帶SPI接口,使用4個I/O引腳模擬SPI輸入輸出時序與ENC28J60進行通信。ENC28J60的SPI有7條指令集用以實現讀控制寄存器、寫控制寄存器、讀緩沖器、寫緩沖器、位域置1、位域清零和軟件復位。ENC28J60中有控制寄存器、以太網緩沖器和PHY寄存器。SPI接口是STC89C58RD+與ENC28J60的通信通道,由總線接口對其接收的數據和命令進行解析,可以直接對控制寄存器進行讀寫,并對ENC28J60進行配置、控制和狀態獲取。以太網緩沖器包含供以太網控制器使用的發送和接收存儲器,該緩沖器大小為 8 KB,分成獨立的接收和發送緩沖空間。PHY寄存器用于對 PHY模塊進行配置、控制和狀態獲取。ENC28J60需要通過MCU的中斷處理來控制事件中斷INT和LAN,觸發中斷時會占用STC89C58RD+的外部中斷口INT0。ENC28J60的差分輸入、輸出引腳(TPIN+/-和TPOUT+/-)在以太網變壓器作用下經RJ45接口與因特網通信,以實現網絡層以太網控制器與應用層服務器物理線路的聯通。
2.2 電飯煲機械系統設計
為了實現電飯煲機電一體化,在傳統電飯煲的基礎上,增加設計了電飯煲機械系統,包括儲米裝置、取米裝置、淘米裝置、放米裝置以及加水裝置。機械系統總體設計如圖3所示。儲米裝置為框架頂端的儲米漏斗,直徑30 cm,高10 cm,可一次性存放7.5 kg大米。取米裝置由儲米漏斗底端的電磁鐵實現,電磁鐵選用直流電磁鐵HCNE1-1039,由于卡槽采用45°傾斜設計,大大減小了電磁鐵啟閉時米粒的摩擦阻力。淘米裝置由攪拌電機和淘米漏斗構成。其中攪拌電機選用TN-40.180/HC685G100618。放米裝置由電磁鐵和旋轉臂構成,電磁鐵同樣選用HCNE1-1039。旋轉臂由兩個可逆電機控制,可以升降和旋轉,采用行程開關限位,實現電飯煲鍋蓋的開閉。加水裝置由電磁閥和進水管構成,電磁閥選用2W160-15。
3 軟件設計
系統軟件設計包括應用層的網站程序和網絡程序、網絡層的TCP/IP數據包收發程序和紅外通信程序,以及感知層的紅外收發程序和全自動電飯煲控制程序。在應用層,系統采用MVC模式[6]進行軟件設計。控制器的Servlet程序分為兩部分:一部分與網站程序一起處理來自瀏覽器的業務邏輯,包括用戶注冊、登錄和控制電器等操作;另外一部分構建一個獨立的線程池,以便監聽到指定端口,等待來自網絡層中各個設備的TCP連接,完成與網絡層的會話。在感知層,考慮到紅外通信的不穩定性, 服務器和微控制器之間的通信數據采用自定義的特殊格式,以避免因數據丟失或冗余而造成的系統錯誤[7]。因此在對電飯煲進行控制時,采用自定義協議對電飯煲信息進行封包解包。此協議的設計包括兩方面:電飯煲數據包和通信會話流程。全自動電飯煲控制程序按照取米、淘米、放米、加水、煮飯的流程進行,實現電飯煲工作全自動化。
本文重點闡述網絡層的軟件設計。如圖4所示,微控制器首先進行系統初始化,包括ARP、TCP、內存、定時器和網卡芯片初始化。初始化完成后,設置網卡芯片ENC28J60的IP地址、子網掩碼、默認網關和本地監聽的端口。接著開啟中斷,以便主動連接服務器,其中外部中斷0處理來自ENC28J60的請求,以便收發來自因特網的數據包;外部中斷1則處理來自HS0038的請求以便接收來自感知層的紅外信號,若中斷沒有發生則進入節電模式。
微控制器與服務器之間的通信需要在單片機內部實現TCP/IP協議,當8位MCU接入以太網時,由于系統資源的有限性很難實現完整的TCP/IP協議。網絡層微控制器的功能主要包括傳輸現場數據和接收遠程控制命令,數據量較少且格式簡單,故對TCP/IP協議進行裁減。精簡協議棧時只保留鏈路層的地址解析協議、網絡層的IP協議、差錯報文控制協議和傳輸層的TCP協議,且對需要實現的協議只實現必需的算法部分。TCP/IP協議采用了4層結構:應用層、傳輸層、網絡層和鏈路層。圖5描述了輸入輸出數據包流程和精簡的TCP/IP協議[8]。
4 系統測試
全自動電飯煲遠程控制系統硬件和軟件設計完成后,需要對系統進行測試,以驗證本設計方案的有效性 [9]。網絡層ENC28J60芯片的RJ45接口通過網線與路由器連接。網卡設置IP為192.168.1.101,子網掩碼為255.255.255.0,網關為192.168.1.1,本地端口1001。計算機使用網線與路由器連接,設置為自動獲取IP,保證網絡層設備IP與計算機IP處于同一網段。路由器WAN端口連接類型設置為動態IP,LAN端口IP設置為192.168.1.1。目的服務器設置B類IP為202.115.176.195,操作系統為Windows Server 2003服務器。微控制器STC89C58RD+在使用12 MHz晶振時,用Sniffer抓包軟件測得其與服務器最高通信速度可達25 KB/s。使用ping命令,向192.168.1.101發送500個包,無丟包現象。這500個數據包中,返回速度最快為41 ms,最慢為93 ms,平均速度為53 ms,完全能滿足電飯煲遠程控制的實時性要求。
感知層的被控對象為經過改造的全自動電飯煲。通過網站選擇控制電器為全自動電飯煲,并設置米量和水量,發送啟動指令。感知層的單片機AT89S52收到控制指令后,完成取米、淘米、放米、加水及煮飯的全部流程,并把控制流程中每一個運行狀態反饋給應用層的計算機。本文設計的電飯煲遠程控制系統對米量和水量的計量是通過單片機對電磁鐵和電磁閥定時控制實現的,因此,米量和水量的計量是否準確,是控制系統測試的重點。測試時設置米量400~1 000 g,間隔100 g,水量設定為米量的2倍,即米量為400 g時,水量為800 ml,依次類推。米量和水量各測試3次,測試值和設定值如表1所示。從表1可以看出,米量、水量的設定值與測試值比較接近,說明利用定時控制進行計量是準確的。通過對電飯煲遠程控制系統的多次實驗,系統均能按要求完成所有動作,而且米量、水量的計量也是準確的,說明該系統遠程通信良好,電飯煲工作穩定,計量準確。
從實驗結果來看,本文設計的全自動電飯煲遠程控制系統的方案是可行的。在該方案中,通過強化MCU的控制功能來弱化構建Web服務器的應用,將復雜業務邏輯轉移到因特網的服務器上,這樣就發揮了因特網服務器多線程處理能力,支持多用戶對多個家電的實時控制。紅外通信使系統在室內控制方便且易于擴展,從而使全部家用電器接入因特網絡成為可能。在傳統電飯煲的基礎上,增加設計了機械系統,實現了電飯煲機電一體化。米量和水量的計量采用單片機定時控制替代了復雜的流量控制裝置,使得操作更加簡單,提高了系統的穩定性,同時也使得系統成本更低。
通過本系統,用戶使用計算機或手機就可以遠程控制全自動電飯煲,而且通過網站程序還能實時掌握電飯煲的運行狀態。本文設計的遠程控制系統還具有很強的擴展性。網絡層單片機通過紅外通信的方式可以擴展控制多個其他家用電器,如冰箱、洗衣機、空調、熱水器等。當然每一個電器必須配置一個能收發紅外信號和控制電器的微控制器。隨著物聯網技術的發展及手機的普及,家用電器接入因特網成為一種必然趨勢。本文提出的多用戶遠程控制多個家電的方案,成本低,運行穩定,擴展性強,必將在智能家居中得到大量的應用。同樣,該系統也可廣泛應用于工業、農業的遠程控制,如機器人、智能溫室等。由于因特網技術的介入,遠程控制技術將得到進一步發展,這勢必對人類生活及工業、農業控制產生巨大影響。隨著網絡技術發展和物聯網標準的制定,遠程控制系統必將具有廣闊的應用前景。
參考文獻
[1] 韋文斌,潘耀東,古田勝久.基于因特網技術的遠程機器人控制器設計[J]. 控制工程, 2006,13(2):168-171.
[2] 陳銳. 物聯網——后IP時代國家創新發展的重大戰略機遇[J].中國科學院院刊, 2010,25(1): 41-49.
[3] 黃文浪. 基于因特網的遠程控制系統設計[J]. 科技廣場,2010(5):53-55.
[4] 高恭嫻. 低成本學習型紅外遙控器的設計[J]. 低壓電器, 2009(22):24-26.
[5] 黃美春,汪熊海. 基于網絡的家電智能控制系統的設計與實現[J]. 電氣自動化,2008,30(3):55-56.
[6] 劉中兵, 陳艷燕, 程琳梅. Web2.0動態網站開發—JSP技術與應用[M]. 北京:清華大學出版社,2009.
[7] STEVENS W. TCP/IP詳解卷1:協議[M].北京:機械工業出版社,2000.
[8] 王芳,周優霞. 嵌入式TCP/IP協議棧在單片機上的實現[J]. 現代電子技術,2010(10):198-201.
[9] 葉愛華,趙明鏡,方芳. 基于Lon Works技術的遠程工業控制[J]. 控制工程,2006(13):145-148.