国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

RTS2中新CCD類型擴展方法

2014-05-12 10:36衛(wèi)守林陳亞杰曹子皇
天文研究與技術 2014年3期
關鍵詞:調(diào)用命令望遠鏡

衛(wèi)守林,陳亞杰,梁 波,王 鋒,鄧 輝,戴 偉,曹子皇

(1.昆明理工大學云南省計算機技術應用重點實驗室,云南 昆明 650500;2.中國科學院云南天文臺,云南 昆明 650011)

RTS2中新CCD類型擴展方法

衛(wèi)守林1,陳亞杰1,梁 波1,王 鋒1,鄧 輝1,戴 偉1,曹子皇2

(1.昆明理工大學云南省計算機技術應用重點實驗室,云南 昆明 650500;2.中國科學院云南天文臺,云南 昆明 650011)

CCD是天文望遠鏡中最常見的觀測終端設備,也是望遠鏡自主控制系統(tǒng)中的重要組成部分。隨著天文望遠鏡自主觀測需求的不斷出現(xiàn)以及技術的快速發(fā)展,開源的RTS2軟件系統(tǒng)成為目前該領域研究中受到較多關注的系統(tǒng)之一。但RTS2支持的CCD設備較為有限,同時控制接口約定也相對固定。在針對部分特殊的CCD設備(如LAMOST中采用的32臺CCD設備、選址用的部分CCD設備)時,僅實現(xiàn)原有類的方法是不夠的。在深入分析RTS2源碼的基礎上,重點從參數(shù)、命令、協(xié)議擴展方面研究基于原有的Camera類,通過繼承的方法構造新的CCD類型,實現(xiàn)對LAMOST項目的CCD控制,取得了較好的效果,對在RTS2中集成望遠鏡系統(tǒng)其他類型設備也有較好的參考價值。

遠程控制;RTS2;CCD;擴展

CN53-1189/P ISSN1672-7673

遠程望遠鏡系統(tǒng)第2版[1](Remote Telescope System 2nd version,RTS2)是一個開放源碼的天文望遠鏡自主觀測軟件系統(tǒng),采用面向對象的C++開發(fā),具有良好的模塊化設計,組件之間的通信基于傳輸控制協(xié)議(Transmission Control Protocol,TCP),在分布式組件部署情況下能夠支持多CCD的集群控制[2]。

RTS2已經(jīng)可以支持諸多的設備或模塊,實現(xiàn)多種儀器設備如圓頂、望遠鏡、CCD的控制。在網(wǎng)址http://www.rts2.org/wiki/hw.start中可以查看RTS2目前支持的設備。從CCD設備來看,當前主要支持的CCD設備包含了SBIG、Andor、Apogee等十多種類型,顯而易見,針對國內(nèi)的天文望遠鏡諸如LAMOST、NVSTFAST等配置的大型望遠鏡的科學級CCD的控制需要,是RTS2當前無法支持的。由于控制的復雜性,RTS2中的CCD控制基類只提供了基礎的控制實現(xiàn),滿足不了實際觀測與CCD控制的要求。

本文正是在這樣的背景下開展相應的研究工作,在分析RTS2中CCD構建的基礎上,重點研究RTS2繼承和擴展新設備的方法,并以LAMOST CCD開發(fā)為例,從參數(shù)擴展、自定義方法、協(xié)議擴展幾方面探討基于RTS2的CCD控制擴展技術。

1 RTS2中CCD控制分析

RTS2體系中服務和設備是以組件的形式進行封裝,對程序可擴展性進行了較完善的考慮。所有的組件和服務都可以通過配置文件中進行配置,可以在任何時候開始工作、重啟或者停止,在這過程中不會影響系統(tǒng)其他模塊的使用。RTS2需要運行在Linux環(huán)境下,可進行分布式的部署,至少需要部署一個中心控制程序(CentralD),也可以部署多個中心控制程序。在每個中心控制程序中維護著系統(tǒng)中所有的設備連接、客戶端連接和服務連接,針對每一臺天文觀測設備都有一個后臺管理進程??蛻舳顺绦蚧蛘逺TS2本身提供的一些工具類,首先通過中心控制程序找到設備的地址,通過這個地址雙方建立Socket連接進行通信、接收或發(fā)送相應的數(shù)據(jù)[3]。

在RTS2的代碼體系結構中,所有的對象都繼承于rts2core∷Object,在該基類中只是提供了postEvent事件提交的方法,所有的設備驅動都是繼承于rts2core∷Device,并且作為守護程序運行,像rts2core∷Telescope是望遠鏡設備的基礎類,rts2core∷Camera是CCD相機設備的基礎類。在這些設備的基礎類中只是提供了設備的基本操作的框架,而針對特定一款新設備的驅動就需要繼承這些設備類并實現(xiàn)框架中的方法[4]。在RTS2的設計中,還特別考慮了所有可能的阻塞(Blocking)狀態(tài),以此確保系統(tǒng)內(nèi)的設備可以協(xié)調(diào)完成觀測任務。

RTS2中CCD的所有設備都繼承自rts2core∷Camera(在camd.h和camd.cpp中定義),在Camera的實現(xiàn)中大量使用虛函數(shù),不同的功能分別在不同層次的基類中實現(xiàn),設計中較少采用多重繼承的方法,所以源碼結構相對清晰易讀。實現(xiàn)新CCD類型的控制就需要繼承rts2core∷Camera類,rts2core∷Camera類及其父類都在rts2core的命名空間下,圖1是RTS2中Camera類的繼承關系。

圖1 RTS2中Camera類的繼承關系Fig.1 The heritage relations of the Class Camera in the RTS2

基類App中主要定義作為應用所需要處理的命令行參數(shù)的解析、初始化和幫助提示的工作?;怋lock負責維護網(wǎng)絡連接、定時器等?;怐aemon主要負責初始化守護進程、創(chuàng)建網(wǎng)絡監(jiān)聽、接收客戶端的連接。基類Device作為所有設備的基類,主要進行設備層的初始化工作,對CCD曝光、望遠鏡移動、數(shù)據(jù)讀出等阻塞狀態(tài)進行設置?;怱criptDevice是對設備當前運行的腳本進行處理?;怌amera是對CCD基本操作的封裝,包含了曝光命令、溫度設置等一系列操作。

在Camera類中,使用虛函數(shù)的方式定義了CCD相機的基本控制的方法。為了將新類型的CCD設備集成到RTS2體系中,需要對參數(shù)設置、初始化、命令行處理等多個部分的函數(shù)進行重寫。下面對在新類型CCD擴展中需要重寫的關鍵函數(shù)進行說明。

info():在收到info命令后觸發(fā)該函數(shù),收集設備的相關信息,并將信息發(fā)送到請求端。在新類型設備中可以設置需要發(fā)送給請求端的信息。在Camera和Daemon類中都有定義。

idle():在oneRunLoop函數(shù)中調(diào)用,在程序運行期間,oneRunLoop被無限次循環(huán)執(zhí)行,idle函數(shù)主要完成定時器清除工作,將連接從預備隊列移動到正式連接隊列,依次執(zhí)行連接上的idle函數(shù)。在Camera類中的idle函數(shù)檢查CCD曝光狀態(tài)和數(shù)據(jù)讀出。在新類型的CCD設備中可以根據(jù)CCD的曝光機制和數(shù)據(jù)讀出機制,重寫idle函數(shù)。

processOption():程序執(zhí)行時命令行參數(shù)解析處理函數(shù),通過重寫processOption函數(shù),增加新設備的命令行參數(shù)。在基類App、Daemon、Camera和Device類中有定義。

init():初始化函數(shù),完成設備在RTS2體系中網(wǎng)絡注冊、參數(shù)初始化操作,調(diào)用initHardware完成設備硬件的初始化工作。如自定義設備使用USB連接,可以重寫該函數(shù),完成對USB接口的初始化連接工作。

startExposure():開始曝光的函數(shù),在Camera類中被定義為純虛函數(shù),在自定義的設備類中是必需重寫的。在執(zhí)行該函數(shù)前會調(diào)用camStartExposure進行曝光條件的檢查,如設備是否正在曝光,對焦器是否正在移動,滿足曝光條件才能執(zhí)行該函數(shù)。

isExposing():重寫該函數(shù)返回,返回-2表示已經(jīng)曝光結束,返回其他大于0的值,表示距離曝光結束還有多少毫秒。

endExposure():當前曝光結束時調(diào)用該函數(shù),開始讀取數(shù)據(jù),將圖像數(shù)據(jù)存儲在文件系統(tǒng)中。

stopExposure():停止曝光函數(shù),將曝光隊列清空。通知所有的連接曝光已停止,在endExposure ()函數(shù)中調(diào)用,或者收到stopexpo命令時觸發(fā)。

readoutStart():準備開始讀取數(shù)據(jù),調(diào)用sendFirstLine函數(shù)設置圖像頭信息,在camReadout中被調(diào)用,在自定義CCD實現(xiàn)中,可以設置數(shù)據(jù)讀取前的初始化工作。

doReadout():讀取數(shù)據(jù)函數(shù),在Camera中是以純虛函數(shù)形式聲明,所以自定義CCD中必需實現(xiàn),通常是先調(diào)用markReadoutStart表示開始讀取,讀取數(shù)據(jù),然后調(diào)用sendReadoutData函數(shù)將數(shù)據(jù)發(fā)送出去。doReadout在checkReadouts函數(shù)中被調(diào)用。

endReadout():結束數(shù)據(jù)讀取,在checkReadouts函數(shù)中被調(diào)用,也是周期性地被調(diào)用,主要工作是對數(shù)據(jù)的清理,如果曝光隊列中還有等待命令,則會調(diào)用camExpose繼續(xù)曝光。自定義CCD中通常需要做一些資源釋放的操作。

setValue():設置設備參數(shù)值,通過客戶端或網(wǎng)絡連接可以設置設備的參數(shù)值,如曝光時間、溫度等,對于特定設備的參數(shù),可以重寫該函數(shù)完成參數(shù)的修改,通過網(wǎng)絡協(xié)議“X”關鍵字可以修改參數(shù)。

2 CCD控制擴展

在RTS2中,CCD組件的擴展主要是構建CCD的設備層的控制程序,包括了對CCD參數(shù)的擴展和對設備一系列操作的重寫,如開始曝光、停止曝光、判斷是否在曝光、開始讀數(shù)據(jù)、結束讀數(shù)據(jù)、讀取數(shù)據(jù)等。接下來從LAMOST CCD參數(shù)擴展、自定義方法、協(xié)議擴展幾方面探討基于RTS2的CCD控制擴展。

2.1 CCD參數(shù)擴展

在Camera中已經(jīng)定義了相機的基本參數(shù),比如芯片類型、曝光時間、讀出時間等參數(shù)。但針對特定的CCD,還需要定義該CCD專有的參數(shù),在LAMOST CCD類中,需要定義該設備特有的參數(shù)如讀出速率,讀出方式,紅、藍相機同步等參數(shù),參數(shù)的類型需要使用Value的繼承類(在value.h和value.cpp中定義),包含了字符串、整型、時間日期、浮點型、布爾型、列表選擇類型及天文中特有的方位角和高度值。如LAMOST項目中的CCD相機中增益的參數(shù)擴展可以增加如下變量:

在類的構造方法中完成參數(shù)值的默認設置,可以調(diào)用父類Daemon中的createValue函數(shù)完成。在每個設備中都維護著一個類型為CondValueVector的參數(shù)列表,createValue函數(shù)對參數(shù)進行初始值的設置并加入該列表中。每一個參數(shù)值可以包含以下幾個或多個狀態(tài)值:

RTS2_VALUE_FITS:是否將參數(shù)寫到FITS文件中。

RTS2_VALUE_AUTOSAVE:是否自動保存。

RTS2_VALUE_NEED_SEND:是否被在infoAll函數(shù)中發(fā)送。

RTS2_VALUE_WRITABLE:設置參數(shù)值是否可以被修改。

2.2 函數(shù)重寫與實現(xiàn)

RTS2中對CCD的關鍵操作包含了對CCD的參數(shù)設置、曝光命令的解析、數(shù)據(jù)讀出等操作。其中曝光命令的執(zhí)行最為關鍵,本節(jié)以曝光命令的解析為例說明新類型CCD對父類函數(shù)重寫的方法。

在RTS2中對曝光命令的處理是在commandAuthorized()函數(shù)中。請求端發(fā)送的命令首先在Connection對象的processLine函數(shù)中進行解析,如果無法解析則會調(diào)用command函數(shù),最后再調(diào)用commandAuthorized()函數(shù)進行解析,如系統(tǒng)中的命令無法滿足新類型設備的需求,可以通過重寫該函數(shù)完成自定義命令的實現(xiàn)。如下代碼為LAMOST CCD控制中該函數(shù)處理曝光命令的部分代碼。

在上段代碼中,首先判斷當前命令是否是曝光命令,如果是,判斷參數(shù)的個數(shù),緊接著判斷CCD到UCAM的網(wǎng)絡連接的狀態(tài),如果是連接的狀態(tài),則將命令轉發(fā)到UCAM的命令控制器中。如果在該函數(shù)中沒有滿足條件的命令關鍵字的解析過程,則調(diào)用Camera父類中commandAuthorized函數(shù)進行命令解析。

2.3 協(xié)議擴展

RTS2中各個組件間的通信是使用基于文本的傳輸控制協(xié)議[5]。通信兩端建立連接后,兩端是對等的,同時處理來自對方的請求和發(fā)送請求到對方。CCD設備進程啟動后建立動態(tài)監(jiān)聽端口,同時建立和中央監(jiān)控程序CentralD(默認端口為617)的連接,同時向CentralD發(fā)送注冊命令,注冊成功后設備的連接信息將保存在CentralD對象中,并且所有設備的網(wǎng)絡地址信息都在CentralD中進行注冊維護。設備到CentralD的連接定義為DevConnectionMaster,CentralD到設備的連接類型為Rts2ConnCentralD,兩者的通信過程如圖2。

客戶端(如rts2-mon)啟動后首先和CentralD建立連接,發(fā)送登錄命令到CentralD,CentralD會將注冊過的設備信息發(fā)送到客戶端,客戶端再和設備建立連接,客戶端到設備的網(wǎng)絡協(xié)議解析過程如圖3。

圖2 CCD設備與CentralD通信過程Fig.2 A schematic diagram of the communication between the CCD and CentralD

圖3 客戶端到CCD設備的網(wǎng)絡協(xié)議解析過程Fig.3 A schematic diagram of the parsing process of the protocol from the Client to a CCD

RTS2的網(wǎng)絡協(xié)議規(guī)則由協(xié)議關鍵字和參數(shù)組成,協(xié)議關鍵字在block.h中定義,如PROTO_VALUE表示參數(shù)值更新,PROTO_STATUS表示狀態(tài)信息。另外還包含了沒有使用宏定義的協(xié)議關鍵字,如注冊、登錄協(xié)議使用Command封裝,在Connection類、設備類中也包含一些關鍵字,給源碼的分析帶來一些困難。在CCD設備基類Camera支持的關鍵命令中,目前包含了曝光(expose)、停止曝光(stopexpo)、停止讀出(stopread),如果需要增加新的命令,可以通過重寫commandAuthorized()函數(shù)完成。

3 LAMOST CCD控制實現(xiàn)

將LAMOST項目的CCD相機加入RTS2的控制體系中,首先需要在RTS2的源碼中src/camd目錄下增加lamost.cpp文件,創(chuàng)建類LamostCCD并繼承于Camera類,如class LamostCCD:public Camera。目前LAMOST的CCD使用UCAM的方法進行控制[6-7],LamostCCD類不直接和底層的硬件進行通信,而是和UCAM通過網(wǎng)絡連接發(fā)送命令實現(xiàn)對CCD的控制。由于UCAM控制CCD已相對成熟,通過這樣的方式,一方面可以減少出錯的可能性,另一方面,也可以減少底層控制代碼編寫的工作量。在LamostCCD類初始化時建立UCAM的通信連接,圖4為將LAMOST的CCD接入RTS2體系中,并通過RTS2的自帶工具rts2-mon進行控制。

圖4 使用rts2-mon對LAMOST CCD進行曝光控制Fig.4 An rts2-mon interface to send an exposure command to a CCD on the LAMOST

4 結束語

RTS2系統(tǒng)因為其開源特性同時有一定的用戶基礎,已經(jīng)成功應用于BOOTES、LSST等多個自主控制天文臺中,是國內(nèi)天文技術界目前較為受關注的系統(tǒng)之一。RTS2目前支持的主要CCD型號是天文愛好者所用的CCD設備,在對用戶接口、多通道CCD支持及CCD集群的組合觀測等方面還存在諸多不足,有較大的改善空間。本文在分析RTS2源碼的基礎上,研究如何擴展RTS2,將新類型的CCD設備加入RTS2的體系結構中,同時為其他類型的設備擴展提供了有價值的參考。

參考文獻:

[1] Remote Telescope System-2nd vesion[EB/OL].[2013-11-10].http://rts2.org/.

[2] 趙永恒.天文望遠鏡的自動觀測技術[J].科研信息化技術與應用,2012,3(4):11-16.

Zhao Yongheng.Technology of automatic observation of astronomical telescope[J].E-Science Technology&Application,2012,3(4):11-16.

[3] Kubánek P,Jelínek M,F(xiàn)renchc J,et al.The RTS2 protocol[C]//Bridger A,Radziwill N M. Advanced Software and Control for Astronomy II:Proceedings of the SPIE.2008,7019:92-103.

[4] Kubánek P,Jelínek M,Vítek S,et al.RTS2:a powerful robotic observatory manager[C]// Lewis H,Bridge A.Advanced Software and Control for Astronomy:Proceedings of the SPIE. 2006,6274.

[5] 程祖橋,鄧輝,王鋒,等.云南1米紅外太陽塔分布式CCD實時控制與圖像采集系統(tǒng)軟件研制[J].天文研究與技術——國家天文臺臺刊,2012,9(4):426-431.

Cheng Zuqiao,Deng Hui,Wang Feng,et al.Design of the distributed real-time control and image-acquisition software system for the YNAO 1m solar telescope[J].Astronomical Research&Technology——Publications of National Astronomical Observatories of China,2012,9(4): 426-431.

[6] 羅阿理,田園,宋靜,等.LAMOST觀測控制系統(tǒng)設計與實現(xiàn)[J].科研信息化技術與應用,2012,3(4):76-85.

Luo Ali,Tian Yuan,Song Jing,et al.Design and implementation of LAMOST observatory control system[J].E-Science Technology&Application,2012,3(4):76-85.

[7] 徐靈哲,徐欣圻.LAMOST網(wǎng)路控制系統(tǒng)結構[J].天文學進展,2006,24(3):200-209.

Xu Lingzhe,Xu Xinqi.The structure of network control system for LAMOST[J].Progress in Astronomy,2006,24(3):200-209.

Methods of Constructing New CCD Classes in the RTS2

Wei Shoulin1,Chen Yajie1,Liang Bo1,Wang Feng1,Deng Hui1,Dai Wei1,Cao Zihuang2
(1.Key Laboratory of Applications of Computer Technologies of the Yunnan Province,University of Science and Technology of Kunming,China,Email:wsl@cnlab.net;2.Yunnan Observatories,Chinese Academy of Sciences,Kunming 650011,China)

CCDs are among the most commonly used instruments on astronomical telescopes and are also important parts of autonomous control systems of astronomical telescopes.With emerging needs of automatic observations using astronomical telescopes and the rapid development of relevant technologies,the open-source RTS2 has become one of the software systems that are relatively more noticed in the field of automatic observations.However,the RTS2 supports rather limited types of CCDs,and its control-interface convention is rather fixed.The original settings of classes in the RTS2 are not sufficient to incorporate special CCD devices (such as the 32 CCDs of the LAMOST and some CCD devices for selecting observation sites).Based on our thorough analysis of the RTS2 source codes,we investigate methods of constructing new CCD classes from the original Camera class.The methods are mainly about extensions of parameters,commands,and protocols.The methods are applied to the control of the CCDs on the LAMOST telescope and achieve rather effective results. The work of this paper provides rather valuable references for incorporating other types of equipments on astronomical telescopes into the RTS2.

Remote Control;RTS2;CCD;Extension

TP311.1

A

1672-7673(2014)03-0281-06

2013-10-13;

2013-10-25

衛(wèi)守林,男,講師,碩士.研究方向:軟件架構,網(wǎng)絡安全,天文計算方法.Email:wsl@cnlab.net

猜你喜歡
調(diào)用命令望遠鏡
只聽主人的命令
核電項目物項調(diào)用管理的應用研究
系統(tǒng)虛擬化環(huán)境下客戶機系統(tǒng)調(diào)用信息捕獲與分析①
神奇的千里眼——望遠鏡
打造最大望遠鏡
移防命令下達后
超級望遠鏡頭
“趕緊送幾架望遠鏡過來!”等7則
這是人民的命令
利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
华宁县| 克山县| 盐源县| 八宿县| 襄城县| 航空| 莱芜市| 临汾市| 广丰县| 衡阳县| 阿克| 克什克腾旗| 孝义市| 宁德市| 昭平县| 平利县| 陇西县| 中西区| 镇沅| 平罗县| 右玉县| 正定县| 江口县| 东兰县| 丰县| 西乡县| 吴江市| 静海县| 大关县| 磐石市| 赫章县| 平定县| 安宁市| 宁都县| 香港 | 舞阳县| 蕲春县| 澄江县| 色达县| 隆子县| 水富县|