當前位置:自動化網>北京飛旭科技有限公司門戶>應用案例>基于ARM高速數據采集遠程監控系統的應用

          基于ARM高速數據采集遠程監控系統的應用

          發布時間:2010-07-08 14:32   類型:技術前沿   人瀏覽

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

           

          O 引言

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

           

          1 系統簡介

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

           

           

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

           2 TCP/IP協議

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

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

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

          ③ 網絡層。網絡層讓信息可以發送到相鄰的TCP/IP網絡上的任一主機上,IP協議就是該層傳送數據的機制。同時建立網絡間的互連,提供ARP地址解析協議,從而實現從IP地址到數據鏈路物理地址的映像。

          ④ 鏈路層。由控制同一物理網絡上的不同機器間數據傳送的底層協議組成,實現這一層的協議并屬于TCP/IP協議組。在本系統中這部分功能由ARM控制網卡芯片DM9161E實現。

               在本系統中,利用TCP/IP協議中的TCP(傳輸控制協議)、IP(網絡報文協議)、ARP(地址解析協議)及簡單的應用層協議成功地實現了ARM裝置和服務端的網絡互聯。既提高了數據傳輸的速度,又保證了數據傳輸的正確性,同時也擴展了數據傳輸的有效半徑。

          3 下位機的通信實現

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

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

           

          ① Socket()函數:用于創建一個套接字描述符。

          #include

          #include

          Socket

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

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

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

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

          ∥ 一定要指定服務器的IP地址和端口號,可帶參數運行程序時指定,也有默認的lP和端口號

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

          {.⋯ ..}

          ③ Write()函數:從套接字緩沖區寫數據。

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

          ∥向服務器反饋工作狀態即執行服務器下達的命令情況

          ∥Conn—ID為已經建立的套接字描述符

          {

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

          ∥向服務器發送信息

          }

          ④ Read()函數:從套接字緩沖區讀取數據

          int Receive_ Command(int Conn—ID)

          {⋯

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

          ∥成功返回實際收到的字節總數,出錯返回一1

          }

           

          ⑤ Close()函數:用于關閉一個套接字描述符。

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

          4 上位機的通信實現

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

          在本系統中作為服務器的運用軟件,在Winsock控件的屬性設置上要注意:

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

          UDPFrmMain.Winsock— Server.Protocol:sckTCPProtocol

          ∥選擇TCP協議,提高數據傳輸的可靠性

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

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

          ③ State屬性。返回控件的狀態,設計時只讀。用在判斷監控網絡狀態,根據狀態改變各個按鍵指示

          燈的狀態,提高操作安全性。其設置如下:

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

          Select Case Connected— State

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

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

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

          4.1 Winsock控件方法

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

          ① Listen方法。在運用程序初始化時創建套接

          字并將其設置為偵聽狀態,等待客戶機的連接請求。

          Private Sub Form_ Load()

          FrmMain.Winsock— Server.Listen

          End Sub

          ② Accept方法。當有新連接時就會出現ConnectionRequest

          事件,處理該事件時,運用程序應該用Accept方法接收連接。

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

          Private Sub Winsock

          Server

          — Connecti0nRequest( ByVal

          requestID As Long)

          If W insock

          — Server.State < > sckClosed Then W insock—

          Server.Close保證Winsock控件不是處于Close狀態

          W insock— —

          Server.Accept requestlD

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

          End Sub

          ③ SendData方法。服務器給客戶機發送控制命

          令,如開始執行、停止、數據的轉存等,實現對客戶機的

          遠程控制。

          本函數按TCP模式按二進制方式發送數據包給

          客戶機,函數成功返回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控件在連接狀態

          W insock— . Server.Se ndData Data_ Buf

          End If

          Send— Data— To— kehu=True

          Exit Function

          Err_ Pa~:

          Send— Data— To— kehu = False

          MsgBox“發送數據出錯!錯誤代碼=”+CStr(Er)+

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

          Exit Function

          End Function

          4.2 Winsoek控件事件

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

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

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

          在后臺處理中出現錯誤時發生:

          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“網絡運行出錯!代碼=”+CStr(Err)+“:”

          +Error,vbCritical,“錯誤信息”

          Exit Sub

          End Sub

            

          5 結束語

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

          更多內容請登陸;北京飛旭科技有限公司

          本文地址:http://m.xznet110.com/apply/d_1nrutga2l1kik_1.html

          拷貝地址

          免責聲明:本文僅代表作者個人觀點,與中國自動化網無關。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容!

          留言反饋
          • 評價:

          • 關于:

          • 聯系人:

          • 聯系電話:

          • 聯系郵箱:

          • 需求意向:

          • 驗證碼:

            看不清楚?

          主站蜘蛛池模板: 亚洲熟妇无码av在线播放| 无码日韩精品一区二区免费| 国产大屁股喷水视频在线观看| 久久久精品久久久久三级| 精品国产黑色丝袜高跟鞋| 在线观看亚洲精品国产| 久久亚洲精品国产精品黑人| 欲惑美妇老师泛滥春情在线播放| 国产日韩美国成人| 中午字幕在线观看| 欧美激情xxxx性bbbb| 国产性猛交xx乱| 一本久道久久综合多人| 最近中文AV字幕在线中文| 亚洲自偷自拍另类图片二区| 成人羞羞视频网站| 尤物网站在线播放| 亚洲国产成人久久精品影视| 色吊丝永久在线观看最新免费| 天堂а√在线官网| 中文字幕日韩在线| 欧美日韩成人午夜免费| 动漫美女被到爽流触手| 男女一边摸一边做爽的免费视频| 日本a∨在线观看| 亚洲精品天堂成人片AV在线播放| 老师在办公室疯狂的肉我| 国产极品美女高潮抽搐免费网站| 99久久国产热无码精品免费| 日韩三级一区二区| 免费人成再在线观看网站| 欧美sss视频| 宝宝才三根手指头就湿成这样 | 18分钟处破好疼高清视频| 好大好硬好深好爽的视频| 亚洲av无码专区在线观看下载 | 男女一边摸一边做爽爽毛片| 国产无套露脸视频在线观看| 97久久免费视频| 日本xxxx裸体bbbb| 亚洲av日韩精品久久久久久久|