基于VxWorks的微機保護裝置網絡通信設計
2 基于雙緩沖隊列的網絡通信設計
網絡通信的基石是套接字,一個套接字是通信的一端,在這一端上可以找到與其對應的一個名字。一個正在被使用的套接字都有它的類型和其相關的任務,VxWorks可以實現與BSD4.4TCP/IP兼容的Socket編程接口。由于面向連接的服務器使用的傳輸層協議可保證數據傳送的可靠性和順序性,因此,本文的系統端采用基于流Socket的客戶機/服務器(Client/Server)編程模式,其程序可以分為客戶端程序和服務端程序。其通信模型如圖2所示。
2.1 客戶端程序設計
所謂客戶端服務程序,就是主要用來發(fā)出服務請求的程序??蛻舳顺绦?a class="contentlabel" href="http://www.bjwjmy.cn/news/listbylabel/label/設計">設計要知道服務端的地址、服務所提供的端口號及服務使用的傳輸層協議(TCP協議)。在客戶/服務器模式中,客戶端程序可以通過兩種形式找到服務器:一是通過指定服務器的IP地址和端口號來找到服務端;二是通過廣播的形式來來尋找服務器。本系統的客戶端程序應用第一種形式來尋找服務器。知道了服務端的位置后,客戶端任務就可以打開一個套接字,然后通過連接服務器來發(fā)送和接收數據。
面向連接的TCP客戶端編程結構分為部分:一是以TCP連接服務器,TCP協議是一種可保證傳輸可靠,且能保護順序的傳輸層協議。在連接服務器之前,先要申請一個SOCK_STREAM類型的套接字,該套接字的通信域應制定為PF_INET類型;二是使用TCP與服務器通信,因為TCP是面向連接的協議,在連接建立以后,它可以通過send、recv等調用來進行通信,就像管道一樣;三是關閉TCP連接,即在客戶端程序結束,或使用完一個套接字后,可以使用close來關閉一個套接字。
2.2 服務端程序設計
在服務端程序設計中,可以根據對要實現的網絡服務功能來設計自己的應用層協議。本系統服務端使用的TCP是面向連接的服務端。在這種模式下,服務端程序的設計就可以不考慮數據的可靠傳送,而只要接受連接請求,并通過該連接進行通信即可,這樣,底層的傳輸協議就自然會保證數據傳送的可靠性。
服務端程序設計的兩種基本模式是循環(huán)模式和并發(fā)模式。循環(huán)模式就是服務端進程在總體機構上是一個循環(huán),一次處理一個請求。并發(fā)模式的服務端進程一般可以同時處理多個請求,結構上一般采用父進程接受請求,然后產生子進程,這樣一般為多進程結構。
本文選用面向連接服務端的循環(huán)模式,此模式的建立步驟如下:
(1)創(chuàng)建一個SOCK_STREAM類型的套接字;
(2)調用bind指定地址和端口;
(3)調用listen未處理連接請求的隊列長度;
(4)調用accept等待連接請求,一旦有連接請求,accept返回一個新的套接字描述符;
(5)通過新的描述符與客戶端交互信息,交互完畢,即關閉新產生的套接字并返回第四步。
3 微機保護系統網絡通信模型設計
系統中基于Socket模式下的通信過程分為控制端發(fā)起的通信過程和受控端發(fā)起的通信過程,這兩種過程都是基于客戶/服務器的網絡編程模式。在客戶/服務器模式中,請求的一方稱為客戶,提供服務的一方稱為服務器。
本設計采用嵌入式計算機結合數據采集板的方式,并由VxWorks實時操作系統為嵌入式計算機提供底層軟件平臺的支持。嵌入式計算機連接數據采集板,并控制數據的采集過程,以(以牽引供電系統饋線保護為例)在工頻周期下,從TV、TA側采集共2路電壓、電流信號,每周波采樣24個數據點,采樣周期為833μs。在該保護系統中,嵌入式系統端為客戶端,并采用VxWorks基于Socket客戶機編程模式,主要負責發(fā)布命令,監(jiān)控命令的執(zhí)行狀況,其主要工作是數據的采集和存儲;服務器端為微機保護運行所在的PC機,負責執(zhí)行命令并返回命令執(zhí)行的結果,主要工作是為采集數據的微機提供算法處理保護以及保護啟動判斷。本系統只需要在服務器啟動后,就可以進入等待狀態(tài),所有其他的動作都可以等待和客戶端建立連接后,由人機界面來控制。其系統網絡通信流程如圖3所示。本文引用地址:http://www.bjwjmy.cn/article/156524.htm
在網絡通信時,首先由服務器端創(chuàng)建一個偵聽用套接字(socket),然后與服務器的本地地址相綁定(bind),接著進入偵聽模式(listen )??蛻舳碎_始時,同樣也需要創(chuàng)建一個套接字(socket),不同的是,這個套接字只用于通信,然后連接服務器端(connect);服務器端用于偵聽的套接字接受(accept)這個來自客戶端的連接,然后建立新的通信用套接字,并利用新建的通信套接字與客戶端進行通信;服務器端和客戶端從各自的通信套接字傳送和接收數據(send/recv),通信結束后,再關閉相關的通信套接字(close)。
基于這種網絡通信模式可實現上述供電系統電壓、電流信號數據采集模塊與VxWorks系統平臺間的數據傳輸及網絡通信。
4 結束語
利用本系統可將VxWorks嵌入式實時操作系統接受的采樣數據通過網絡通信發(fā)送到保護任務所在的PC機上。這種方法有利于采樣數據的存儲和后續(xù)的數據處理,并可保證采樣數據的實時性和傳送的安全性。相對于傳統的前后臺微機保護裝置,采用VxWorks嵌入式實時操作系統的微機保護裝置能有效的提高系統的實時性和可靠性。
評論