廖佳榮
(福建龍凈環(huán)保股份有限公司,福建 龍巖 364000)
新一代的工業(yè)革命正在興起,物聯(lián)網(wǎng)作為其中主要的組成部分,越來(lái)越廣泛地應(yīng)用在各個(gè)領(lǐng)域。在人們的生活中,小到手表、鑰匙,大到汽車、別墅,只要嵌入一個(gè)小型芯片就可以實(shí)現(xiàn)智能化。隨著物聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的物體均已實(shí)現(xiàn)了智能化,讓人們享受到更加安全輕松的生活。
嵌入式系統(tǒng)是一種完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專用計(jì)算機(jī)系統(tǒng)。與個(gè)人計(jì)算機(jī)這樣的通用計(jì)算機(jī)系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預(yù)先定義的任務(wù)。嵌入式系統(tǒng)只針對(duì)一項(xiàng)特殊的任務(wù),其功能單一、兼容性要求不高、可以進(jìn)行優(yōu)化且成本低廉[1]。
嵌入式Internet是近幾年發(fā)展起來(lái)的新技術(shù),該技術(shù)可以使嵌入式系統(tǒng)連接Internet網(wǎng)絡(luò)進(jìn)行信息交互,通常被稱為非PC Internet接入。TCP/IP協(xié)議是Internet最基本的協(xié)議,采用TCP/IP協(xié)議有以下幾個(gè)優(yōu)點(diǎn):一是可以利用現(xiàn)有的Internet網(wǎng)絡(luò)設(shè)施進(jìn)行多點(diǎn)通信;二是TCP/IP已經(jīng)被廣泛應(yīng)用在各種設(shè)備上,嵌入式系統(tǒng)采用此協(xié)議可以直接跟其他設(shè)備進(jìn)行通信;三是現(xiàn)在的手機(jī)等智能終端設(shè)備都含有最基本的上網(wǎng)瀏覽功能,采用手機(jī)自帶的Internet瀏覽器即可跟嵌入式系統(tǒng)進(jìn)行通信,無(wú)需特別安裝App。
本方案在設(shè)備中嵌入TCP/IP協(xié)議棧組成Web服務(wù)器,使用HTTP協(xié)議來(lái)與客戶端進(jìn)行通信,用戶可以在客戶端利用Internet瀏覽器直接訪問(wèn)嵌入式Web服務(wù)器。由于嵌入式設(shè)備已經(jīng)接入Internet,因此用戶只要可以連接Internet便可查看設(shè)備的運(yùn)行情況,并做出相應(yīng)的設(shè)置修改。
基于網(wǎng)絡(luò)監(jiān)控系統(tǒng)的構(gòu)成方式可以分為兩大類:C/S結(jié)構(gòu)模式和B/S結(jié)構(gòu)模式[2]。C/S結(jié)構(gòu),即Client/Server(客戶端/服務(wù)器)結(jié)構(gòu);B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)。在C/S結(jié)構(gòu)下,客戶端需要采用專門的App,比較典型的有現(xiàn)在國(guó)內(nèi)用戶使用廣泛的微信、QQ等,還有一些購(gòu)物的網(wǎng)站(如淘寶、京東等)。采用這種結(jié)構(gòu)不僅需要開(kāi)發(fā)服務(wù)器端程序,而且還需要進(jìn)行客戶端的程序開(kāi)發(fā)[3]。在B/S結(jié)構(gòu)下,服務(wù)器會(huì)將數(shù)據(jù)發(fā)布到Web服務(wù)器上,用戶只需要利用瀏覽器訪問(wèn)該服務(wù)器即可與設(shè)備進(jìn)行交互。
C/S結(jié)構(gòu)的開(kāi)發(fā)難點(diǎn)主要在于客戶端的開(kāi)發(fā),移動(dòng)終端的操作系統(tǒng)五花八門,針對(duì)不同的系統(tǒng)需要開(kāi)發(fā)不同的客戶端App。例如,蘋果的手機(jī)需要專門開(kāi)發(fā)一款A(yù)pp,安卓的又要另一種。此外,還有版本的要求,如安卓4.0、5.0等,不同版本的兼容性都要考慮,開(kāi)發(fā)的成本很高[4-6]。
B/S結(jié)構(gòu)無(wú)需開(kāi)發(fā)客戶端程序,只要有Internet瀏覽器即可作為客戶端,任何安裝有瀏覽器的移動(dòng)終端均可以使用瀏覽器直接訪問(wèn)服務(wù)器,只需要進(jìn)行服務(wù)器端的程序開(kāi)發(fā)即可,開(kāi)發(fā)難度較低。B/S結(jié)構(gòu)模式開(kāi)發(fā)重點(diǎn)是要使服務(wù)器端包含HTTP協(xié)議模塊,本方案便是基于該結(jié)構(gòu)模式進(jìn)行開(kāi)發(fā)。
本系統(tǒng)嵌入TCP/IP協(xié)議棧,程序增加HTTP模塊來(lái)支持HTTP協(xié)議,共同組成一個(gè)嵌入式Web服務(wù)器。用戶通過(guò)瀏覽器發(fā)送請(qǐng)求信息,TCP/IP協(xié)議棧根據(jù)請(qǐng)求信息進(jìn)行解析,解析的數(shù)據(jù)傳輸?shù)紿TTP模塊,HTTP模塊中的程序?qū)?shù)據(jù)進(jìn)行相應(yīng)的處理并將相應(yīng)的網(wǎng)頁(yè)文件傳遞回TCP/IP協(xié)議棧,再發(fā)送到用戶的瀏覽器上[7]。
服務(wù)器提供兩種連接方式供移動(dòng)終端進(jìn)行訪問(wèn):方式一是系統(tǒng)內(nèi)建WiFi熱點(diǎn),移動(dòng)終端連接WiFi熱點(diǎn),使用網(wǎng)頁(yè)瀏覽器直接訪問(wèn)Web服務(wù)器;方式二是服務(wù)器通過(guò)撥號(hào)上網(wǎng)連接上Internet,移動(dòng)終端必須連接Internet網(wǎng)絡(luò),使用網(wǎng)頁(yè)瀏覽器訪問(wèn)Web服務(wù)器。
系統(tǒng)通過(guò)通信電纜連接到高頻電源,定期發(fā)送查詢指令獲取高頻電源的運(yùn)行參數(shù),并將當(dāng)前高頻電源的運(yùn)行參數(shù)等信息嵌入到Web頁(yè)面發(fā)布到網(wǎng)上,這樣高頻電源的各項(xiàng)運(yùn)行參數(shù)就呈現(xiàn)在瀏覽器上[8-11]。用戶通過(guò)網(wǎng)頁(yè)上的參數(shù)輸入框修改設(shè)置參數(shù),系統(tǒng)收到參數(shù)修改后發(fā)送修改指令到高頻電源,高頻電源返回新的運(yùn)行參數(shù),在網(wǎng)頁(yè)上可以及時(shí)查看操作結(jié)果。
嵌入式Web服務(wù)器需要嵌入TCP/IP協(xié)議棧,對(duì)計(jì)算機(jī)的存儲(chǔ)器、運(yùn)算速度要求比較高,如果采用8位或16位的MCU,由于TCP/IP等Internet協(xié)議需要很多系統(tǒng)資源,因此系統(tǒng)運(yùn)行緩慢或完全無(wú)法運(yùn)行。基于此,本系統(tǒng)采用32位MCU。系統(tǒng)的硬件框圖如圖1所示。

圖1 系統(tǒng)的硬件框圖
(1)控制芯片MCU。STM32控制芯片是ST公司推出的基于Cortex-M3內(nèi)核的32位MCU。本系統(tǒng)采用STM32F103RC增強(qiáng)型MCU,它可以提供48kB的SRAM、256kB的片內(nèi)FLASH以及豐富的外設(shè)接口,性價(jià)比極高。
(2)串口通信。高頻電源的通信連接采用RS485串口。STM32系列處理器均集成有USART串行通信接口,要與RS485串口進(jìn)行通信必須進(jìn)行電平轉(zhuǎn)換,本系統(tǒng)電平轉(zhuǎn)換芯片選用MAX3485。MAX3485采用半雙工通信方式,具有將TTL轉(zhuǎn)換為RS485電平的功能。同時(shí)其與MCU的連接也非常簡(jiǎn)單,只要分別連接MCU的RXD、TXD,再增加EN信號(hào)控制MAX3485的接收和發(fā)送即可。
(3)以太網(wǎng)通信。ENC28J60是一種帶有SPI接口的網(wǎng)絡(luò)適配器模塊,單片機(jī)只要具有SPI控制器便可以通過(guò)該網(wǎng)絡(luò)適配器模塊擴(kuò)展出以太網(wǎng)接口。ENC28J60內(nèi)置MAC+PHY芯片來(lái)實(shí)現(xiàn)簡(jiǎn)單的以太網(wǎng)物理層連接,內(nèi)部集成有一塊10M BASE-T芯片,SPI接口的通信速率每秒最高可達(dá)10 MB,通過(guò)SPI接口連接MCU,嵌入式系統(tǒng)無(wú)需安裝操作系統(tǒng)即可單芯片接入以太網(wǎng)。
(4)無(wú)線路由。無(wú)線路由器可以將RJ45接口傳輸?shù)男盘?hào)轉(zhuǎn)換成WiFi信號(hào)通過(guò)天線轉(zhuǎn)發(fā)給附近的移動(dòng)終端,移動(dòng)終端通過(guò)連接無(wú)線路由器的熱點(diǎn),在瀏覽器輸入網(wǎng)址即可與高頻電源進(jìn)行信息交互。無(wú)線路由器的覆蓋半徑一般為50 m,超出范圍的移動(dòng)終端可以通過(guò)方式二進(jìn)行訪問(wèn)。本系統(tǒng)采用無(wú)線路由嵌入無(wú)線3G模塊,使用資費(fèi)卡通過(guò)運(yùn)營(yíng)商3G網(wǎng)絡(luò)進(jìn)行撥號(hào)聯(lián)網(wǎng),移動(dòng)終端可以通過(guò)GPRS撥號(hào)或連接已經(jīng)接入了Internet的WiFi熱點(diǎn)等方式連接Internet,在瀏覽器中輸入網(wǎng)址便可實(shí)現(xiàn)與高頻電源的信息交互。
采用微控制器開(kāi)發(fā)工具M(jìn)DK對(duì)基于Cortex-M3內(nèi)核的微控制器進(jìn)行程序開(kāi)發(fā)。
系統(tǒng)送電,程序開(kāi)始啟動(dòng)時(shí)首先初始化硬件,包括STM32、ENC28J60以及串口等;其次初始化Web服務(wù)器,載入HTTP模塊;最后初始化完成后,開(kāi)始進(jìn)入主程序運(yùn)行階段。主程序運(yùn)行主要包括以下4個(gè)階段:
(1)發(fā)送讀取命令至高頻電源;
(2)將讀取到的高頻電源運(yùn)行參數(shù)等更新網(wǎng)頁(yè);
(3)判斷是否接收到客戶端瀏覽器的讀取請(qǐng)求,接收到請(qǐng)求則HTTP模塊處理請(qǐng)求后返回Web網(wǎng)頁(yè),未接收到請(qǐng)求則直接進(jìn)入下一階段;
(4)判斷是否接收到客戶端瀏覽器的修改請(qǐng)求,未接收到修改請(qǐng)求則直接返回第一階段,收到修改請(qǐng)求則HTTP模塊處理請(qǐng)求后將新數(shù)據(jù)發(fā)送到高頻電源,然后返回第一階段。
瀏覽器與服務(wù)器連接后的信息交互過(guò)程如下:
(1)瀏覽器向服務(wù)器發(fā)送請(qǐng)求消息;
(2)服務(wù)器接到瀏覽器的請(qǐng)求后,HTTP模塊進(jìn)行CGI處理,返回相應(yīng)的網(wǎng)頁(yè)程序;
(3)瀏覽器根據(jù)返回的網(wǎng)頁(yè)程序進(jìn)行網(wǎng)頁(yè)解析;
(4)以上過(guò)程結(jié)束后,瀏覽器與服務(wù)器之間連接會(huì)斷開(kāi),服務(wù)器進(jìn)入等待狀態(tài),等待下一個(gè)瀏覽器連接請(qǐng)求。
CGI是一種通用的網(wǎng)關(guān)接口程序,運(yùn)行在Web服務(wù)器端,可以對(duì)瀏覽器發(fā)來(lái)的請(qǐng)求信息進(jìn)行處理,實(shí)現(xiàn)Web服務(wù)器與客戶端之間的信息交互。
CGI程序的處理過(guò)程如下:
(1)用戶的請(qǐng)求信息通過(guò)瀏覽器發(fā)送到Web服務(wù)器;
(2)CGI程序根據(jù)請(qǐng)求信息作出響應(yīng),將結(jié)果傳送到Web服務(wù)器;
(3)Web服務(wù)器將處理結(jié)果反饋到用戶的瀏覽器頁(yè)面。
網(wǎng)頁(yè)文檔使用HTML語(yǔ)言直接在文本文件中添加標(biāo)記符號(hào)即可將文字、圖形、表格以及鏈接等資源組成一個(gè)完整的網(wǎng)頁(yè)文件,方便Internet瀏覽器解析。文本文件所占空間小,可以直接存儲(chǔ)在嵌入式Web服務(wù)器的Flash中,根據(jù)用戶的瀏覽請(qǐng)求,經(jīng)過(guò)CGI程序的處理,返回相應(yīng)頁(yè)面至用戶的瀏覽器上。
本文介紹了嵌入式Web服務(wù)器在高頻電源上的應(yīng)用,設(shè)計(jì)了一個(gè)B/S結(jié)構(gòu)的系統(tǒng),采用TCP/IP協(xié)議棧,重點(diǎn)使用了HTTP協(xié)議。首先,系統(tǒng)硬件組成簡(jiǎn)單,可以方便地嵌入高頻電源或其他設(shè)備中;其次,系統(tǒng)相當(dāng)于一個(gè)網(wǎng)站,用戶與系統(tǒng)的交互過(guò)程其實(shí)是訪問(wèn)一個(gè)網(wǎng)站,無(wú)需特別的客戶端軟件;最后,系統(tǒng)可直接接入Internet,方便遠(yuǎn)程操控。