陳建棟,房陳巖,楊 靜
(1.上海濟(jì)物光電技術(shù)有限公司,上海 201815;2.中國(guó)科學(xué)院上海技術(shù)物理研究所,上海 2000833.上海德虹科學(xué)器材有限責(zé)任公司,上海 200083)
靜止衛(wèi)星海洋成像輻射計(jì)是用于在靜止軌道上進(jìn)行水色定量化觀測(cè)的遙感儀器。其主要任務(wù)是海洋生態(tài)環(huán)境探測(cè)、海洋災(zāi)害探測(cè)、海洋動(dòng)力過(guò)程探測(cè)、大氣探測(cè),為海洋科學(xué)研究等服務(wù)[1]。
靜止軌道水色衛(wèi)星與地球同步,盡管只覆蓋全球部分區(qū)域,但是由于相對(duì)地球靜止,可將觀測(cè)周期由天提高至小時(shí),實(shí)現(xiàn)高時(shí)間分辨率的對(duì)地觀測(cè),尤其有助于復(fù)雜多變的短期過(guò)程研究[2]。雖然低軌海洋衛(wèi)星時(shí)刻在監(jiān)測(cè)海洋狀況,但是同一個(gè)地區(qū)每天只能觀測(cè)一次,看不到一天內(nèi)的變化情況。無(wú)法觀測(cè)整個(gè)海洋現(xiàn)象一天內(nèi)是如何動(dòng)態(tài)變化的,因此需要發(fā)展靜止水色衛(wèi)星[3]。靜止軌道遙感衛(wèi)星探測(cè)具有高時(shí)間分辨率連續(xù)探測(cè)等優(yōu)勢(shì),已經(jīng)成為當(dāng)前國(guó)際遙感探測(cè)領(lǐng)域一個(gè)重要發(fā)展方向[4],而海洋衛(wèi)星定軌與遙感定位精度是當(dāng)前行業(yè)研究熱點(diǎn)[5]。
靜止衛(wèi)星成像輻射計(jì)樣機(jī)GOR(geostationary ocean radiometer)采取二維指向鏡加濾光片輪和面陣探測(cè)器的技術(shù)方案。通過(guò)多角度、多譜段、多通道成像進(jìn)一步提高穩(wěn)定性和信噪比[6]。靜止衛(wèi)星指向鏡基于超精密六軸轉(zhuǎn)臺(tái),儀器依靠二維指向鏡做東西與南北方向的運(yùn)動(dòng)指向,實(shí)現(xiàn)覆蓋區(qū)域的觀測(cè)和調(diào)整。由于二維指向鏡是各個(gè)光學(xué)譜段的總輸入口,因此二維指向鏡的設(shè)計(jì)和控制運(yùn)轉(zhuǎn)尤為重要。
本文借助GOR光學(xué)和機(jī)械平臺(tái),設(shè)計(jì)了一款通過(guò)串口通訊控制海洋輻射計(jì)指向鏡轉(zhuǎn)動(dòng)的操控軟件,完成轉(zhuǎn)臺(tái)實(shí)時(shí)操控和自動(dòng)運(yùn)轉(zhuǎn)控制以及顯示功能。
超精密6自由度PI(physik instrumente)公司定位轉(zhuǎn)臺(tái)應(yīng)用于靜止衛(wèi)星海洋成像輻射計(jì)預(yù)研項(xiàng)目的二維指向鏡。設(shè)計(jì)使用中,指向鏡的安裝位置如圖1所示,左側(cè)板為指向鏡的安裝位置,右側(cè)板為基座,中間六軸受控可伸縮,通過(guò)微機(jī)驅(qū)動(dòng)控制達(dá)到左側(cè)板六自由度運(yùn)動(dòng)的效果。
圖1 超精密6自由度PI公司定位轉(zhuǎn)臺(tái)示意圖
在GOR項(xiàng)目中采用二維畫幅式成像模式,通過(guò)面陣靜態(tài)成像獲得靜態(tài)面陣圖像,通過(guò)指向鏡運(yùn)動(dòng),實(shí)現(xiàn)一定范圍內(nèi)視軸的指向。二維指向鏡有兩個(gè)轉(zhuǎn)軸,轉(zhuǎn)軸定義正交的X軸和Y軸,其中X軸需要轉(zhuǎn)動(dòng)范圍±5°,Y軸需要轉(zhuǎn)動(dòng)范圍±10°。指向鏡X、Y坐標(biāo)軸的轉(zhuǎn)動(dòng)通過(guò)機(jī)械結(jié)構(gòu)設(shè)計(jì)演化為對(duì)PI轉(zhuǎn)臺(tái)的U軸和V軸的轉(zhuǎn)動(dòng)控制。GOR依靠二維指向鏡實(shí)現(xiàn)觀測(cè)區(qū)域的調(diào)整和覆蓋,海洋探測(cè)目標(biāo)通過(guò)光學(xué)系統(tǒng)傳遞給后端探測(cè)器, 光學(xué)系統(tǒng)如圖2所示。
圖2 光學(xué)系統(tǒng)示意圖
光學(xué)轉(zhuǎn)臺(tái)系統(tǒng)原理為:對(duì)成像目標(biāo)探測(cè)需要作的視軸轉(zhuǎn)動(dòng),通過(guò)系統(tǒng)計(jì)算機(jī)處理器驅(qū)動(dòng)控制精密機(jī)械轉(zhuǎn)臺(tái)運(yùn)動(dòng),帶動(dòng)光學(xué)指向鏡規(guī)律運(yùn)轉(zhuǎn),從而控制光路的傳遞方向,使探測(cè)器達(dá)到對(duì)探測(cè)區(qū)域的全覆蓋。
根據(jù)外場(chǎng)試驗(yàn)的光學(xué)要求,需要控制轉(zhuǎn)臺(tái)按5×5的矩陣點(diǎn),按蛇形逐點(diǎn)運(yùn)動(dòng)到每個(gè)位置,停頓一段時(shí)間且該時(shí)間可調(diào),以便于指向鏡的穩(wěn)定和光學(xué)探測(cè)系統(tǒng)做一定的采集存儲(chǔ)圖像數(shù)據(jù)工作。在某些特殊情況,這樣的連續(xù)運(yùn)動(dòng)狀態(tài),需要急停和繼續(xù)自動(dòng)運(yùn)轉(zhuǎn),這就需要轉(zhuǎn)臺(tái)到某點(diǎn)位置作停留時(shí),可以控制轉(zhuǎn)臺(tái)暫停當(dāng)前狀態(tài)直到繼續(xù)自動(dòng)運(yùn)轉(zhuǎn)。
由于PI公司轉(zhuǎn)臺(tái)的基礎(chǔ)控制軟件是基于LabView的上位機(jī)軟件,再開發(fā)性低,不具備試驗(yàn)所要求的軟件功能。而通過(guò)手動(dòng)操作,又有操作困難,定時(shí)不準(zhǔn)的問(wèn)題。外場(chǎng)試驗(yàn)效率較低。針對(duì)這一問(wèn)題亟需開發(fā)一款具有定時(shí)運(yùn)轉(zhuǎn)、定點(diǎn)停頓、多參數(shù)可調(diào)等功能的定制自動(dòng)軟件。
操控軟件采用結(jié)構(gòu)化程序設(shè)計(jì)方法。基本思路是:把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分階段進(jìn)行,每個(gè)階段處理的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶畠?nèi)。具體說(shuō)采用自頂向下、逐步細(xì)化、模塊化設(shè)計(jì)、結(jié)構(gòu)化編碼來(lái)保證得到結(jié)構(gòu)化的程序[7]。在Windows應(yīng)用程序中,對(duì)話框是應(yīng)用程序界面的重要形式。不論是打開文件,還是查詢數(shù)據(jù),以及數(shù)據(jù)交換時(shí)都會(huì)用到對(duì)話框,對(duì)話框是實(shí)現(xiàn)人機(jī)交互的一條途徑[8]。軟件使用VC++開發(fā)設(shè)計(jì),為了便于編程嵌入小番茄控件。利用MFC應(yīng)用程序向?qū)?chuàng)建對(duì)話框應(yīng)用程序。在MFC應(yīng)用程序向?qū)Э蛇x單文檔、多文檔、模態(tài)和非模態(tài)對(duì)話框的創(chuàng)建。由于應(yīng)用程序只是在單個(gè)對(duì)話框中實(shí)現(xiàn)特定功能,軟件設(shè)計(jì)選擇模態(tài)對(duì)話框的創(chuàng)建和顯示。使用MFC搭建軟件整體框架。添加操作按鈕和輸入輸出編輯框,軟件在功能上共分為四大模塊:通訊的建立和結(jié)束模塊、參數(shù)導(dǎo)入模塊、運(yùn)動(dòng)控制模塊(含位置初始化、自動(dòng)運(yùn)轉(zhuǎn)模塊、UV軸轉(zhuǎn)角定位控制、多線程技術(shù)子模塊)、數(shù)據(jù)顯示模塊。
操控軟件與PI的平臺(tái)控制模塊接口相互連接,PI的平臺(tái)控制模塊庫(kù)函數(shù)均是以動(dòng)態(tài)鏈接庫(kù)的形式提供。動(dòng)態(tài)鏈接庫(kù)通常用于封裝一些功能函數(shù),在不公開源碼的情況下可以供其它應(yīng)用程序開發(fā)使用。PI公司二次開發(fā)程序包中提供了動(dòng)態(tài)鏈接庫(kù)文件PI_GCS2_DLL.dll和PI_GCS2_DLL.h[9]。操控軟件設(shè)計(jì)中需要插入和調(diào)用PI公司二次開發(fā)程序包中的庫(kù)函數(shù)文件。整個(gè)軟件工程項(xiàng)目建立后,將這兩個(gè)文件加入到項(xiàng)目工程文件。
在軟件功能模塊開發(fā)中需要調(diào)用函數(shù)庫(kù)的以下函數(shù):與PI機(jī)構(gòu)建立RS-232串口通訊連接函數(shù)PI_ConnectRS232(2,115200);斷開連接函數(shù)PI_CloseConnection(ID);移動(dòng)某軸到某絕對(duì)位置函數(shù)PI_MOV(ID,axis, &dVal);得到實(shí)際位置函數(shù)PI_qPOS(ID, axis, &dPos);檢查軸系是否有所運(yùn)轉(zhuǎn)函數(shù)PI_IsMoving(ID, axis, &bIsMoving)。其設(shè)計(jì)需求功能如圖3所示。
圖3 操控軟件功能圖
操控軟件與PI的平臺(tái)控制模塊可以通過(guò)以太網(wǎng)或USB2.0或串口通訊方式。串口通訊連接簡(jiǎn)便快捷,選擇異步串口通訊方式。在計(jì)算機(jī)中對(duì)RS-232端口轉(zhuǎn)接成RS-485,實(shí)際通過(guò)RS-485串行接口進(jìn)行通訊,提高通訊距離和可靠性。通訊的建立和結(jié)束模塊實(shí)現(xiàn)過(guò)程如下,主要是連接串口和設(shè)置波特率,關(guān)閉串口。打開和關(guān)閉普通定時(shí)器。
操控軟件的參數(shù)導(dǎo)入模塊由跨度參數(shù)、自動(dòng)運(yùn)動(dòng)模式參數(shù)和時(shí)間參數(shù)3部分組成。自動(dòng)周期運(yùn)動(dòng)模塊U軸和V軸的單次跨度參數(shù)可以設(shè)置。PICTLDlg.cpp主程序中,初始化設(shè)置為0.3°,開始自動(dòng)運(yùn)動(dòng)模式下,若需要設(shè)置新的運(yùn)動(dòng)跨度值,可以從界面編輯框輸入新值,程序從IDC_EDIT5編輯框獲取輸入值傳遞給U_step、V_step變量。
自動(dòng)運(yùn)動(dòng)模式參數(shù)包括常用2×2、5×5模式和自設(shè)模式。由于試驗(yàn)中常用的巡掃模式為2×2、5×5模式,因此程序中通過(guò)添加單選按鈕控件,用戶可選擇2×2、5×5和自設(shè)模式中的一種。自設(shè)模式運(yùn)動(dòng)頻次可以設(shè)置,需要通過(guò)該模式下的編輯框輸入2~10之內(nèi)的整數(shù)輸入,這樣可以增加程序的使用靈活性和拓展性。該參數(shù)的輸入值具有記憶功能,在程序關(guān)閉后,巡掃模式修改按鈕按下后,參數(shù)存儲(chǔ)在9pictl.ini文件中。程序重新開啟,會(huì)初始化上次的模式選擇。
巡掃模式下,用戶需要作一段時(shí)間的圖像數(shù)據(jù)存儲(chǔ)和處理工作。轉(zhuǎn)臺(tái)運(yùn)轉(zhuǎn)到特定點(diǎn)的坐標(biāo)位置后,需要停頓一段時(shí)間。該參數(shù)定義為運(yùn)動(dòng)時(shí)間間隔InterTime。通過(guò)InterTime數(shù)據(jù)對(duì)象傳遞給調(diào)用的系統(tǒng)Sleep(1 000*InterTime)函數(shù),調(diào)配停頓時(shí)間。
1)位置初始化:
自動(dòng)運(yùn)轉(zhuǎn)是基于光學(xué)指向鏡的初始化位置而運(yùn)轉(zhuǎn)的。在自動(dòng)運(yùn)轉(zhuǎn)之前,需要找到指向鏡的零位。軟件設(shè)計(jì)回歸零位按鈕,通過(guò)定位控制函數(shù)OnReset()使六軸回歸零位。
2)自動(dòng)運(yùn)轉(zhuǎn)模塊:
操控軟件中的自動(dòng)周期運(yùn)轉(zhuǎn)模塊,采用循環(huán)結(jié)構(gòu)程序設(shè)計(jì)。靜止衛(wèi)星成像輻射計(jì)的指向鏡運(yùn)轉(zhuǎn)模式缺省為5×5巡掃模式,而且該模式的程序控制具有典型性。本文以巡掃5×5運(yùn)動(dòng)模式來(lái)論述程序算法設(shè)計(jì),自動(dòng)巡掃5×5模式下PI轉(zhuǎn)臺(tái)運(yùn)動(dòng)軌跡為單點(diǎn)蛇行運(yùn)轉(zhuǎn)。轉(zhuǎn)臺(tái)運(yùn)動(dòng)的軌跡和轉(zhuǎn)次計(jì)數(shù)如圖4所示。
圖4 定位轉(zhuǎn)臺(tái)5×5模式巡掃模式示意圖
采用增量計(jì)算當(dāng)前運(yùn)動(dòng)軌跡下一點(diǎn)的坐標(biāo),通過(guò)函數(shù)PI_MOV(ID, axis, &dVal),移動(dòng)某軸到某絕對(duì)位置。每次運(yùn)動(dòng)方向?yàn)橹本€,U、V兩軸并非同時(shí)運(yùn)動(dòng)。通過(guò)函數(shù)PI_MOV(ID, axis, &dVal),移動(dòng)某軸到某絕對(duì)位置。在實(shí)際使用中橫向定義為U軸,縱向定義為V軸。采用for( )語(yǔ)句進(jìn)行兩極嵌套循環(huán)。通過(guò)計(jì)算縱向坐標(biāo)點(diǎn)g_j數(shù)據(jù)的單雙數(shù),判斷U軸正向轉(zhuǎn)動(dòng)還是反向轉(zhuǎn)動(dòng)。UVSet_Upos為初始化的U軸坐標(biāo)值。通過(guò)g_i變量的自動(dòng)加一,完成0~1,1~2,2~3,3~4四次橫向轉(zhuǎn)動(dòng)。反向轉(zhuǎn)動(dòng)反之亦然。完成一行橫向運(yùn)轉(zhuǎn)后,跳出第二級(jí)for循環(huán),縱向轉(zhuǎn)動(dòng)一個(gè)格點(diǎn),g_j變量自動(dòng)加一,若第一級(jí)for循環(huán)仍然滿足運(yùn)行條件,則再次運(yùn)行第二級(jí)for循環(huán)。依次反復(fù),直到g_j變量由4變?yōu)?后,跳出兩極循環(huán)從而周期運(yùn)動(dòng)功能完成。
軟件編寫以用戶為本,在使用過(guò)程中編寫者與用戶相互溝通協(xié)調(diào),軟件功能增量添加,逐步變大變復(fù)雜。在程序后續(xù)版本還附加停轉(zhuǎn)控制功能,二級(jí)for循環(huán)中適時(shí)加上0x55==StopFlag判斷,若用戶發(fā)出急停指令,通過(guò)break語(yǔ)句跳出兩級(jí)for循環(huán),停止自動(dòng)運(yùn)轉(zhuǎn)模式。當(dāng)用戶恢復(fù)狀態(tài)后可通過(guò)繼續(xù)按鈕來(lái)繼續(xù)進(jìn)行當(dāng)前自動(dòng)運(yùn)轉(zhuǎn)的狀態(tài)。
指向鏡的轉(zhuǎn)臺(tái)5×5模式巡掃模式自動(dòng)運(yùn)轉(zhuǎn)設(shè)計(jì)算法流程圖如圖5所示。
圖5 自動(dòng)運(yùn)轉(zhuǎn)5×5巡掃模式程序設(shè)計(jì)流程圖
自動(dòng)運(yùn)轉(zhuǎn)5×5巡掃模式程序代碼設(shè)計(jì)如下:
for (g_j=0;(g_j< 5)&&(0x55==StopFlag);)
{
//g_i為運(yùn)動(dòng)頻次
for(g_i=0; (g_i < 4)&&(0x55==StopFlag); )
{
char axis_u[] = "U";//控制U軸運(yùn)動(dòng)
if (0==g_j%2 )//j為0,2,4行正轉(zhuǎn)
!MoveTo(ID, axis_u, UVSet_Upos+Ustep*(g_i+1) ) ;
else//j為1,3行回轉(zhuǎn)
MoveTo(ID, axis_u, UVSet_Upos+Ustep*(3-g_i) ) ;
if (!(4==g_j && 3==g_i) )//最后一點(diǎn)不停頓
Sleep(1000*IntTime);//到位后停頓60s間隔時(shí)間
if (0xAA == StopFlag)//查詢暫停模式 break;
g_i++;
}
// V轉(zhuǎn)一下,j為4時(shí)V軸已轉(zhuǎn)完,內(nèi)循環(huán)暫停
if ((g_j < 4)&&(0x55 == StopFlag))
{
char axis_v[] = "V";//轉(zhuǎn)到V軸運(yùn)動(dòng)
MoveTo(ID, axis_v, UVSet_Vpos+Vstep*(g_j+1) );
Sleep(1000*IntTime);//到位后停頓60s
}
if (0xAA == StopFlag)//查詢暫停模式
break;
g_j++;
}
3)轉(zhuǎn)軸定位控制模塊:
U軸的轉(zhuǎn)動(dòng)控制操作,通過(guò)編輯框中輸入的定位數(shù)據(jù)。V軸類似。通過(guò)UV軸定位按鈕調(diào)用OnUVSet()函數(shù),使得轉(zhuǎn)臺(tái)定位于給定的位置。
4)多線程控制:
由于在自動(dòng)運(yùn)轉(zhuǎn)控制程序中,使用了普通定時(shí)器函數(shù)SetTimer(1,20,NULL)并設(shè)置定時(shí)器的時(shí)間周期為20 ms。程序編寫之初,轉(zhuǎn)軸位置的顯示刷新時(shí)間也采用該定時(shí)周期。在控制軟件和轉(zhuǎn)臺(tái)機(jī)構(gòu)聯(lián)機(jī)調(diào)試中,出現(xiàn)轉(zhuǎn)軸定時(shí)運(yùn)轉(zhuǎn)的過(guò)程中,位置數(shù)據(jù)監(jiān)顯卡頓,并非實(shí)時(shí)顯示,而是到一個(gè)位置鏡面機(jī)構(gòu)停頓下來(lái)時(shí),才顯示數(shù)據(jù)。分析原因是程序中普通定時(shí)器函數(shù)中,包含轉(zhuǎn)軸位置的顯示和循環(huán)轉(zhuǎn)動(dòng)控制兩個(gè)任務(wù)。其中循環(huán)轉(zhuǎn)動(dòng)控制任務(wù)比較費(fèi)時(shí),占用較多資源。在一個(gè)定時(shí)器循環(huán)中產(chǎn)生沖突,出現(xiàn)搶占資源情況。如果用戶在程序中需要同時(shí)實(shí)現(xiàn)多個(gè)操作,必須采用多線程技術(shù)[10],實(shí)現(xiàn)界面操作的實(shí)時(shí)控制和響應(yīng)。因此軟件采用改進(jìn)的方法,添加多線程控制函數(shù)。將位置數(shù)據(jù)顯示放在普通定時(shí)器里處理,自動(dòng)運(yùn)轉(zhuǎn)控制放在新創(chuàng)建的線程里處理。由于使用MFC搭建軟件整體框架,在MFC應(yīng)用程序中,使用AfxBeginThread函數(shù)創(chuàng)建一個(gè)線程比較簡(jiǎn)便易行。定義一個(gè)名為ThreadData的結(jié)構(gòu)體數(shù)據(jù)類型,包含停頓時(shí)間參數(shù),U向跨度和V向跨度。
自動(dòng)運(yùn)轉(zhuǎn)5×5巡掃模式控制下定義一個(gè)ThreadData數(shù)據(jù)類型的TD變量,把具體數(shù)據(jù)賦值給3個(gè)成員函數(shù)。使其在內(nèi)存中占用一段連續(xù)空間。并擁有一個(gè)首地址&TD。然后通過(guò)AfxBeginThread函數(shù)創(chuàng)建轉(zhuǎn)臺(tái)運(yùn)轉(zhuǎn)控制線程:AfxBeginThread(MoveThread,(LPVOID)&TD,0,0,0,NULL);
調(diào)用MoveThread()線程函數(shù),通過(guò)首地址&TD傳遞數(shù)據(jù)參數(shù),執(zhí)行轉(zhuǎn)臺(tái)運(yùn)轉(zhuǎn)循環(huán)。定義一個(gè)線程函數(shù),用于執(zhí)行轉(zhuǎn)臺(tái)運(yùn)轉(zhuǎn)循環(huán)。
UINT MoveThread(LPVOID pParam)//轉(zhuǎn)臺(tái)運(yùn)轉(zhuǎn)控制線程
{
ThreadData *pPm = (ThreadData *)pParam;
unsigned short IntTime = pPm->InterTimeThread;
double Ustep = pPm->U_stepThread;
double Vstep = pPm->V_stepThread;
for (g_j=0; ; ){......} // g_j為V運(yùn)動(dòng)頻次
}
數(shù)據(jù)顯示模塊包含UV軸實(shí)時(shí)位置監(jiān)現(xiàn)和自動(dòng)運(yùn)轉(zhuǎn)頻次顯示組成。UV軸實(shí)時(shí)位置只要轉(zhuǎn)軸運(yùn)轉(zhuǎn),通過(guò)采集U_pos,V_pos數(shù)據(jù)。自動(dòng)運(yùn)轉(zhuǎn)模式下,設(shè)置了圖像計(jì)數(shù)器PictureNum,若運(yùn)動(dòng)一個(gè)位置,則圖像計(jì)數(shù)器自動(dòng)加一,通過(guò)界面顯示,可使用戶得知當(dāng)前運(yùn)動(dòng)頻次。通過(guò)設(shè)置一個(gè)20 ms的普通定時(shí)器,通過(guò)更新對(duì)話框中顯示數(shù)據(jù),得到位置數(shù)據(jù)和運(yùn)動(dòng)頻次顯示。應(yīng)用多線程程序設(shè)計(jì)之后,再次通過(guò)控制軟件和轉(zhuǎn)臺(tái)機(jī)構(gòu)聯(lián)機(jī)調(diào)試,操控軟件能實(shí)時(shí)顯示和響應(yīng)界面操作。之前界面拖動(dòng),數(shù)據(jù)顯示,界面最大化,最小化,操作卡頓的問(wèn)題得以解決。
該靜止衛(wèi)星指向鏡的操控軟件采用模塊化的程序設(shè)計(jì)方法,這種程序設(shè)計(jì)方法便于程序編寫,閱讀,修改和維護(hù),能提高程序可靠性,保證程序的質(zhì)量。該軟件設(shè)計(jì)是一個(gè)項(xiàng)目實(shí)戰(zhàn)過(guò)程,在設(shè)計(jì)中先搭好整體框架,再把各個(gè)模塊增量設(shè)計(jì)加入。軟件開發(fā)是與用戶相互溝通協(xié)調(diào)的過(guò)程,有一個(gè)增量添加逐步變大變復(fù)雜的過(guò)程。例如自動(dòng)運(yùn)轉(zhuǎn)模塊從逐行掃描模式,經(jīng)過(guò)溝通改為蛇形掃描。軟件增加巡掃模式選擇、停轉(zhuǎn)控制、一鍵初始化零位功能。自動(dòng)運(yùn)轉(zhuǎn)通過(guò)多線程技術(shù),解決多任務(wù)沖突、解決程序?qū)崟r(shí)性、解決卡頓和等待問(wèn)題。操控軟件設(shè)計(jì)完成后通過(guò)編譯調(diào)試,生成的操控應(yīng)用軟件界面如圖6所示。
圖6 操控軟件界面圖
項(xiàng)目組在杭州灣大橋構(gòu)建了基于海上塔臺(tái)的水體光譜連續(xù)采集系統(tǒng)。使用本文所設(shè)計(jì)的GOR操控軟件進(jìn)行外場(chǎng)的多次試驗(yàn),基于現(xiàn)場(chǎng)觀測(cè)資料,研究人員系統(tǒng)評(píng)估了GOR的遙感監(jiān)測(cè)精度;海上塔臺(tái)觀測(cè)的水體光譜資料已應(yīng)用于我國(guó)“天宮二號(hào)”空間實(shí)驗(yàn)室水色成像儀的在軌測(cè)試。靜止衛(wèi)星指向鏡基于PI六軸轉(zhuǎn)臺(tái)特有的六柱伸縮機(jī)械結(jié)構(gòu),采用自動(dòng)運(yùn)轉(zhuǎn)操控軟件,到位后指向鏡自動(dòng)停頓,時(shí)間可調(diào),克服了大慣量轉(zhuǎn)動(dòng)體在穩(wěn)定位置附近微振動(dòng)的問(wèn)題[11],實(shí)現(xiàn)了靜止衛(wèi)星指向鏡的高分辨率定位。
本文在Microsoft Visual C++6.0應(yīng)用程序開發(fā)環(huán)境下,利用微軟基礎(chǔ)類庫(kù)MFC設(shè)計(jì)開發(fā)靜止衛(wèi)星成像輻射計(jì)樣機(jī)(GOR)指向鏡的上位機(jī)操控軟件,軟件設(shè)計(jì)中通過(guò)RS-485串口通訊方法連接PI公司的超精密六軸轉(zhuǎn)臺(tái)驅(qū)動(dòng)器及六軸轉(zhuǎn)臺(tái)。使用多線程技術(shù),完成基于PI轉(zhuǎn)臺(tái)的GOR指向鏡巡掃模式自動(dòng)控制,運(yùn)轉(zhuǎn)多參數(shù)可調(diào),數(shù)據(jù)顯示、自動(dòng)運(yùn)轉(zhuǎn)急停和繼續(xù)等多種功能。
通過(guò)外場(chǎng)多次試驗(yàn),充分驗(yàn)證了本文所設(shè)計(jì)操控軟件的功能和可靠性,證實(shí)該軟件達(dá)到設(shè)計(jì)要求。該軟件大大提高了外場(chǎng)試驗(yàn)效率,通過(guò)優(yōu)化界面、功能嵌入,在后續(xù)項(xiàng)目開發(fā)中可以編寫多視圖的數(shù)據(jù)采集處理和操控的一體化軟件,體現(xiàn)了本軟件良好的兼容性和可擴(kuò)充性,可以為靜止衛(wèi)星海洋成像輻射計(jì)的型號(hào)化做好準(zhǔn)備。