程祖橋,鄧 輝,王 鋒,,梁 波,季凱帆,王傳軍,許 駿
(1.昆明理工大學(xué)云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500;2.中國(guó)科學(xué)院國(guó)家天文臺(tái)/云南天文臺(tái),云南 昆明 650011)
1 m紅外太陽(yáng)塔位于云南省昆明市東南約60 km的云南撫仙湖太陽(yáng)物理觀測(cè)站,是我國(guó)本世紀(jì)初主要的地面光學(xué)及近紅外太陽(yáng)觀測(cè)設(shè)備,也是目前世界上口徑最大的真空太陽(yáng)望遠(yuǎn)鏡。太陽(yáng)塔主體設(shè)計(jì)為具有旋轉(zhuǎn)對(duì)稱(chēng)結(jié)構(gòu)的1 m口徑地平式真空系統(tǒng),工作波段0.3~2.5μm,未加自適應(yīng)系統(tǒng)前空間分辨率優(yōu)于0.3″。測(cè)量和研究太陽(yáng)磁場(chǎng)的精細(xì)結(jié)構(gòu)、高時(shí)間空間分辨率的磁場(chǎng)演化以及磁場(chǎng)和動(dòng)力學(xué)流場(chǎng)的關(guān)系是1 m紅外太陽(yáng)塔的主要科學(xué)目標(biāo)之一。同時(shí)得到太陽(yáng)活動(dòng)區(qū)的多條高時(shí)空分辨率譜線,從多個(gè)波段研究太陽(yáng)的結(jié)構(gòu)和物理特性,也是太陽(yáng)塔未來(lái)的工作任務(wù)[1]。
紅外太陽(yáng)塔主體建筑結(jié)構(gòu)和布局如圖1。主控機(jī)房部署在太陽(yáng)塔三樓,CCD安裝在四樓光譜儀平臺(tái)上。目前采用4臺(tái)科學(xué)CCD進(jìn)行多波段太陽(yáng)圖像采集,其中兩臺(tái)采集可見(jiàn)光光譜,一臺(tái)采集紅外光譜,一臺(tái)進(jìn)行Hα成像觀測(cè),因此,如何實(shí)現(xiàn)多臺(tái)CCD的遠(yuǎn)程集中統(tǒng)一實(shí)時(shí)監(jiān)控管理,是本文的一個(gè)研究重點(diǎn)。系統(tǒng)選用了德國(guó)PCO公司的高分辨率高速科學(xué)CCD相機(jī)PCO4000[2]和PCO2000[3],要求可見(jiàn)光采集速度達(dá)到3幀/秒(分辨率4008 ×2 672,14位AD),Hα采集速度達(dá)到5幀/秒(分辨率2048 ×2048,14位AD),紅外采集速度達(dá)到10幀/秒(分辨率640 ×512,14位AD),即每秒鐘需要處理的數(shù)據(jù)量大約分別為61 M、40 M、6.2 M,如何確保這些圖像數(shù)據(jù)的高速實(shí)時(shí)處理和存儲(chǔ),是論文需要解決的另一個(gè)關(guān)鍵問(wèn)題。
根據(jù)1 m紅外太陽(yáng)塔的實(shí)際結(jié)構(gòu)布局(見(jiàn)圖1),整個(gè)CCD數(shù)據(jù)采集控制軟件系統(tǒng)采取了主控-前置結(jié)構(gòu),4套前置系統(tǒng)部署于光譜儀平臺(tái)上的4臺(tái)前置計(jì)算機(jī),一套主控系統(tǒng)部署于主控計(jì)算機(jī)。系統(tǒng)總體結(jié)構(gòu)如圖2,4臺(tái)前置計(jì)算機(jī)通過(guò)CameraLink總線方式分別與CCD相連,主控計(jì)算機(jī)、前置計(jì)算機(jī)和數(shù)據(jù)中心通過(guò)千兆網(wǎng)絡(luò)實(shí)現(xiàn)互聯(lián)。
圖1 1 m紅外太陽(yáng)塔結(jié)構(gòu)布局Fig.1 Structural layout of the 1m Solar Tower
圖2 系統(tǒng)總體結(jié)構(gòu)Fig.2 Structure of the system
整個(gè)系統(tǒng)工作流程如圖3。觀測(cè)時(shí),觀測(cè)人員把CCD的參數(shù)配置和操作命令通過(guò)主控系統(tǒng)下達(dá)到前置系統(tǒng),前置系統(tǒng)把操作命令和參數(shù)內(nèi)容進(jìn)一步下達(dá)給相應(yīng)CCD。前置系統(tǒng)對(duì)采集的數(shù)據(jù)進(jìn)行包括格式轉(zhuǎn)換在內(nèi)的加工處理并保存到數(shù)據(jù)中心,同時(shí),前置系統(tǒng)每間隔10 s向主控系統(tǒng)發(fā)送一張采集的縮略圖,便于觀測(cè)人員對(duì)觀測(cè)狀況進(jìn)行實(shí)時(shí)監(jiān)控。
圍繞系統(tǒng)的工作流程,除了核心數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)等功能以外,在主控系統(tǒng)中還增加了日志管理、數(shù)據(jù)導(dǎo)出、系統(tǒng)復(fù)位等菜單功能。主控系統(tǒng)的界面功能如圖4。
圖3 系統(tǒng)工作流程Fig.3 Workflow of the system
整個(gè)系統(tǒng)采取主控-前置結(jié)構(gòu),實(shí)現(xiàn)對(duì)4臺(tái)CCD的集中控制以及高速圖像采集數(shù)據(jù)的處理和存儲(chǔ)。主控前置系統(tǒng)之間的通信協(xié)議設(shè)計(jì)、圖像數(shù)據(jù)的高速實(shí)時(shí)讀取處理、網(wǎng)絡(luò)環(huán)境下系統(tǒng)可靠性保證以及多CCD采集圖像的實(shí)時(shí)展示,成為軟件系統(tǒng)研制過(guò)程中需要重點(diǎn)考慮的幾個(gè)關(guān)鍵性問(wèn)題。
為了實(shí)現(xiàn)在一臺(tái)主控機(jī)的總控制下,4臺(tái)CCD各自獨(dú)立完成圖像數(shù)據(jù)的采集處理和存儲(chǔ),主控系統(tǒng)與前置系統(tǒng)之間必須有一套自定義的應(yīng)用層通信協(xié)議。系統(tǒng)設(shè)計(jì)了系統(tǒng)、控制、狀態(tài)以及參數(shù)配置4類(lèi)協(xié)議解決主控與前置系統(tǒng)之間的通信問(wèn)題(表1)。系統(tǒng)類(lèi)協(xié)議主要實(shí)現(xiàn)前置系統(tǒng)登錄、主控系統(tǒng)對(duì)前置系統(tǒng)的連接復(fù)位以及關(guān)閉前置系統(tǒng);通過(guò)控制類(lèi)協(xié)議,主控系統(tǒng)實(shí)現(xiàn)向前置系統(tǒng)下達(dá)圖像采集或者停止采集的命令;通過(guò)參數(shù)類(lèi)協(xié)議,前置系統(tǒng)向主控系統(tǒng)請(qǐng)求獲得CCD的配置參數(shù);主控系統(tǒng)通過(guò)狀態(tài)類(lèi)協(xié)議獲得前置系統(tǒng)狀態(tài)以及心跳信息。“OK”表示相應(yīng)操作成功,“FAILURE”表示相應(yīng)操作失敗。
圖4 主控系統(tǒng)界面功能Fig.4 Functions on the interface of the main-control system
表1 主控-前置系統(tǒng)通信協(xié)議設(shè)計(jì)Table 1 Communication protocols between the main-control and front-end systems
系統(tǒng)登陸協(xié)議中,前置系統(tǒng)向主控系統(tǒng)發(fā)送USER<username>,其中,<username>唯一標(biāo)識(shí)4臺(tái)CCD對(duì)應(yīng)的前置系統(tǒng)。
在參數(shù)配置協(xié)議中,由前置系統(tǒng)向主控系統(tǒng)發(fā)送GETCONFIG,請(qǐng)求CCD參數(shù)配置,主控系統(tǒng)回送SENDCONFIG <x0 y0 x1 y1> <Binningx> <Binningy> <Exposure> <Delay>。其中,<x0 y0 x1 y1>為圖像采集窗口區(qū)間,默認(rèn)為所對(duì)應(yīng)CCD的最大分辨率,視情況也可以采用ROI值,ROI、<x0 y0 x1 y1>、CCD最大分辨率之間關(guān)系如圖5,其中max1/max2表示CCD的最大分辨率;<Binningx> <Binningy>分別為水平方向和垂直方向面元,<Binningx>的取值范圍為1、2,<Binningy>的取值范圍為1、2、4、8[2-3]; <Exposure>為曝光時(shí)間參數(shù),默認(rèn)為20 ms。
圖5 <x0 y0 x1 y1>、ROI、CCD最大分辨率之間對(duì)應(yīng)關(guān)系Fig.5 Relations between the <x0 y0 x1 y1 > ,ROI,and the full resolution of CCD
系統(tǒng)主要選用了德國(guó)的PCO4000以及PCO2000相機(jī)。為了提高圖像采集速度,這兩款相機(jī)均支持雙模數(shù)轉(zhuǎn)換器(ADC)以及多緩存設(shè)計(jì),最多可以支持8 個(gè)緩存[4]。試驗(yàn)數(shù)據(jù)[4](表2)表明,在同樣的32M采樣頻率下,雙ADC的圖像處理速度比單ADC至少快70%,而雙緩存只比單緩存快7%,因此,實(shí)際系統(tǒng)中采用了雙緩存雙ADC的設(shè)計(jì)方案。兩塊緩存空間交替接收來(lái)自CCD的數(shù)據(jù)并進(jìn)行相應(yīng)的處理和存儲(chǔ),節(jié)省了任務(wù)間的相互等待耗費(fèi)的資源和時(shí)間。PCO相機(jī)開(kāi)發(fā)包中跟緩存以及ADC管理相關(guān)的函數(shù)有 PCO_AllocateBuffer、PCO_AddBuffer、PCO_FreeBuffer以及 PCO_SetADCOperation 等[4]。
表2 不同緩存和ADC個(gè)數(shù)組合下的采集存儲(chǔ)速度對(duì)比[5]Table2 Comparison of acquisition speeds under different numbers of the buffers and ADC[5]
另外,在高速CCD圖像采集實(shí)現(xiàn)過(guò)程中,充分考慮到相機(jī)的高速采集特性以及Camera Link總線帶來(lái)的高速傳輸,采用適合于高速外設(shè)和內(nèi)存之間批量交換數(shù)據(jù)的DMA技術(shù),從相機(jī)內(nèi)存直接獲取圖像數(shù)據(jù),從而獲得與相機(jī)提供的采集速度相匹配的圖像處理速度。另外,在DMA模式下,數(shù)據(jù)的批量傳輸過(guò)程交由DMA卡控制,DMA卡代替CPU控制完成在快速設(shè)備與主存儲(chǔ)器之間的直接數(shù)據(jù)傳輸,因此,節(jié)省下來(lái)的CPU資源可以用于進(jìn)行圖像處理等其他任務(wù)。
在前置系統(tǒng)計(jì)算機(jī)配置為Intel Core I7 930、2.8 G主頻、8 M緩存、2 G內(nèi)存的情況下,經(jīng)實(shí)測(cè),可見(jiàn)光CCD圖像采集處理存儲(chǔ)最高速度為每分鐘277張圖(約4.6幀/秒),紅外CCD圖像采集處理存儲(chǔ)最高速度為每分鐘923張圖(約15幀/秒),Hα圖像采集處理存儲(chǔ)最高速度為263張圖(約4.4幀/秒),達(dá)到了系統(tǒng)的預(yù)期要求。
在整個(gè)系統(tǒng)中,主控機(jī)承擔(dān)了對(duì)4臺(tái)前置機(jī)的監(jiān)控管理以及采集圖像的實(shí)時(shí)顯示等任務(wù),前置機(jī)承擔(dān)了對(duì)CCD的直接控制、CCD圖像數(shù)據(jù)采集處理和存儲(chǔ)、CCD采集數(shù)據(jù)實(shí)時(shí)縮略圖生成、前置系統(tǒng)與主控系統(tǒng)間通信等任務(wù)。
為了提高系統(tǒng)的整體運(yùn)行效率,實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)有效處理,系統(tǒng)采用了多線程技術(shù)[6]。在前置系統(tǒng)中設(shè)計(jì)了3類(lèi)線程,即Socket線程、數(shù)據(jù)采集線程、數(shù)據(jù)處理存儲(chǔ)以及縮略圖處理線程。其中,Socket線程負(fù)責(zé)與主控系統(tǒng)間的通信以及對(duì)CCD的控制,縮略圖處理線程負(fù)責(zé)每間隔10 s生成一幅縮略圖發(fā)送給主控系統(tǒng)。為主控系統(tǒng)設(shè)計(jì)了Socket線程,負(fù)責(zé)與前置系統(tǒng)的通信以及縮略圖的接收展現(xiàn)。多線程的設(shè)計(jì),解決了任務(wù)的并行問(wèn)題,提高了整個(gè)系統(tǒng)的運(yùn)行效率。同時(shí),多線程程序設(shè)計(jì)中,線程間數(shù)據(jù)共享可能造成數(shù)據(jù)沖突是必須重視的一個(gè)問(wèn)題,系統(tǒng)采取臨界區(qū)避免數(shù)據(jù)沖突的發(fā)生。
為了確保網(wǎng)絡(luò)環(huán)境下整體系統(tǒng)的可靠性,前置系統(tǒng)與主控系統(tǒng)間傳輸層通信采用了傳輸控制協(xié)議(Transmission Control Protocol,TCP),主控系統(tǒng)開(kāi)放6000號(hào)端口,通過(guò)套接字實(shí)現(xiàn)主控系統(tǒng)和前置系統(tǒng)之間控制信息和數(shù)據(jù)傳輸。
TCP/IP協(xié)議族[7]的傳輸層包括TCP協(xié)議和用戶(hù)數(shù)據(jù)包協(xié)議(User Datagram Protocol,UDP)兩種,TCP協(xié)議是一種面向連接的可靠的傳輸層協(xié)議,TCP協(xié)議采用能夠使系統(tǒng)獲得比UDP協(xié)議更為可靠的數(shù)據(jù)傳輸。但是,在前置系統(tǒng)機(jī)器故障、前置系統(tǒng)非正常退出以及網(wǎng)絡(luò)故障的情況下,可能會(huì)造成TCP的死連接,故障得不到及時(shí)處理和恢復(fù),影響整個(gè)系統(tǒng)的正常運(yùn)行。為了解決這一問(wèn)題,在系統(tǒng)中增加了心跳檢測(cè),前置系統(tǒng)每間隔10 s向主控系統(tǒng)發(fā)送一次心跳信息,如果主控系統(tǒng)連續(xù)兩次沒(méi)有收到心跳信息則認(rèn)為前置系統(tǒng)連接斷開(kāi),進(jìn)行相應(yīng)的報(bào)警和故障處理。
主控系統(tǒng)同時(shí)承擔(dān)了系統(tǒng)操控和4臺(tái)CCD圖像的實(shí)時(shí)顯示功能,因此,采用雙屏幕設(shè)計(jì)。主屏幕展現(xiàn)系統(tǒng)操作菜單、4臺(tái)CCD的實(shí)時(shí)參數(shù)狀態(tài)信息以及操作日志信息,如圖6,副屏幕實(shí)時(shí)顯示來(lái)自4臺(tái)CCD采集的圖像縮略圖,如圖7。
圖6 主控系統(tǒng)界面1Fig.6 Interface 1 of the main-control system
圖7 主控系統(tǒng)界面2Fig.7 Interface2 of the main-control system
系統(tǒng)工作過(guò)程中,前置系統(tǒng)圖像采集線程每隔10 s,發(fā)送一次數(shù)據(jù)到主控系統(tǒng)進(jìn)行顯示。對(duì)于一張分辨率為4008×2 672的圖像,原始數(shù)據(jù)達(dá)到21 G,不進(jìn)行任何處理直接發(fā)送,既浪費(fèi)網(wǎng)絡(luò)帶寬資源,又沒(méi)有必要。因此采取前置系統(tǒng)在發(fā)送數(shù)據(jù)前首先對(duì)原始圖像進(jìn)行抽樣處理并生成縮略位圖的策略。具體做法為:以4008×2 672分辨率圖像為例,對(duì)原始圖像數(shù)據(jù)進(jìn)行4×4的抽樣,則圖像變成1002×668,數(shù)據(jù)量變?yōu)樵瓉?lái)的由原來(lái)的21 G縮小為1.3 G左右,然后進(jìn)行格式轉(zhuǎn)換,生成可以直接顯示的位圖。
論文討論了1 m紅外太陽(yáng)塔多CCD分布式實(shí)時(shí)控制與圖像采集軟件系統(tǒng)的整體研制和實(shí)現(xiàn),對(duì)其中涉及的一些主要技術(shù)問(wèn)題進(jìn)行了詳細(xì)討論,完成的軟件系統(tǒng)目前已經(jīng)在1 m紅外太陽(yáng)塔投入實(shí)際觀測(cè)運(yùn)行,初步滿足了太陽(yáng)塔的日常觀測(cè)要求。
隨著太陽(yáng)塔建設(shè)的逐步推進(jìn),相應(yīng)的數(shù)據(jù)分析、數(shù)據(jù)發(fā)布系統(tǒng)會(huì)隨之研制并投入應(yīng)用,新觀測(cè)設(shè)備的加入、觀測(cè)模式的變化也會(huì)給本軟件系統(tǒng)帶來(lái)一定的影響。各系統(tǒng)之間的集成方式和互操作是一個(gè)不容忽視的問(wèn)題。另外,考慮到太陽(yáng)塔未來(lái)有可能會(huì)選用其它品牌的CCD,在下一步的研究工作中,還將對(duì)系統(tǒng)中CCD控制功能進(jìn)行進(jìn)一步封裝,以增強(qiáng)系統(tǒng)的通用性。
[1]劉忠,尤建圻,沈龍翔.1 m紅外太陽(yáng)塔[C]//2002中國(guó)天文望遠(yuǎn)鏡及儀器學(xué)術(shù)討論會(huì)論文集.北京:中國(guó)科學(xué)技術(shù)出版社,2003:272-276.
[2]PCO AG.PCO4000 Product Details [EB/OL].[2011-08-17].http://www.pco.de/sensitivecameras/pco4000/.
[3]PCO AG.PCO2000 Product Details [EB/OL].[2011-08-17].http://www.pco.de/sensitivecameras/pco2000/.
[4]PCO AG.pco.camera/SDK_Descriptionre [EB/OL].(2009-10-27) [2011-08-17].http://www.cookecorp.com/software/pco4000/.
[5]程租橋,鄧輝,王鋒,等.基于Camera Link總線的CCD高速圖像采集技術(shù) [J].天文研究與技術(shù)——國(guó)家天文臺(tái)臺(tái)刊,2011,8(4):363-368.Cheng Zuqiao,Deng Hui,Wang Feng,et al.A study on camera-link-based high-speed CCD image acquisition techniques [J].Astronomical Research & Technology——Publications of National Astronomical Observatories of China,2011,8(4):363-368.
[6]休斯.C++面向?qū)ο蠖嗑€程編程 [M].周良忠,譯.北京:人民郵電出版社,2003.
[7]W Richard Stevens.TCP/IP詳解[M].范建華,胥光輝,張濤,等譯.北京:機(jī)械工業(yè)出版社,2000.