
隨著Internet的發(fā)展與普及,終端采集到的各種參數(shù)傳輸?shù)母咚俜€(wěn)定性能已成為一個重要的問題。盡管目前市場上已經(jīng)有許多功能強大的網(wǎng)絡通信軟件,但是由于數(shù)據(jù)傳輸系統(tǒng)自身的復雜性,通用的軟件有時并不能解決特定的問題。出于一些特殊性的考慮,很多時候網(wǎng)絡用戶需要自己開發(fā)軟件,以實現(xiàn)對監(jiān)控領域的特殊實現(xiàn)。本文設計一個工業(yè)控制領域的嵌入式網(wǎng)絡通信系統(tǒng),以實現(xiàn)遠程數(shù)據(jù)文件上傳到服務器端,方便工作人員對遠程現(xiàn)場的控制操作,控制命令的上傳下達,檢測參數(shù)的及時傳輸。
一、嵌入式監(jiān)控系統(tǒng)的軟件設計概述
監(jiān)控系統(tǒng)接入Internet是網(wǎng)絡監(jiān)控系統(tǒng)的發(fā)展方向。而監(jiān)控主機和客戶端之間的通信是基于TCP/IP的技術之上。TCP/IP技術的核心部分是傳輸層、網(wǎng)絡層和物理接口層。但作為TCP/IP核心的TCP/UDP和IP等中下層協(xié)議向外提供的只是原始的編程界面,而不是直接的用戶服務,用戶服務要靠核心外的應用程序實現(xiàn),在進行TCP/IP網(wǎng)絡通信應用程序設計時,當前最為流行的是Socket編程界面。Socket編程接口目的是解決網(wǎng)間網(wǎng)進程通信問題(Unix系統(tǒng)提供的Socket編程界面除外)。在網(wǎng)絡中,每一個Socket用一個三元組描述:協(xié)議,本地地址,本地端口;一個完整的Socket連接則用一個五元組描述:協(xié)議,本地地址,本地端口,遠程地址,遠程端口。每個Socket有一個本地惟一的Socket號,由操作系統(tǒng)分配。Socket編程接口是應用層協(xié)議的實現(xiàn)基礎。開發(fā)Socket的目的是隱蔽網(wǎng)絡底Socket是網(wǎng)絡通信的基本操作單元,它提供不同主機間進程雙向通信的端點層復雜的結構與協(xié)議,使編程人員能夠簡單、抽象地對網(wǎng)絡進行操作。利用它可以構造任意的跨操作系統(tǒng)和跨網(wǎng)絡協(xié)議的分布式處理系統(tǒng)。
二、系統(tǒng)總體方案
如圖2.1監(jiān)控管理主機是運行l(wèi)inux操作系統(tǒng)的下位機(服務器端),現(xiàn)地工作站是嵌入式系統(tǒng)即上位機(客戶端)。上位機將采集的數(shù)據(jù)即時發(fā)送給服務器,同時將數(shù)據(jù)放入一個固定文件夾下,客戶端以一定的周期輪詢各個下位機,服務器用FTP協(xié)議將上位機的文件取走,以實現(xiàn)對現(xiàn)場的控制。圖2.2是對上圖網(wǎng)絡數(shù)據(jù)傳輸環(huán)節(jié)的抽象圖。
上位機作為客戶端,下位機作為服務器端,客戶端以一定的周期輪詢各個下位機。服務器端和客戶端在發(fā)送指令和對指令作出響應時通過TCP協(xié)議的套接字來傳輸。客戶端主動轉發(fā)數(shù)據(jù)包則用UDP協(xié)議的套接字來傳輸。在網(wǎng)絡異常時,通過FTP來使服務器端能獲取客戶端存儲在FLASH上的文件。
三、網(wǎng)絡編程及實現(xiàn)
在Linux中,使用最普遍的地址族是AF_INET.AF_INET是具有IPV4套接口地址的套接口,它可以與TCP/IP上的其它主機進行通信。每個套接口有對應的網(wǎng)絡地址,通過在程序中指定遠程套接口的地址,就可以建立本地套接口到遠程套接口的通信.在建立Socket端口時經(jīng)常用到的結構是Sockaddr,該結構是用來保存Socket信息的:
struct sockaddr{
unsignedshortsa_ family ;/* 地址族,AFxxx*/
char sa_data[14]; /*14字節(jié)的協(xié)議地址 */
};
sa_ family一般為AF_INET; sa_data 則包含socket的IP地址和端口號。
四、功能測試及結論
首先測試客戶端是否能正常的處理所支持的協(xié)議和方法,是否能正常的轉發(fā)數(shù)據(jù),服務器端是否能正常的接收數(shù)據(jù)。然后測試動態(tài)域名以及移植的FTP服務器的功能是否得到了實現(xiàn)。測試結果如下:客戶端以一定的周期輪詢各個下位機,并將每個不同采集文件傳輸?shù)椒掌鳌2⑶移渌蠊δ芏寄苷_執(zhí)行。
系統(tǒng)的服務器端和客戶端實現(xiàn)了設計的預定功能,并具有較高的性能。用socket來實現(xiàn)客戶機和服務器的連接,客戶機將通過串口采集的數(shù)據(jù)即時發(fā)送到服務器,在解決客戶端同服務器端最基本的發(fā)送數(shù)據(jù)和接收數(shù)據(jù)功能之外,在客戶端加一個判斷本地IP功能,在服務器端申請一個動態(tài)域名,實現(xiàn)客戶端根據(jù)域名來發(fā)送數(shù)據(jù)的功能,最后通過現(xiàn)有的FTP軟件,在得到客戶端的確認后,監(jiān)控主機可以在客戶端進行文件操作,客戶端以一定的周期輪詢各個下位機,并將每個不同采集文件傳輸給服務器。以實現(xiàn)遠程數(shù)據(jù)文件上傳到服務器端,方便工作人員對遠程現(xiàn)場的控制操作,控制命令的上傳下達,檢測參數(shù)的及時傳輸。嵌入式監(jiān)控系統(tǒng)可以使信息實現(xiàn)本地化處理,改善服務器性能,可以使每一個設備具備上網(wǎng)與服務功能,即每一個設備都可以獨立進行服務,從而大大提高監(jiān)控的質量和范圍。因此,嵌入式系統(tǒng)是監(jiān)控系統(tǒng)未來發(fā)展方向之一。參考文獻:
[1]W.Richard Stevens著,TCP/IP詳解卷1[M].協(xié)議機械工業(yè)出版社,2000.
[2]Eric A.Hall著,Internet核心協(xié)議權威指南[M].中國電力出版社,2002.