本文提出了一種在單片機系統(tǒng)中實施基于HTTP協(xié)議的數(shù)據(jù)采集的方案,利用嵌入式網(wǎng)絡(luò)模塊實現(xiàn)串口到以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換,使用采集板將數(shù)據(jù)封裝成HTTP包.
該方案靈活方便,實現(xiàn)簡單;采用分布式結(jié)構(gòu),采集效率高,可適用于大量數(shù)據(jù)的采集,而且可以方便擴展為基于Internet的遠程數(shù)據(jù)采集.
1 前言
隨著工業(yè)以太網(wǎng)的發(fā)展,由于傳輸速度、傳輸可靠性及可擴展性等綜合性能方面的優(yōu)越性,越來越多的數(shù)據(jù)采集系統(tǒng)都是基于以太網(wǎng)接口,并且越來越多的儀器儀表設(shè)備也提供了以太網(wǎng)接口.但是很多企業(yè)都有早期投入的設(shè)備儀表,一般使用串口進行數(shù)據(jù)通信,因此需要一種簡單、高效、易于擴充的集成方案,實現(xiàn)對原有設(shè)備儀表的數(shù)據(jù)采集,并且可以方便的集成到現(xiàn)有的以太網(wǎng)工業(yè)控制系統(tǒng)中.本文提出一種數(shù)據(jù)采集方案,除了滿足前面要求外,由于其采用HTTP協(xié)議,可以方便擴展為基于Internet的遠程數(shù)據(jù)采集.HTTP協(xié)議可以利用嵌入式系統(tǒng)(WinCE、Linux等)基于其自帶的TCP/IP協(xié)議棧實現(xiàn)或者直接使用嵌入式Web服務(wù)器[1~4],在計算機系統(tǒng)中也可以利用高級語言直接使用Web客戶端使用HTTP協(xié)議或者利用Winsock網(wǎng)絡(luò)編程,實現(xiàn)基于HTTP的數(shù)據(jù)交互,但都會增加系統(tǒng)的開發(fā)成本,本文提出一種基于嵌入式網(wǎng)絡(luò)模塊在單片機系統(tǒng)中實現(xiàn)簡單HTTP協(xié)議的方法,并基于此方法構(gòu)建數(shù)據(jù)采集方案.
2 系統(tǒng)結(jié)構(gòu)
HTTP協(xié)議是一種基于TCP實現(xiàn)的應(yīng)用層協(xié)議,它是因特網(wǎng)可靠的交換數(shù)據(jù)的重要基礎(chǔ).如果要實現(xiàn)HTTP協(xié)議 ,必須以TCP/IP協(xié)議棧為基礎(chǔ),利用嵌入式網(wǎng)絡(luò)模塊即可方便的實現(xiàn)TCP/IP協(xié)議棧的功能.圖1為一個利用嵌入式網(wǎng)絡(luò)模塊實現(xiàn)的基于HTTP協(xié)議的數(shù)據(jù)采集方案.
圖1 系統(tǒng)結(jié)構(gòu)
圖1中,最關(guān)鍵部分是采集板和網(wǎng)絡(luò)模塊.當今儀器儀表最常用的通訊接口是485串行接口,采集板和儀表設(shè)備一般通過485總線連接,采集板利用單片機開發(fā),實現(xiàn)下位機和設(shè)備儀表的通信,采用主從方式采集所需要的數(shù)據(jù),再通過485總線發(fā)送給網(wǎng)絡(luò)模塊,網(wǎng)絡(luò)模塊收到采集板數(shù)據(jù)發(fā)出的串行數(shù)據(jù),利用內(nèi)嵌的TCP/IP協(xié)議棧實現(xiàn)串行數(shù)據(jù)到以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換,網(wǎng)絡(luò)模塊通過網(wǎng)線、交換機和采集服務(wù)器連接.采集板是實現(xiàn)HTTP應(yīng)用層協(xié)議的地方,只要采集板發(fā)出的數(shù)據(jù)符合HTTP協(xié)議,經(jīng)由網(wǎng)絡(luò)模塊轉(zhuǎn)化后成為合法的HTTP請求,則Web服務(wù)器可使用任何的服務(wù)器端動態(tài)網(wǎng)頁技術(shù)(CGI、ASP、JSP、PHP、ASP.Net等)實現(xiàn)數(shù)據(jù)的處理和保存.
3 系統(tǒng)實現(xiàn)
3.1 采集板
采集板和儀表進行主從通訊采集數(shù)據(jù)以外,最主要的任務(wù)就是把采集的數(shù)據(jù)封裝為HTTP協(xié)議的數(shù)據(jù)包,也就是要在單片機中實現(xiàn)簡化的HTTP協(xié)議,能夠完成基本的數(shù)據(jù)交互功能即可.在國際標準中,有兩個HTTP協(xié)議的標準文檔:RFC1945和RFC2616[5].這兩個文檔分別描述了HTTP/1.0和HTTP/1.1的實現(xiàn)標準.這兩個版本的HTTP協(xié)議最大區(qū)別在于前者不支持保持連接,規(guī)定每次的HTTP請求和響應(yīng)后都要關(guān)閉TCP連接,而后者支持持久連接,這意味著可以打開一次TCP連接進行多次請求/響應(yīng),大大提高了性能.為了提高性能,本文中將實現(xiàn)基本的HTTP1.1協(xié)議.經(jīng)過分析研究,找出了一種比較簡單且有效的實現(xiàn).下面通過 一個具體例子說明實現(xiàn)的HTTP協(xié)議包格式.
GET /com2http/test.aspx。龋裕裕校保保茫遥蹋
Host:。保玻罚埃埃保茫遥蹋
Content-Length: 86CRLF
Connection:。耍澹澹穑粒欤椋觯澹茫遥蹋
CRLF
000000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C8420000C84251AD
通過工具截獲的數(shù)據(jù)以16進制顯示如下:
00000000:47。矗怠。担础。玻啊。玻啤。叮场。叮啤。叮摹。常病。叮浮。罚础。罚础。罚啊。玻啤。罚础。叮怠。牵牛浴。悖铮恚玻瑁簦簦穑簦
00000010:73。罚础。玻拧。叮薄。罚场。罚啊。罚浮。玻啊。矗浮。担础。担础。担啊。玻啤。常薄。玻拧。常薄。螅簦幔螅穑。龋裕裕校保
00000020:0D 0A。矗浮。叮啤。罚场。罚础。常痢。玻啊。常薄。常病。常贰。玻拧。常啊。玻拧。常啊。玻拧。龋铮螅簦骸。保玻罚埃埃
00000030:31。埃摹。埃痢。矗场。叮啤。叮拧。罚础。叮怠。叮拧。罚础。玻摹。矗谩。叮怠。叮拧。叮贰。罚础。保茫铮睿簦澹睿簦蹋澹睿纾
00000040:68。常痢。玻啊。常浮。常丁。埃摹。埃痢。矗场。叮啤。叮拧。叮拧。叮怠。叮场。罚础。叮埂。叮啤。瑁骸。福叮茫铮睿睿澹悖簦椋
00000050:6E。常痢。玻啊。矗隆。叮怠。叮怠。罚啊。玻摹。矗薄。叮谩。叮埂。罚丁。叮怠。埃摹。埃痢。埃摹。睿骸。耍澹澹穑粒欤椋觯澹
00000060:0A。常啊。常啊。常啊。常啊。常啊。常啊。矗场。常浮。常础。常病。常啊。常啊。常啊。常啊。矗场。埃埃埃埃埃埃茫福矗玻埃埃埃埃
00000070:38。常础。常病。常啊。常啊。常啊。常啊。矗场。常浮。常础。常病。常啊。常啊。常啊。常啊。矗场。福矗玻埃埃埃埃茫福矗玻埃埃埃埃
00000080:38。常础。常病。常啊。常啊。常啊。常啊。矗场。常浮。常础。常病。常啊。常啊。常啊。常啊。矗场。福矗玻埃埃埃埃茫福矗玻埃埃埃埃
00000090:38。常础。常病。常啊。常啊。常啊。常啊。矗场。常浮。常础。常病。常啊。常啊。常啊。常啊。矗场。福矗玻埃埃埃埃茫福矗玻埃埃埃埃
000000A0:38 34。常病。常啊。常啊。常啊。常啊。矗场。常浮。常础。常病。常啊。常啊。常啊。常啊。矗常福矗玻埃埃埃埃茫福矗玻埃埃埃埃
000000B0:38 34。常病。常怠。常薄。矗薄。矗础。福矗玻担保粒
來源:維庫開發(fā)網(wǎng)