外場(chǎng)光電測(cè)控是一種野外環(huán)境下進(jìn)行的遠(yuǎn)距離非接觸式的測(cè)量,系統(tǒng)由于本身所含分系統(tǒng)數(shù)量多,通信復(fù)雜,無(wú)法實(shí)現(xiàn)光電測(cè)控系統(tǒng)的統(tǒng)一控制,完全發(fā)揮其自身功能。針對(duì)通信方式多樣化以及對(duì)于某些外場(chǎng)中具有危險(xiǎn)性的測(cè)量試驗(yàn)、氣候條件不適合人員操作的惡劣環(huán)境,設(shè)計(jì)了基于以太網(wǎng)絡(luò)的遠(yuǎn)程測(cè)控系統(tǒng)完成測(cè)量試驗(yàn)。
通過網(wǎng)絡(luò)進(jìn)行測(cè)量和數(shù)據(jù)采集,數(shù)據(jù)處理中心可以遠(yuǎn)程監(jiān)視試驗(yàn)過程、獲取試驗(yàn)數(shù)據(jù),是測(cè)控系統(tǒng)網(wǎng)絡(luò)化的發(fā)展趨勢(shì)。這種方式使測(cè)控跨越了空間和時(shí)間的界限,與傳統(tǒng)儀器和測(cè)控方式相比,是一個(gè)質(zhì)的飛躍,而且還能實(shí)現(xiàn)測(cè)控設(shè)備和測(cè)控信息等測(cè)控資源的共享。
1 系統(tǒng)體系結(jié)構(gòu)
由于C/S(客戶端/服務(wù)器)模式交互性強(qiáng),實(shí)時(shí)性和靈活性好,具有強(qiáng)壯的數(shù)據(jù)操縱和事務(wù)處理能力,采用的協(xié)議其專用性和封閉性使得整個(gè)C/S模式系統(tǒng)相對(duì)安全,所以本系統(tǒng)采用TCP/IP協(xié)議,基于C/S的操作模式。這種方式隱含了客戶端/服務(wù)器間硬件資源的不平等以及通信時(shí)的非對(duì)稱性。在實(shí)際測(cè)控中,多臺(tái)光電測(cè)控設(shè)備在不同站點(diǎn)同時(shí)進(jìn)行測(cè)量,數(shù)據(jù)處理中心對(duì)多個(gè)測(cè)量站進(jìn)行協(xié)調(diào)和監(jiān)控,即為一客戶端對(duì)多服務(wù)器的結(jié)構(gòu)(客戶端為數(shù)據(jù)處理中心)。
由于系統(tǒng)要求保留原有的本地控制功能,而且基于以太網(wǎng)的遠(yuǎn)程測(cè)控因網(wǎng)絡(luò)傳輸不能達(dá)到十分嚴(yán)格的實(shí)時(shí)控制要求,因此,本方案采用保持型與完成型結(jié)合的遠(yuǎn)程監(jiān)控方式,將客戶端置于反饋回路之外。遠(yuǎn)程測(cè)控原理如圖1所示,客戶端監(jiān)控程序發(fā)送控制命令和試驗(yàn)參數(shù)給服務(wù)器端設(shè)備控制程序,設(shè)備控制程序通過本地總線完成設(shè)備的運(yùn)動(dòng)控制和測(cè)量操作,并將執(zhí)行結(jié)果返回給客戶端用戶??蛻舳丝刂聘鳒y(cè)最現(xiàn)場(chǎng)試驗(yàn)過程的進(jìn)行并全程監(jiān)控,一方面,利用UDP協(xié)議和雙緩沖技術(shù),對(duì)測(cè)量現(xiàn)場(chǎng)計(jì)算機(jī)的工作狀況進(jìn)行監(jiān)控,另一方面,每臺(tái)光電測(cè)控設(shè)備配有彩色監(jiān)視攝像機(jī),客戶端用戶可以通過傳回的圖像了解測(cè)量現(xiàn)場(chǎng)概況。必要時(shí)可以修改試驗(yàn)參數(shù),對(duì)試驗(yàn)過程進(jìn)行干涉,客戶端還可以通過網(wǎng)絡(luò)采集設(shè)備狀態(tài)信息,進(jìn)行遠(yuǎn)程診斷。
圖2 客戶端與服務(wù)器端程序交互流程圖
2.1.1 多線程并發(fā)技術(shù)
在遠(yuǎn)程測(cè)控過程中,會(huì)有大量的圖像及數(shù)據(jù)文件需要傳輸,網(wǎng)絡(luò)通信必然會(huì)對(duì)需要同時(shí)進(jìn)行的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理及人機(jī)交互產(chǎn)生影響。多線程技術(shù)可以提高客戶機(jī)與服務(wù)器的并發(fā)處理能力,更有效地解決了網(wǎng)絡(luò)傳輸阻塞問題,避免部分阻塞操作對(duì)人機(jī)界面的影響并提高程序的運(yùn)行效率。本系統(tǒng)中客戶端和服務(wù)器均使用一個(gè)用戶界面線程和多個(gè)輔助工作線程相結(jié)合的設(shè)計(jì)。服務(wù)器端多線程主要完成監(jiān)聽連接、命令處理、采集、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)傳輸,客戶端主線程負(fù)責(zé)窗口信息和界面的維護(hù),工作線程負(fù)責(zé)數(shù)據(jù)接收、數(shù)據(jù)的顯示及處理等功能。
2.1.2 系統(tǒng)通信協(xié)議
從客戶端連接服務(wù)器然后開始遠(yuǎn)程實(shí)驗(yàn),直到試驗(yàn)結(jié)束,整個(gè)過程中,客戶端和服務(wù)器的數(shù)據(jù)交換是程序的重點(diǎn)問題??蛻舳艘蚍?wù)器傳遞試驗(yàn)信息、控制參數(shù)、各種服務(wù)請(qǐng)求,服務(wù)器要向客戶端傳遞試驗(yàn)結(jié)果、系統(tǒng)狀態(tài)、查詢?cè)囼?yàn)結(jié)果等。程序必須保證所有的數(shù)據(jù)有條不紊地傳遞而且可以被對(duì)方正確地接收和存取。然而,在Winsock基礎(chǔ)上開發(fā)的服務(wù)器與客戶端之間傳送的只是字節(jié)流,要進(jìn)行控制就必須將這些字節(jié)流轉(zhuǎn)換為有意義的控制指令信息,因此必須約定雙方數(shù)據(jù)通信的協(xié)議。
通信協(xié)議的復(fù)雜程度取決于控制系統(tǒng)的復(fù)雜程度,分為客戶端協(xié)議和服務(wù)器協(xié)議,主要交互命令控制、命令響應(yīng)及圖像數(shù)據(jù)等,表1列舉了簡(jiǎn)單的命令控制協(xié)議和圖像數(shù)據(jù)傳輸協(xié)議。
表1 控制協(xié)議與圖象數(shù)據(jù)傳輸協(xié)議
2.2 系統(tǒng)實(shí)現(xiàn)
控制命令的數(shù)據(jù)量比較小,且要求傳輸可靠性高,實(shí)時(shí)性好,在對(duì)單臺(tái)和多臺(tái)服務(wù)器控制過程中使用靈活,數(shù)據(jù)文件也要求傳輸?shù)母呖煽啃?,因此本系統(tǒng)在傳輸層選擇TCP協(xié)議?;赥CP協(xié)議的Winsock技術(shù)是C/S模型中的核心技術(shù),有阻塞和非阻塞兩種方式。阻塞方式使用簡(jiǎn)單,當(dāng)收發(fā)函數(shù)在被調(diào)用后一直要等到傳輸完畢或出錯(cuò)才能返回,阻塞期間,除了等待網(wǎng)絡(luò)操作的完成不能進(jìn)行任何操作;非阻塞方式又稱異步方式,數(shù)據(jù)收發(fā)函數(shù)調(diào)用后立即返回,當(dāng)網(wǎng)絡(luò)傳輸完成后,Winsock給應(yīng)用程序發(fā)送一個(gè)消息,通知操作完成,可以根據(jù)發(fā)送的消息傳出的參數(shù)判斷操作是否正常,這種方式下,關(guān)鍵的問題是如何確定網(wǎng)絡(luò)事件何時(shí)發(fā)生。Winsock提供了一種WSAEventSelect異步L/O模型,它是經(jīng)由事件對(duì)象句柄通知的,允許應(yīng)用程序在一個(gè)或者多個(gè)套接字上接收基于事件的網(wǎng)絡(luò)通知,接收FD_XXX類型的網(wǎng)絡(luò)事件。
另外,利用多線程進(jìn)行程序設(shè)計(jì)時(shí),要充分考慮到并發(fā)性、安全性等問題,才能提高程序及系統(tǒng)的效率。在bbbbbbs環(huán)境提供的一系列同步措施中,事件對(duì)象是比較靈活的,有受信和非受信兩種狀態(tài),只有事件對(duì)象受信才能激活線程工作。
下面代碼示例了服務(wù)器端利用Winsock技術(shù)以異步方式接收到控制命令,按定義的協(xié)議對(duì)命令進(jìn)行解釋,觸發(fā)線程執(zhí)行相應(yīng)的采集操作。

3 結(jié)束語(yǔ)
本系統(tǒng)根據(jù)Winsock編程原理,結(jié)合多線程編程技術(shù),針對(duì)外場(chǎng)光電測(cè)控設(shè)備實(shí)現(xiàn)的遠(yuǎn)程測(cè)控系統(tǒng),通過在專用工具軟件中添加相應(yīng)的遠(yuǎn)程控制命令,實(shí)現(xiàn)了不能或不適合直接由人工完成的操作,既可以提高效率又可以減少不必要的人員傷亡,在實(shí)際應(yīng)用中效果良好。這也為外場(chǎng)測(cè)控系統(tǒng)的網(wǎng)絡(luò)化奠定基礎(chǔ)。










