《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > ARM設(shè)計的高速數(shù)據(jù)采集遠程監(jiān)控系統(tǒng)技術(shù)
ARM設(shè)計的高速數(shù)據(jù)采集遠程監(jiān)控系統(tǒng)技術(shù)
摘要: 簡要介紹了TCP/IP協(xié)議,,給出了基于ARM嵌入式高速數(shù)據(jù)采集裝置的遠程監(jiān)控系統(tǒng)的實現(xiàn)方案,。系統(tǒng)以下位機作為客戶端,,在A~f91RM9200和嵌入式Linux搭建的軟硬件平臺上運行,;將上位機作為服務(wù)器端,,用VB6.0開發(fā)監(jiān)控平臺軟件,;兩者通過TCP/IP實現(xiàn)了采集數(shù)據(jù)和控制命令的傳輸以及服務(wù)器監(jiān)控模式。
Abstract:
Key words :

摘要:簡要介紹了TCP/IP協(xié)議,,給出了基于ARM嵌入式高速數(shù)據(jù)采集裝置的遠程監(jiān)控系統(tǒng)的實現(xiàn)方案,。系統(tǒng)以下位機作為客戶端,在A~f91RM9200和嵌入式Linux搭建的軟硬件平臺上運行,;將上位機作為服務(wù)器端,用VB6.0開發(fā)監(jiān)控平臺軟件,;兩者通過TCP/IP實現(xiàn)了采集數(shù)據(jù)和控制命令的傳輸以及服務(wù)器監(jiān)控模式,。

    隨著信息化的不斷發(fā)展,在工業(yè)自動化,、電力設(shè)備,、通信管理、智能終端,、智能小區(qū)等領(lǐng)域,,對數(shù)據(jù)采集的實時性、可靠性的要求也不斷地提高,。以往傳統(tǒng)的單片機加采集卡的數(shù)據(jù)采集裝置已經(jīng)不能滿足人們使用的要求,。隨著采集卡的采集頻率不斷地提升,其所屬平臺的工作頻率也應(yīng)跟上時代的步伐,。同時,,在某些情況下,,裝置的操控人員不可能到工作現(xiàn)場去執(zhí)行,,所以有必要對采集裝置進行遠程監(jiān)察和控制。在各種設(shè)備的通信方式中,,由于以太網(wǎng)具有速度快,、通用性好、擴展性強等優(yōu)點,,已13漸成為設(shè)備之間進行通信的主要方式,。本文提出了基于ARM的高速數(shù)據(jù)采集裝置遠程監(jiān)控系統(tǒng),在實現(xiàn)對數(shù)據(jù)的高速采集的同時,,能保證數(shù)據(jù)的可靠性和實時性,,并對各幀數(shù)據(jù)嵌入時間標(biāo)志為后續(xù)數(shù)據(jù)處理做好準(zhǔn)備,最后能將數(shù)據(jù)及時準(zhǔn)確地存儲到移動存儲設(shè)備和服務(wù)器上,。該裝置包括現(xiàn)場監(jiān)控模式和服務(wù)器監(jiān)控模式,。

1 系統(tǒng)簡介

    本裝置由硬件和軟件兩部分組成,,如圖1所示。系統(tǒng)硬件由高速數(shù)據(jù)采集平臺和采集模塊構(gòu)成,。采集模塊根據(jù)設(shè)計要求,,采用DMM一32一AT采集板。采集平臺采用ATMEL公司A791RM9200作為主控芯片,,附帶16 kB的SDRAM和128 kB的ROM,。該芯片融合了ARM920T ARM Thumb處理器,當(dāng)工作頻率為180 MHz時性能高達200 MIPS,。帶有10/100 MB Base—T型以太網(wǎng)卡接口,USB 2.0全速(12 Mbps)主機/設(shè)備接口,。內(nèi)含內(nèi)存管理單元MMU,,含有調(diào)試通道的內(nèi)部仿真器,,便于開發(fā)調(diào)試,。由于AT91RM9200具有功能全、功耗低和工業(yè)級等優(yōu)點,,可以使系統(tǒng)能運用到各種環(huán)境中。

 

     系統(tǒng)的下位機軟件選擇嵌入式Linux操作系統(tǒng),。嵌入式Linux是將日益流行的Linux操作系統(tǒng)進行裁剪修改,使之能在嵌入式計算機系統(tǒng)運行的一種操作系統(tǒng),,它既有無限的開放源代碼資源,,又有嵌人式操作系統(tǒng)的特性,。通過對內(nèi)核的重新配置,、編譯,即可將其移植到Aqgl RM9200中,;再建立BootLoader和文件系統(tǒng),,形成基于ARM的嵌入式Linux操作系統(tǒng),最后在此平臺上開發(fā)運用程序,,實現(xiàn)裝置的各個功能,。

 2 TCP/IP協(xié)議

    在因特網(wǎng)上,TCP/IP協(xié)議每時每刻保證了數(shù)據(jù)的準(zhǔn)確傳輸,。參考開放系統(tǒng)互連(OSI)模型,,TCP/IP通常采用一種簡化的四層模型,分別為:

① 應(yīng)用層,。網(wǎng)絡(luò)應(yīng)用層要有一個定義清晰的會話過程,,如通常所說的Http,、Ftp、Telnet等,。在本系統(tǒng)中,下位機系統(tǒng)傳遞來自Ethernet和數(shù)據(jù)終端的數(shù)據(jù),,應(yīng)用層只對大的數(shù)據(jù)報進行打包拆包處理,。

② 傳輸層。傳輸層讓網(wǎng)絡(luò)程序通過明確定義的通道及某些特性獲取數(shù)據(jù),,如定義網(wǎng)絡(luò)連接的端口號等,,實現(xiàn)該層協(xié)議的傳輸控制協(xié)議TCP和用戶數(shù)據(jù)協(xié)議UDP。TCP服務(wù)提供了數(shù)據(jù)流傳輸,、可靠性,、有效流控制、全雙工操作和多路復(fù)用技術(shù)等,,在本系統(tǒng)中使用TCP數(shù)據(jù)報協(xié)議。

③ 網(wǎng)絡(luò)層,。網(wǎng)絡(luò)層讓信息可以發(fā)送到相鄰的TCP/IP網(wǎng)絡(luò)上的任一主機上,,IP協(xié)議就是該層傳送數(shù)據(jù)的機制。同時建立網(wǎng)絡(luò)間的互連,,提供ARP地址解析協(xié)議,,從而實現(xiàn)從IP地址到數(shù)據(jù)鏈路物理地址的映像。

④ 鏈路層,。由控制同一物理網(wǎng)絡(luò)上的不同機器間數(shù)據(jù)傳送的底層協(xié)議組成,,實現(xiàn)這一層的協(xié)議并屬于TCP/IP協(xié)議組。在本系統(tǒng)中這部分功能由ARM控制網(wǎng)卡芯片DM9161E實現(xiàn),。

     在本系統(tǒng)中,,利用TCP/IP協(xié)議中的TCP(傳輸控制協(xié)議)、IP(網(wǎng)絡(luò)報文協(xié)議),、ARP(地址解析協(xié)議)及簡單的應(yīng)用層協(xié)議成功地實現(xiàn)了ARM裝置和服務(wù)端的網(wǎng)絡(luò)互聯(lián),。既提高了數(shù)據(jù)傳輸?shù)乃俣龋直WC了數(shù)據(jù)傳輸?shù)恼_性,,同時也擴展了數(shù)據(jù)傳輸?shù)挠行О霃健?/p>

3 下位機的通信實現(xiàn)

    下位機作為客戶端,,它和服務(wù)器的TCP/IP通信是通過對套接字編程實現(xiàn)的。套接字是網(wǎng)絡(luò)通信的基本操作單元,,最早是作為BSD規(guī)范提出來的,,現(xiàn)已成為Linux操作系統(tǒng)下TCP/IP網(wǎng)絡(luò)編程標(biāo)準(zhǔn)。套接字提供了不同主機間進程雙向通信的端點,,這些進程在通信前各自建立一個Socket,,并通過對Socket的 寫操作實現(xiàn)網(wǎng)絡(luò)通信功能,。下文將討論的Winsock也是一個用于Windows系列操作系統(tǒng)的Sockets版本 。

    在Linux提供的3種套接字中,,本文選擇流式套接字,。流式套接字是最常用的套接字類型,其傳輸特點為:面向鏈接,、無差錯,、發(fā)送先后順序一致、包長度不限和非重復(fù)的網(wǎng)絡(luò)信息包,。TCP/IP協(xié)議簇中的TCP協(xié)議使用此類接口,。下位機與服務(wù)器通信實現(xiàn)如圖2所示。

 

① Socket()函數(shù):用于創(chuàng)建一個套接字描述符,。

#include

#include

Socket

— ID=socket(AF_INET,,SOCK_STREAM,0),;

ff PF—INET OR AF—INET Intemet IP Protocal SOCK—STREAM選擇流式套接字

② Connect()函數(shù):用于與遠端服務(wù)器建立一個TCP連接請求,。

Status=connect(Socket—ID,(struc sockaddr})&Server—Addr,,sizeof(struct sockaddr)),;

∥ 一定要指定服務(wù)器的IP地址和端口號,可帶參數(shù)運行程序時指定,,也有默認(rèn)的lP和端口號

if(status!= 一1)∥ 一1:連接過程出錯

{.? ..}

③ Write()函數(shù):從套接字緩沖區(qū)寫數(shù)據(jù),。

int Net— Send— SysConfig(int Conn—ID,char Cmdname)

∥向服務(wù)器反饋工作狀態(tài)即執(zhí)行服務(wù)器下達的命令情況

∥Conn—ID為已經(jīng)建立的套接字描述符

{

status=write(Conn—ID,,sendbuff,,len);

∥向服務(wù)器發(fā)送信息

}

④ Read()函數(shù):從套接字緩沖區(qū)讀取數(shù)據(jù)

int Receive_ Command(int Conn—ID)

{?

return len=read(Conn—ID,,NetBuf,,REC—BUFF_SIZE);

∥成功返回實際收到的字節(jié)總數(shù),,出錯返回一1

}

⑤ Close()函數(shù):用于關(guān)閉一個套接字描述符,。

close(Socket—ID); //關(guān)閉連接下位機的開發(fā)都是在Linux環(huán)境下用交叉編譯器ARM.Linux—gcc編譯通過,。

4 上位機的通信實現(xiàn)

    服務(wù)器監(jiān)控軟件是用Visual Basic 6.0來編寫的,。在Visual Basic(以下簡稱VB)中,進行網(wǎng)絡(luò)通信開發(fā)是非常方便的,。VB除了提供豐富的控件外,,還提供了各種API來進行更為高級的運用程序的開發(fā)。本裝置通過Winsock控件進行網(wǎng)絡(luò)開發(fā)。Winsock控件對用戶是不可見的,,它提供了訪問TCP和UDP網(wǎng)絡(luò)服務(wù)的方便途徑,。在編寫客戶或服務(wù)器運用程序時,不必了解TCP的細節(jié)或低級的Win—sock API,。通過設(shè)置控件的屬性并調(diào)用其方法就可連接到一個遠程客戶/服務(wù)器端,,并且雙向交換數(shù)據(jù)。

在本系統(tǒng)中作為服務(wù)器的運用軟件,,在Winsock控件的屬性設(shè)置上要注意:

① Protocol屬性,。返回或設(shè)置Winsock控件所使用的協(xié)議(TCP或UDP)。

UDPFrmMain.Winsock— Server.Protocol:sckTCPProtocol

∥選擇TCP協(xié)議,,提高數(shù)據(jù)傳輸?shù)目煽啃?/p>

② LocalPort屬性,。返回或設(shè)置所用到的本地端口。對客戶來說,,該屬性指定發(fā)送數(shù)據(jù)的本地端口,;對于服務(wù)器來說,是指定偵聽的本地端口,。

FrmMain.W insock— Server.LocalPort=LocalPort— ID∥服務(wù)器端口號,,最好大于1 000

③ State屬性。返回控件的狀態(tài),,設(shè)計時只讀,。用在判斷監(jiān)控網(wǎng)絡(luò)狀態(tài),根據(jù)狀態(tài)改變各個按鍵指示

燈的狀態(tài),,提高操作安全性。其設(shè)置如下:

Connected— State=FrmMain.W insock— Server.State

Select Case Connected— State

Case 0 StatusBar1.Panels(3).Text= “關(guān)閉”

Case 1 StalusBar1.Panels(3).Text=“打開”

Case 2 StatusBar1.Panels(3).Text=“偵聽”

4.1 Winsock控件方法

Winsock控件方法主要有以下幾種:

① Listen方法,。在運用程序初始化時創(chuàng)建套接

字并將其設(shè)置為偵聽狀態(tài),,等待客戶機的連接請求。

Private Sub Form_ Load()

FrmMain.Winsock— Server.Listen

End Sub

② Accept方法,。當(dāng)有新連接時就會出現(xiàn)ConnectionRequest

事件,,處理該事件時,運用程序應(yīng)該用Accept方法接收連接,。

∥當(dāng)遠程客戶機(AT91RM9200)發(fā)出請求連接時發(fā)生

Private Sub Winsock

Server

— Connecti0nRequest( ByVal

requestID As Long)

If W insock

— Server.State < > sckClosed Then W insock—

Server.Close保證Winsock控件不是處于Close狀態(tài)

W insock— —

Server.Accept requestlD

∥服務(wù)器接收客戶機(A'I-91 RM9200)的請求

End Sub

③ SendData方法,。服務(wù)器給客戶機發(fā)送控制命

令,如開始執(zhí)行,、停止,、數(shù)據(jù)的轉(zhuǎn)存等,實現(xiàn)對客戶機的

遠程控制,。

本函數(shù)按TCP模式按二進制方式發(fā)送數(shù)據(jù)包給

客戶機,,函數(shù)成功返回true,出錯返回false。

Public Function Send— Data—

To— kehu(Winsock—Server As

Winsock,,Data—

Buff()As Byte)As Boolean

On Error GoTo Er

_

Part

Send— Data— To—

kehu : False

If Connect Then //Connect是一個定義的全局變量,,

保證在Winsock控件在連接狀態(tài)

W insock— . Server.Se ndData Data_ Buf

End If

Send— Data— To— kehu=True

Exit Function

Err_ Pa~:

Send— Data— To— kehu = False

MsgBox“發(fā)送數(shù)據(jù)出錯!錯誤代碼=”+CStr(Er)+

“ :”+Error,vbExclamation,,“錯誤提示”

Exit Function

End Function

4.2 Winsoek控件事件

Winsock控件事件分為以下2種,。

① DataArrival事件:該事件是通信的核心部分。當(dāng)給客戶端發(fā)送完命令后,,接收客戶端返回的命令執(zhí)行情況,,實現(xiàn)對客戶機運行狀態(tài)的監(jiān)察。如果是數(shù)據(jù)轉(zhuǎn)存命令時,,還要完成接收客戶機上傳的采集數(shù)據(jù)和對數(shù)據(jù)的服務(wù)器存儲,,進一步提高系統(tǒng)的可靠性,其流程如圖3所示,。接收到FTP頭數(shù)據(jù)包后,, P傳輸數(shù)據(jù)的格式定義如圖4所示。

② Error事件:只要后臺處理中出現(xiàn)錯誤(例如連接失敗,、收發(fā)數(shù)據(jù)失敗)事件都會出現(xiàn),,方便我們對程序的監(jiān)控和調(diào)試。

在后臺處理中出現(xiàn)錯誤時發(fā)生:

Private Sub W insock— Server_

Eror(ByVal Number As Inte.

ger,,Description As String,,ByVal Se ode As Long,ByValSource As String,,ByVal HelpFile As String,,ByVal Help—Context As Long,CancelDisplay As Boolean

MsgBox“網(wǎng)絡(luò)運行出錯!代碼=”+CStr(Err)+“:”

+Error,,vbCritical,,“錯誤信息”

Exit Sub

End Sub

5 結(jié)束語

    基于ARM的高速數(shù)據(jù)采集裝置的遠程監(jiān)控的設(shè)計,從硬件和軟件兩方面看是可行的,,實際制板調(diào)試結(jié)果很好地完成了遠程通信任務(wù),。對工業(yè)現(xiàn)場的遠程監(jiān)控提供了新的解決方案。隨著以太網(wǎng)的日益普及,,該方案有著很強的實踐意義,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。