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