999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

某靜止衛星海洋輻射計指向鏡的操控軟件設計

2020-08-03 01:50:22陳建棟房陳巖
計算機測量與控制 2020年7期

陳建棟,房陳巖,楊 靜

(1.上海濟物光電技術有限公司,上海 201815;2.中國科學院上海技術物理研究所,上海 2000833.上海德虹科學器材有限責任公司,上海 200083)

0 引言

靜止衛星海洋成像輻射計是用于在靜止軌道上進行水色定量化觀測的遙感儀器。其主要任務是海洋生態環境探測、海洋災害探測、海洋動力過程探測、大氣探測,為海洋科學研究等服務[1]。

靜止軌道水色衛星與地球同步,盡管只覆蓋全球部分區域,但是由于相對地球靜止,可將觀測周期由天提高至小時,實現高時間分辨率的對地觀測,尤其有助于復雜多變的短期過程研究[2]。雖然低軌海洋衛星時刻在監測海洋狀況,但是同一個地區每天只能觀測一次,看不到一天內的變化情況。無法觀測整個海洋現象一天內是如何動態變化的,因此需要發展靜止水色衛星[3]。靜止軌道遙感衛星探測具有高時間分辨率連續探測等優勢,已經成為當前國際遙感探測領域一個重要發展方向[4],而海洋衛星定軌與遙感定位精度是當前行業研究熱點[5]。

靜止衛星成像輻射計樣機GOR(geostationary ocean radiometer)采取二維指向鏡加濾光片輪和面陣探測器的技術方案。通過多角度、多譜段、多通道成像進一步提高穩定性和信噪比[6]。靜止衛星指向鏡基于超精密六軸轉臺,儀器依靠二維指向鏡做東西與南北方向的運動指向,實現覆蓋區域的觀測和調整。由于二維指向鏡是各個光學譜段的總輸入口,因此二維指向鏡的設計和控制運轉尤為重要。

本文借助GOR光學和機械平臺,設計了一款通過串口通訊控制海洋輻射計指向鏡轉動的操控軟件,完成轉臺實時操控和自動運轉控制以及顯示功能。

1 光學系統轉臺結構及原理

超精密6自由度PI(physik instrumente)公司定位轉臺應用于靜止衛星海洋成像輻射計預研項目的二維指向鏡。設計使用中,指向鏡的安裝位置如圖1所示,左側板為指向鏡的安裝位置,右側板為基座,中間六軸受控可伸縮,通過微機驅動控制達到左側板六自由度運動的效果。

圖1 超精密6自由度PI公司定位轉臺示意圖

在GOR項目中采用二維畫幅式成像模式,通過面陣靜態成像獲得靜態面陣圖像,通過指向鏡運動,實現一定范圍內視軸的指向。二維指向鏡有兩個轉軸,轉軸定義正交的X軸和Y軸,其中X軸需要轉動范圍±5°,Y軸需要轉動范圍±10°。指向鏡X、Y坐標軸的轉動通過機械結構設計演化為對PI轉臺的U軸和V軸的轉動控制。GOR依靠二維指向鏡實現觀測區域的調整和覆蓋,海洋探測目標通過光學系統傳遞給后端探測器, 光學系統如圖2所示。

圖2 光學系統示意圖

光學轉臺系統原理為:對成像目標探測需要作的視軸轉動,通過系統計算機處理器驅動控制精密機械轉臺運動,帶動光學指向鏡規律運轉,從而控制光路的傳遞方向,使探測器達到對探測區域的全覆蓋。

2 設計需求

根據外場試驗的光學要求,需要控制轉臺按5×5的矩陣點,按蛇形逐點運動到每個位置,停頓一段時間且該時間可調,以便于指向鏡的穩定和光學探測系統做一定的采集存儲圖像數據工作。在某些特殊情況,這樣的連續運動狀態,需要急停和繼續自動運轉,這就需要轉臺到某點位置作停留時,可以控制轉臺暫停當前狀態直到繼續自動運轉。

由于PI公司轉臺的基礎控制軟件是基于LabView的上位機軟件,再開發性低,不具備試驗所要求的軟件功能。而通過手動操作,又有操作困難,定時不準的問題。外場試驗效率較低。針對這一問題亟需開發一款具有定時運轉、定點停頓、多參數可調等功能的定制自動軟件。

3 操控軟件的全局設計

操控軟件采用結構化程序設計方法。基本思路是:把一個復雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們容易理解和處理的范圍之內。具體說采用自頂向下、逐步細化、模塊化設計、結構化編碼來保證得到結構化的程序[7]。在Windows應用程序中,對話框是應用程序界面的重要形式。不論是打開文件,還是查詢數據,以及數據交換時都會用到對話框,對話框是實現人機交互的一條途徑[8]。軟件使用VC++開發設計,為了便于編程嵌入小番茄控件。利用MFC應用程序向導創建對話框應用程序。在MFC應用程序向導可選單文檔、多文檔、模態和非模態對話框的創建。由于應用程序只是在單個對話框中實現特定功能,軟件設計選擇模態對話框的創建和顯示。使用MFC搭建軟件整體框架。添加操作按鈕和輸入輸出編輯框,軟件在功能上共分為四大模塊:通訊的建立和結束模塊、參數導入模塊、運動控制模塊(含位置初始化、自動運轉模塊、UV軸轉角定位控制、多線程技術子模塊)、數據顯示模塊。

4 軟件模塊的實現方法

操控軟件與PI的平臺控制模塊接口相互連接,PI的平臺控制模塊庫函數均是以動態鏈接庫的形式提供。動態鏈接庫通常用于封裝一些功能函數,在不公開源碼的情況下可以供其它應用程序開發使用。PI公司二次開發程序包中提供了動態鏈接庫文件PI_GCS2_DLL.dll和PI_GCS2_DLL.h[9]。操控軟件設計中需要插入和調用PI公司二次開發程序包中的庫函數文件。整個軟件工程項目建立后,將這兩個文件加入到項目工程文件。

在軟件功能模塊開發中需要調用函數庫的以下函數:與PI機構建立RS-232串口通訊連接函數PI_ConnectRS232(2,115200);斷開連接函數PI_CloseConnection(ID);移動某軸到某絕對位置函數PI_MOV(ID,axis, &dVal);得到實際位置函數PI_qPOS(ID, axis, &dPos);檢查軸系是否有所運轉函數PI_IsMoving(ID, axis, &bIsMoving)。其設計需求功能如圖3所示。

圖3 操控軟件功能圖

4.1 通訊的建立和結束模塊

操控軟件與PI的平臺控制模塊可以通過以太網或USB2.0或串口通訊方式。串口通訊連接簡便快捷,選擇異步串口通訊方式。在計算機中對RS-232端口轉接成RS-485,實際通過RS-485串行接口進行通訊,提高通訊距離和可靠性。通訊的建立和結束模塊實現過程如下,主要是連接串口和設置波特率,關閉串口。打開和關閉普通定時器。

4.2 參數導入模塊

操控軟件的參數導入模塊由跨度參數、自動運動模式參數和時間參數3部分組成。自動周期運動模塊U軸和V軸的單次跨度參數可以設置。PICTLDlg.cpp主程序中,初始化設置為0.3°,開始自動運動模式下,若需要設置新的運動跨度值,可以從界面編輯框輸入新值,程序從IDC_EDIT5編輯框獲取輸入值傳遞給U_step、V_step變量。

自動運動模式參數包括常用2×2、5×5模式和自設模式。由于試驗中常用的巡掃模式為2×2、5×5模式,因此程序中通過添加單選按鈕控件,用戶可選擇2×2、5×5和自設模式中的一種。自設模式運動頻次可以設置,需要通過該模式下的編輯框輸入2~10之內的整數輸入,這樣可以增加程序的使用靈活性和拓展性。該參數的輸入值具有記憶功能,在程序關閉后,巡掃模式修改按鈕按下后,參數存儲在9pictl.ini文件中。程序重新開啟,會初始化上次的模式選擇。

巡掃模式下,用戶需要作一段時間的圖像數據存儲和處理工作。轉臺運轉到特定點的坐標位置后,需要停頓一段時間。該參數定義為運動時間間隔InterTime。通過InterTime數據對象傳遞給調用的系統Sleep(1 000*InterTime)函數,調配停頓時間。

4.3 運動控制模塊

1)位置初始化:

自動運轉是基于光學指向鏡的初始化位置而運轉的。在自動運轉之前,需要找到指向鏡的零位。軟件設計回歸零位按鈕,通過定位控制函數OnReset()使六軸回歸零位。

2)自動運轉模塊:

操控軟件中的自動周期運轉模塊,采用循環結構程序設計。靜止衛星成像輻射計的指向鏡運轉模式缺省為5×5巡掃模式,而且該模式的程序控制具有典型性。本文以巡掃5×5運動模式來論述程序算法設計,自動巡掃5×5模式下PI轉臺運動軌跡為單點蛇行運轉。轉臺運動的軌跡和轉次計數如圖4所示。

圖4 定位轉臺5×5模式巡掃模式示意圖

采用增量計算當前運動軌跡下一點的坐標,通過函數PI_MOV(ID, axis, &dVal),移動某軸到某絕對位置。每次運動方向為直線,U、V兩軸并非同時運動。通過函數PI_MOV(ID, axis, &dVal),移動某軸到某絕對位置。在實際使用中橫向定義為U軸,縱向定義為V軸。采用for( )語句進行兩極嵌套循環。通過計算縱向坐標點g_j數據的單雙數,判斷U軸正向轉動還是反向轉動。UVSet_Upos為初始化的U軸坐標值。通過g_i變量的自動加一,完成0~1,1~2,2~3,3~4四次橫向轉動。反向轉動反之亦然。完成一行橫向運轉后,跳出第二級for循環,縱向轉動一個格點,g_j變量自動加一,若第一級for循環仍然滿足運行條件,則再次運行第二級for循環。依次反復,直到g_j變量由4變為5后,跳出兩極循環從而周期運動功能完成。

軟件編寫以用戶為本,在使用過程中編寫者與用戶相互溝通協調,軟件功能增量添加,逐步變大變復雜。在程序后續版本還附加停轉控制功能,二級for循環中適時加上0x55==StopFlag判斷,若用戶發出急停指令,通過break語句跳出兩級for循環,停止自動運轉模式。當用戶恢復狀態后可通過繼續按鈕來繼續進行當前自動運轉的狀態。

指向鏡的轉臺5×5模式巡掃模式自動運轉設計算法流程圖如圖5所示。

圖5 自動運轉5×5巡掃模式程序設計流程圖

自動運轉5×5巡掃模式程序代碼設計如下:

for (g_j=0;(g_j< 5)&&(0x55==StopFlag);)

{

//g_i為運動頻次

for(g_i=0; (g_i < 4)&&(0x55==StopFlag); )

{

char axis_u[] = "U";//控制U軸運動

if (0==g_j%2 )//j為0,2,4行正轉

!MoveTo(ID, axis_u, UVSet_Upos+Ustep*(g_i+1) ) ;

else//j為1,3行回轉

MoveTo(ID, axis_u, UVSet_Upos+Ustep*(3-g_i) ) ;

if (!(4==g_j && 3==g_i) )//最后一點不停頓

Sleep(1000*IntTime);//到位后停頓60s間隔時間

if (0xAA == StopFlag)//查詢暫停模式 break;

g_i++;

}

// V轉一下,j為4時V軸已轉完,內循環暫停

if ((g_j < 4)&&(0x55 == StopFlag))

{

char axis_v[] = "V";//轉到V軸運動

MoveTo(ID, axis_v, UVSet_Vpos+Vstep*(g_j+1) );

Sleep(1000*IntTime);//到位后停頓60s

}

if (0xAA == StopFlag)//查詢暫停模式

break;

g_j++;

}

3)轉軸定位控制模塊:

U軸的轉動控制操作,通過編輯框中輸入的定位數據。V軸類似。通過UV軸定位按鈕調用OnUVSet()函數,使得轉臺定位于給定的位置。

4)多線程控制:

由于在自動運轉控制程序中,使用了普通定時器函數SetTimer(1,20,NULL)并設置定時器的時間周期為20 ms。程序編寫之初,轉軸位置的顯示刷新時間也采用該定時周期。在控制軟件和轉臺機構聯機調試中,出現轉軸定時運轉的過程中,位置數據監顯卡頓,并非實時顯示,而是到一個位置鏡面機構停頓下來時,才顯示數據。分析原因是程序中普通定時器函數中,包含轉軸位置的顯示和循環轉動控制兩個任務。其中循環轉動控制任務比較費時,占用較多資源。在一個定時器循環中產生沖突,出現搶占資源情況。如果用戶在程序中需要同時實現多個操作,必須采用多線程技術[10],實現界面操作的實時控制和響應。因此軟件采用改進的方法,添加多線程控制函數。將位置數據顯示放在普通定時器里處理,自動運轉控制放在新創建的線程里處理。由于使用MFC搭建軟件整體框架,在MFC應用程序中,使用AfxBeginThread函數創建一個線程比較簡便易行。定義一個名為ThreadData的結構體數據類型,包含停頓時間參數,U向跨度和V向跨度。

自動運轉5×5巡掃模式控制下定義一個ThreadData數據類型的TD變量,把具體數據賦值給3個成員函數。使其在內存中占用一段連續空間。并擁有一個首地址&TD。然后通過AfxBeginThread函數創建轉臺運轉控制線程:AfxBeginThread(MoveThread,(LPVOID)&TD,0,0,0,NULL);

調用MoveThread()線程函數,通過首地址&TD傳遞數據參數,執行轉臺運轉循環。定義一個線程函數,用于執行轉臺運轉循環。

UINT MoveThread(LPVOID pParam)//轉臺運轉控制線程

{

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運動頻次

}

4.4 數據顯示模塊

數據顯示模塊包含UV軸實時位置監現和自動運轉頻次顯示組成。UV軸實時位置只要轉軸運轉,通過采集U_pos,V_pos數據。自動運轉模式下,設置了圖像計數器PictureNum,若運動一個位置,則圖像計數器自動加一,通過界面顯示,可使用戶得知當前運動頻次。通過設置一個20 ms的普通定時器,通過更新對話框中顯示數據,得到位置數據和運動頻次顯示。應用多線程程序設計之后,再次通過控制軟件和轉臺機構聯機調試,操控軟件能實時顯示和響應界面操作。之前界面拖動,數據顯示,界面最大化,最小化,操作卡頓的問題得以解決。

5 軟件實現與外場試驗

該靜止衛星指向鏡的操控軟件采用模塊化的程序設計方法,這種程序設計方法便于程序編寫,閱讀,修改和維護,能提高程序可靠性,保證程序的質量。該軟件設計是一個項目實戰過程,在設計中先搭好整體框架,再把各個模塊增量設計加入。軟件開發是與用戶相互溝通協調的過程,有一個增量添加逐步變大變復雜的過程。例如自動運轉模塊從逐行掃描模式,經過溝通改為蛇形掃描。軟件增加巡掃模式選擇、停轉控制、一鍵初始化零位功能。自動運轉通過多線程技術,解決多任務沖突、解決程序實時性、解決卡頓和等待問題。操控軟件設計完成后通過編譯調試,生成的操控應用軟件界面如圖6所示。

圖6 操控軟件界面圖

項目組在杭州灣大橋構建了基于海上塔臺的水體光譜連續采集系統。使用本文所設計的GOR操控軟件進行外場的多次試驗,基于現場觀測資料,研究人員系統評估了GOR的遙感監測精度;海上塔臺觀測的水體光譜資料已應用于我國“天宮二號”空間實驗室水色成像儀的在軌測試。靜止衛星指向鏡基于PI六軸轉臺特有的六柱伸縮機械結構,采用自動運轉操控軟件,到位后指向鏡自動停頓,時間可調,克服了大慣量轉動體在穩定位置附近微振動的問題[11],實現了靜止衛星指向鏡的高分辨率定位。

6 結束語

本文在Microsoft Visual C++6.0應用程序開發環境下,利用微軟基礎類庫MFC設計開發靜止衛星成像輻射計樣機(GOR)指向鏡的上位機操控軟件,軟件設計中通過RS-485串口通訊方法連接PI公司的超精密六軸轉臺驅動器及六軸轉臺。使用多線程技術,完成基于PI轉臺的GOR指向鏡巡掃模式自動控制,運轉多參數可調,數據顯示、自動運轉急停和繼續等多種功能。

通過外場多次試驗,充分驗證了本文所設計操控軟件的功能和可靠性,證實該軟件達到設計要求。該軟件大大提高了外場試驗效率,通過優化界面、功能嵌入,在后續項目開發中可以編寫多視圖的數據采集處理和操控的一體化軟件,體現了本軟件良好的兼容性和可擴充性,可以為靜止衛星海洋成像輻射計的型號化做好準備。

主站蜘蛛池模板: 四虎国产精品永久在线网址| 天天躁夜夜躁狠狠躁躁88| 国产一区亚洲一区| 欧美日韩高清| av性天堂网| 亚洲第一在线播放| 国产一区二区人大臿蕉香蕉| 中国国产A一级毛片| 国产簧片免费在线播放| 2019年国产精品自拍不卡| 99re精彩视频| 亚洲无码电影| 亚洲无码高清一区| 国产一级妓女av网站| 久久久无码人妻精品无码| 欧亚日韩Av| 四虎成人在线视频| 呦女亚洲一区精品| 久久精品aⅴ无码中文字幕| 亚洲综合婷婷激情| 国产午夜精品一区二区三| 日韩av资源在线| 欧美成人一区午夜福利在线| 99精品高清在线播放| 久久精品无码专区免费| 国产精品jizz在线观看软件| 福利视频一区| 97人人做人人爽香蕉精品| 一级一级一片免费| 亚洲有码在线播放| 狠狠色婷婷丁香综合久久韩国| 香蕉久久国产超碰青草| 99在线视频网站| 国产超碰在线观看| 欧美在线视频不卡| 综合色在线| 国产Av无码精品色午夜| 国产欧美日韩视频一区二区三区| 国产精品青青| 国产午夜人做人免费视频| 久久人与动人物A级毛片| 国产精品成人观看视频国产| 国内精自视频品线一二区| 亚洲国产成人久久精品软件| 中文字幕自拍偷拍| аⅴ资源中文在线天堂| 四虎精品免费久久| 男女男免费视频网站国产| 91青青草视频| 国产一区二区三区在线观看免费| 色综合激情网| 四虎综合网| 亚洲国产在一区二区三区| 二级特黄绝大片免费视频大片| 国产91特黄特色A级毛片| 午夜影院a级片| 不卡午夜视频| 国产成人精品一区二区免费看京| 999国内精品久久免费视频| 亚洲日韩AV无码一区二区三区人| 激情无码视频在线看| 久久久久无码精品国产免费| 免费A级毛片无码无遮挡| 深夜福利视频一区二区| 国产69精品久久| 在线看片免费人成视久网下载| 夜色爽爽影院18禁妓女影院| 亚洲最新在线| 亚洲精品无码久久毛片波多野吉| 天堂中文在线资源| 黄色a一级视频| 国产成人亚洲综合a∨婷婷| 5555国产在线观看| 99久久国产综合精品2020| 日韩精品一区二区三区免费在线观看| 欧美国产在线看| 91九色国产在线| 毛片免费在线视频| 在线不卡免费视频| 久久亚洲精少妇毛片午夜无码| 野花国产精品入口| 亚洲人成高清|