引言
隨著科學技術(shù)的不斷發(fā)展,人們已經(jīng)無法滿足傳統(tǒng)的網(wǎng)絡(luò)通信方式,對于一種高性能的網(wǎng)絡(luò)通信的呼聲愈來愈高。VxWorks 是美國 Wind River SySTem 公司在1983年推出的一個實時操作系統(tǒng),它以可靠、實時、可裁剪的特點著稱,利用VxWorks對TCP/IP協(xié)議、多任務(wù)以及BSD Socket的良好支持,一種新的可方便地實現(xiàn)網(wǎng)絡(luò)通信的方法將得以實現(xiàn)。
1 VxWorks網(wǎng)絡(luò)協(xié)議
VxWorks通常使用以太網(wǎng)作為最底層傳輸媒介。而在傳輸媒介的上一層,VxWorks則用TCP/IP協(xié)議來用于VxWorks進程與其它主機環(huán)境進程之間的傳輸數(shù)據(jù)。用戶程序需要的就是在TCP/IP層之上進行通信。因此,利用VxWorks對多任務(wù)和socket的良好支持,可以方便的實現(xiàn)網(wǎng)絡(luò)通信。
TCP/IP是VxWorks提供的網(wǎng)絡(luò)間進程通信的主要機制,它主要包括三個協(xié)議:Internet協(xié)議、IP協(xié)議和傳輸層協(xié)議。其中Internet協(xié)議是處于TCP和UDP之上的一組協(xié)議專門開發(fā)的應(yīng)用程序,包括telnet、文件傳輸協(xié)議(FTP)等。IP層也稱網(wǎng)絡(luò)層,它包括Internet協(xié)議(IP)、網(wǎng)際控制報文協(xié)議(ICMP)和地址識別協(xié)議(ARP);其中IP協(xié)議是TCP/IP協(xié)議族的基礎(chǔ),該協(xié)議被設(shè)計成互聯(lián)分組交換通信網(wǎng),現(xiàn)已形成了一個網(wǎng)際通信環(huán)境,它負責在源主機和目的地主機之間傳輸來自其較高層軟件的(稱為數(shù)據(jù)報文的)數(shù)據(jù)塊,它在源和目的地之間可提供非連接型傳遞服務(wù);而傳輸層協(xié)議包括傳輸控制協(xié)議,主要有面向連接的TCP和無連接數(shù)據(jù)報UDP兩種協(xié)議。
VxWorks網(wǎng)絡(luò)協(xié)議是一個基于開放系統(tǒng)的互連(OSI)模型,而且系統(tǒng)為了向高層協(xié)議層提供一個統(tǒng)一的、規(guī)范的、方便協(xié)議移植的網(wǎng)絡(luò)接口,在高層IP層之下添加了一個MUX層,由MUX層負責與網(wǎng)絡(luò)底層驅(qū)動的交互。這樣做可以使用戶在設(shè)計協(xié)議中不必關(guān)心網(wǎng)絡(luò)底層的數(shù)據(jù)傳遞,而在設(shè)計網(wǎng)絡(luò)驅(qū)動程序時也不必關(guān)心協(xié)議棧的結(jié)構(gòu),因而大大方便了對其進行的開發(fā)。VxWorks網(wǎng)絡(luò)協(xié)議的結(jié)構(gòu)如圖1所示。
2 基于雙緩沖隊列的網(wǎng)絡(luò)通信設(shè)計
網(wǎng)絡(luò)通信的基石是套接字,一個套接字是通信的一端,在這一端上可以找到與其對應(yīng)的一個名字。一個正在被使用的套接字都有它的類型和其相關(guān)的任務(wù),VxWorks可以實現(xiàn)與BSD4.4TCP/IP兼容的Socket編程接口。由于面向連接的服務(wù)器使用的傳輸層協(xié)議可保證數(shù)據(jù)傳送的可靠性和順序性,因此,本文的系統(tǒng)端采用基于流Socket的客戶機/服務(wù)器(Client/Server)編程模式,其程序可以分為客戶端程序和服務(wù)端程序。其通信模型如圖2所示。
2.1 客戶端程序設(shè)計
所謂客戶端服務(wù)程序,就是主要用來發(fā)出服務(wù)請求的程序??蛻舳顺绦蛟O(shè)計要知道服務(wù)端的地址、服務(wù)所提供的端*及服務(wù)使用的傳輸層協(xié)議(TCP協(xié)議)。在客戶/服務(wù)器模式中,客戶端程序可以通過兩種形式找到服務(wù)器:一是通過指定服務(wù)器的IP地址和端*來找到服務(wù)端;二是通過廣播的形式來來尋找服務(wù)器。本系統(tǒng)的客戶端程序應(yīng)用第一種形式來尋找服務(wù)器。知道了服務(wù)端的位置后,客戶端任務(wù)就可以打開一個套接字,然后通過連接服務(wù)器來發(fā)送和接收數(shù)據(jù)。
面向連接的TCP客戶端編程結(jié)構(gòu)分為部分:一是以TCP連接服務(wù)器,TCP協(xié)議是一種可保證傳輸可靠,且能保護順序的傳輸層協(xié)議。在連接服務(wù)器之前,先要申請一個SOCK_STREAM類型的套接字,該套接字的通信域應(yīng)制定為PF_INET類型;二是使用TCP與服務(wù)器通信,因為TCP是面向連接的協(xié)議,在連接建立以后,它可以通過send、recv等調(diào)用來進行通信,就像管道一樣;三是關(guān)閉TCP連接,即在客戶端程序結(jié)束,或使用完一個套接字后,可以使用close來關(guān)閉一個套接字。
2.2 服務(wù)端程序設(shè)計
在服務(wù)端程序設(shè)計中,可以根據(jù)對要實現(xiàn)的網(wǎng)絡(luò)服務(wù)功能來設(shè)計自己的應(yīng)用層協(xié)議。本系統(tǒng)服務(wù)端使用的TCP是面向連接的服務(wù)端。在這種模式下,服務(wù)端程序的設(shè)計就可以不考慮數(shù)據(jù)的可靠傳送,而只要接受連接請求,并通過該連接進行通信即可,這樣,底層的傳輸協(xié)議就自然會保證數(shù)據(jù)傳送的可靠性。
服務(wù)端程序設(shè)計的兩種基本模式是循環(huán)模式和并發(fā)模式。循環(huán)模式就是服務(wù)端進程在總體機構(gòu)上是一個循環(huán),一次處理一個請求。并發(fā)模式的服務(wù)端進程一般可以同時處理多個請求,結(jié)構(gòu)上一般采用父進程接受請求,然后產(chǎn)生子進程,這樣一般為多進程結(jié)構(gòu)。
本文選用面向連接服務(wù)端的循環(huán)模式,此模式的建立步驟如下:
(1)創(chuàng)建一個SOCK_STREAM類型的套接字;
(2)調(diào)用bind指定地址和端口;
(3)調(diào)用listen未處理連接請求的隊列長度;
(4)調(diào)用accept等待連接請求,一旦有連接請求,accept返回一個新的套接字描述符;
(5)通過新的描述符與客戶端交互信息,交互完畢,即關(guān)閉新產(chǎn)生的套接字并返回第四步。
3 微機保護系統(tǒng)網(wǎng)絡(luò)通信模型設(shè)計
系統(tǒng)中基于Socket模式下的通信過程分為控制端發(fā)起的通信過程和受控端發(fā)起的通信過程,這兩種過程都是基于客戶/服務(wù)器的網(wǎng)絡(luò)編程模式。在客戶/服務(wù)器模式中,請求的一方稱為客戶,提供服務(wù)的一方稱為服務(wù)器。
本設(shè)計采用嵌入式計算機結(jié)合數(shù)據(jù)采集板的方式,并由VxWorks實時操作系統(tǒng)為嵌入式計算機提供底層軟件平臺的支持。嵌入式計算機連接數(shù)據(jù)采集板,并控制數(shù)據(jù)的采集過程,以(以牽引供電系統(tǒng)饋線保護為例)在工頻周期下,從TV、TA側(cè)采集共2路電壓、電流信號,每周波采樣24個數(shù)據(jù)點,采樣周期為833μs。在該保護系統(tǒng)中,嵌入式系統(tǒng)端為客戶端,并采用VxWorks基于Socket客戶機編程模式,主要負責發(fā)布命令,監(jiān)控命令的執(zhí)行狀況,其主要工作是數(shù)據(jù)的采集和存儲;服務(wù)器端為微機保護運行所在的PC機,負責執(zhí)行命令并返回命令執(zhí)行的結(jié)果,主要工作是為采集數(shù)據(jù)的微機提供算法處理保護以及保護啟動判斷。本系統(tǒng)只需要在服務(wù)器啟動后,就可以進入等待狀態(tài),所有其他的動作都可以等待和客戶端建立連接后,由人機界面來控制。其系統(tǒng)網(wǎng)絡(luò)通信流程如圖3所示。
在網(wǎng)絡(luò)通信時,首先由服務(wù)器端創(chuàng)建一個偵聽用套接字(socket),然后與服務(wù)器的本地地址相綁定(bind),接著進入偵聽模式(listen )??蛻舳碎_始時,同樣也需要創(chuàng)建一個套接字(socket),不同的是,這個套接字只用于通信,然后連接服務(wù)器端(cONnect);服務(wù)器端用于偵聽的套接字接受(accept)這個來自客戶端的連接,然后建立新的通信用套接字,并利用新建的通信套接字與客戶端進行通信;服務(wù)器端和客戶端從各自的通信套接字傳送和接收數(shù)據(jù)(send/recv),通信結(jié)束后,再關(guān)閉相關(guān)的通信套接字(close)。
基于這種網(wǎng)絡(luò)通信模式可實現(xiàn)上述供電系統(tǒng)電壓、電流信號數(shù)據(jù)采集模塊與VxWorks系統(tǒng)平臺間的數(shù)據(jù)傳輸及網(wǎng)絡(luò)通信。
4 結(jié)束語
利用本系統(tǒng)可將VxWorks嵌入式實時操作系統(tǒng)接受的采樣數(shù)據(jù)通過網(wǎng)絡(luò)通信發(fā)送到保護任務(wù)所在的PC機上。這種方法不僅有利于采樣數(shù)據(jù)的存儲和后續(xù)的數(shù)據(jù)處理,并保證了采樣數(shù)據(jù)的實時性和傳送的安全性。相對于傳統(tǒng)的前后臺微機保護裝置,采用VxWorks嵌入式實時操作系統(tǒng)的微機保護裝置能有效的提高系統(tǒng)的實時性和可靠性。