王傳軍,范玉峰,易衛(wèi)敏
(1. 中國科學(xué)院云南天文臺,云南 昆明 650011; 2. 中國科學(xué)院天體結(jié)構(gòu)與演化重點實驗室,云南 昆明 650011)
麗江2.4米望遠鏡TCS Sequencer程序的設(shè)計與開發(fā)*
王傳軍1,2,范玉峰1,2,易衛(wèi)敏1,2
(1. 中國科學(xué)院云南天文臺,云南 昆明 650011; 2. 中國科學(xué)院天體結(jié)構(gòu)與演化重點實驗室,云南 昆明 650011)
介紹了麗江2.4 m望遠鏡TCS Sequencer程序設(shè)計及開發(fā)的過程,并且對程序的調(diào)試和運行情況進行了總結(jié);同時還介紹了在該程序開發(fā)過程中學(xué)習(xí)到的Linux系統(tǒng)下編程的一些方法和經(jīng)驗。
TCS Sequencer;2.4 m望遠鏡;YFOSC
麗江2.4 m望遠鏡的控制系統(tǒng)采用了QNX實時操作系統(tǒng)和現(xiàn)場總線技術(shù),從底層的可編程邏輯控制(Programmable Logic Control, PLC)系統(tǒng),到望遠鏡的各個節(jié)點控制,直到上層的望遠鏡控制系統(tǒng)(Telescope Control System, TCS)基本實現(xiàn)了自動控制(圖1)。然而,為望遠鏡陸續(xù)配備的終端儀器的控制系統(tǒng)各自獨立,這就給觀測帶來了諸多的不便。在觀測的時候需要通過不同的用戶界面對望遠鏡和終端儀器進行分別的控制來實施觀測,工作繁瑣,同時也降低了觀測效率。
圖1 2.4 m望遠鏡控制系統(tǒng)結(jié)構(gòu)
Fig.1 The structure of the control system of the YNAO 2.4m telescope
此外,由于望遠鏡與觀測終端的控制系統(tǒng)相互獨立,一些由望遠鏡控制系統(tǒng)產(chǎn)生的信息,尤其是觀測者非常關(guān)心的望遠鏡指向和狀態(tài)信息、氣象數(shù)據(jù)等也就不能自動寫入觀測數(shù)據(jù)的FITS頭中,需要在進行數(shù)據(jù)處理的時候手動添加,增加了數(shù)據(jù)處理的難度。為了能夠自動生成完善的觀測數(shù)據(jù)的FITS頭信息,提高望遠鏡控制系統(tǒng)和觀測終端協(xié)同工作的能力從而提高觀測效率,就有必要參考現(xiàn)有的望遠鏡控制系統(tǒng)的結(jié)構(gòu)開發(fā)一套將望遠鏡和終端設(shè)備的控制相融合的程序。
云南暗弱天體光譜及成像儀(Yunnan Faint-Object Spectrograph and Camera, YFOSC)是目前2.4 m望遠鏡的主要觀測終端,它是由云南天文臺與哥本哈根大學(xué)尼爾斯·玻爾研究所(Niels·Bhor Institute)開發(fā)研制的,在安裝和調(diào)試過程中發(fā)現(xiàn)YFOSC使用了一套為觀測者編寫的Sequencer程序,實現(xiàn)對其
不同的部分進行統(tǒng)一的控制,如濾光片和光柵轉(zhuǎn)輪、快門、調(diào)焦機構(gòu)、相機控制器等,都可通過Sequencer控制[1]。Sequencer程序是針對其所有操作指令而開發(fā)的程序,每個底層硬件的控制對應(yīng)一個Sequencer程序,該Sequencer程序可以單獨執(zhí)行,也可以通過腳本執(zhí)行一系列的操作,從而提高程序的運行效率。比如一個從光譜觀測模式切換到成像觀測模式的腳本,可以完成設(shè)置CCD讀出區(qū)域、移出狹縫和光柵、切換濾光片等所有儀器操作。通過對云南暗弱天體光譜及成像儀的Sequencer程序的學(xué)習(xí)和使用,以及對2.4 m望遠鏡控制系統(tǒng)的研究,可以開發(fā)一套望遠鏡控制的TCS Sequencer程序,實現(xiàn)望遠鏡和云南暗弱天體光譜及成像儀控制系統(tǒng)的集成。將來這套TCS Sequencer同樣可以用于高色散光纖光譜儀、PI CCD等終端儀器與望遠鏡的集成控制。
本文主要介紹了TCS Sequencer程序的設(shè)計和開發(fā),以及在進行開發(fā)之前對望遠鏡和云南暗弱天體光譜及成像儀控制系統(tǒng)所做的分析和研究工作,并對目前TCS Sequencer程序的運行狀態(tài)進行總結(jié)。
TCS Sequencer程序開發(fā)的目的是針對望遠鏡控制系統(tǒng)的控制指令編寫Sequencer程序,利用Sequencer程序?qū)⑼h鏡的控制和云南暗弱天體光譜及成像儀終端設(shè)備的控制集成到同一套系統(tǒng)中。通過分析2.4 m望遠鏡控制系統(tǒng)的結(jié)構(gòu)(圖1)和云南暗弱天體光譜及成像儀終端控制系統(tǒng)的結(jié)構(gòu)[2],并結(jié)合北歐光學(xué)望遠鏡(Nordic Optic Telescope)控制系統(tǒng)與ALFOSC控制系統(tǒng)通過Sequencer程序集成的結(jié)構(gòu)[3-4],總結(jié)得出了2.4 m望遠鏡的TCS Sequencer程序系統(tǒng)的整體結(jié)構(gòu)(圖2)。
圖2 TCS Sequencer系統(tǒng)結(jié)構(gòu)
Fig.2 Block diagram of the TCS Sequencer
該系統(tǒng)具備以下的特點:
? 獨立性:系統(tǒng)設(shè)備相互獨立,Sequencer程序、望遠鏡控制系統(tǒng)等部分之間的交互都通過網(wǎng)絡(luò)進行,從而系統(tǒng)各個部分可以單獨開發(fā)、維護和升級;
? 數(shù)據(jù)庫為基礎(chǔ):盡可能地將與程序相關(guān)的望遠鏡狀態(tài)信息都寫入數(shù)據(jù)庫中,Sequencer程序通過訪問數(shù)據(jù)庫獲得相關(guān)的狀態(tài)信息。這樣既能通過數(shù)據(jù)庫實現(xiàn)對狀態(tài)信息更好的管理、維護,也為整個Sequencer程序系統(tǒng)提供了統(tǒng)一的狀態(tài)信息數(shù)據(jù)格式,更方便數(shù)據(jù)的訪問和使用;
? 易擴展性:通過局域網(wǎng)連接各個相互獨立的部分,所有的觀測數(shù)據(jù)也通過局域網(wǎng)進行存儲和訪問,系統(tǒng)具備更好的擴展性,如圖2中的氣象站系統(tǒng)就可以直接集成到Sequencer系統(tǒng)中,并且計劃建立的自動視寧度監(jiān)測儀(ADIMM)和云量監(jiān)測系統(tǒng)也將集成到系統(tǒng)中。
2.4 m望遠鏡由英國TTL(Telescope Technology Limits)公司生產(chǎn),TTL公司并沒有提供望遠鏡控制系統(tǒng)的底層代碼,不能通過修改控制系統(tǒng)實現(xiàn)TCS Sequencer。但TTL提供了一個望遠鏡控制系統(tǒng)網(wǎng)絡(luò)通信接口,和在此接口基礎(chǔ)上的控制測試程序TNT[5-6](Telescope Network Interface Tool)。在這之前該程序并未在2.4 m望遠鏡上使用過,在對其進行調(diào)試運行的時候發(fā)現(xiàn)該程序只提供了一個命令行形式的運行模式,使用該接口程序獲取望遠鏡信息的時候,需要人為手動的輸入指令。結(jié)合圖2中的TCS Sequencer程序運行的機制,現(xiàn)有的接口程序完全不能滿足要求,因此就有必要對其進行優(yōu)化升級。
圖3中對升級前后的網(wǎng)絡(luò)通信接口程序的流程進行了對比,升級后的接口程序在運行的時候充當服務(wù)器端,首先允許查詢望遠鏡狀態(tài)信息的客戶端程序與其建立UDP連接,然后接收客戶端程序發(fā)送過來的指令信息,并將該指令轉(zhuǎn)發(fā)給望遠鏡控制系統(tǒng),之后接收望遠鏡控制系統(tǒng)的反饋信息,并將得到的信息轉(zhuǎn)發(fā)給客戶端程序。在該運行模式下的接口程序就可以自動接收符合UDP協(xié)議的數(shù)據(jù)包,不需要人為干預(yù)。
圖3 更新前后的TNT程序流程圖比較
Fig.3 The flowcharts of the TNT programs before and after the upgrade
在網(wǎng)絡(luò)通信接口升級結(jié)束、客戶端可以通過該程序獲取望遠鏡狀態(tài)信息之后,為了對獲取的狀態(tài)信息進行更好的保存和管理,設(shè)計并建立了望遠鏡狀態(tài)信息數(shù)據(jù)庫Operation。望遠鏡狀態(tài)信息數(shù)據(jù)獲取、拆分、入庫的處理方法為:
- 客戶端程序每隔5 s通過網(wǎng)絡(luò)接口從望遠鏡控制系統(tǒng)獲取望遠鏡的狀態(tài)信息,并以字符串的形式寫入固定格式的文本文件中;
- 數(shù)據(jù)庫操作程序每隔5 s對文本文件進行讀取,并通過分析望遠鏡控制系統(tǒng)反饋信息的格式對其中的字符串數(shù)據(jù)進行拆分處理,拆出每個單獨的狀態(tài)信息值;
- 將拆分得到的狀態(tài)信息數(shù)據(jù)寫入指定的數(shù)據(jù)庫Operation的數(shù)據(jù)表TcsStatusNow中,其部分結(jié)構(gòu)如圖4。
圖4 TCSStautusNow數(shù)據(jù)表部分結(jié)構(gòu)
Fig.4 A part of the structural list of the data table ‘TCSStatusNOW’
在數(shù)據(jù)庫建立完成之后,又配置了該數(shù)據(jù)庫的網(wǎng)絡(luò)訪問功能,從而使得在望遠鏡的局域網(wǎng)內(nèi)都可以訪問該數(shù)據(jù)庫的數(shù)據(jù)。TCS Sequencer程序在運行的時候就是通過局域網(wǎng)訪問該數(shù)據(jù)庫內(nèi)相關(guān)的狀態(tài)信息,從而自行判斷是否得到了正確的執(zhí)行,望遠鏡是否執(zhí)行了對應(yīng)的動作。
TCS Sequencer程序的運行機制可以通過圖5表示。程序執(zhí)行的時候會將望遠鏡控制系統(tǒng)指令通過網(wǎng)絡(luò)通信接口程序(TNT)發(fā)送到望遠鏡控制系統(tǒng),然后由望遠鏡控制系統(tǒng)控制望遠鏡執(zhí)行相應(yīng)的動作,與此同時望遠鏡狀態(tài)信息數(shù)據(jù)庫會不斷更新。在指令發(fā)送成功之后,Sequencer程序就會查詢數(shù)據(jù)庫以確定指令是否得到了執(zhí)行,如果查詢的結(jié)果是已經(jīng)成功執(zhí)行就順利退出,否則就會報錯并退出。在此過程中,所有關(guān)鍵性的步驟信息都會以日志的形式寫入日志文件中。
Sequencer程序的開發(fā)主要經(jīng)過以下幾個過程:
首先,前面已經(jīng)提到Sequencer程序是針對每個指令進行開發(fā)的,即每條指令有一個與其對應(yīng)的Sequencer程序,因此在開發(fā)TCS Sequencer程序時就需要對常用的望遠鏡控制系統(tǒng)控制指令進行統(tǒng)計,分析其所實現(xiàn)的功能和運行的機制。在對TCS Sequencer程序進行命名的時候,既考慮與原有的望遠鏡控制系統(tǒng)指令保持統(tǒng)一性,又考慮與YFOSC Sequencer程序相區(qū)別,保證其在系統(tǒng)中是唯一的,從而使得熟悉望遠鏡控制系統(tǒng)指令的操作者很容易上手。表1列舉了幾個常用的望遠鏡控制系統(tǒng)指令對應(yīng)的Sequencer程序的情況。
圖5 TCS Sequencer程序運行機制Fig.5 The operation mechanism of the TCS Sequencer
表1 常用的TCS指令與對應(yīng)的Sequencer指令舉例Table 1 Frequently used TCS control commands and corresponding TCS-Sequencer programs
其次,為所有的Sequencer程序統(tǒng)一創(chuàng)建一個用來訪問數(shù)據(jù)庫的庫文件:libTcsStatusDBFuncs.so。該文件實現(xiàn)所有的數(shù)據(jù)庫查詢的操作,在Sequencer程序中只需要包含該庫文件,就可以通過很簡單的方法查詢數(shù)據(jù)庫中的狀態(tài)信息。如圖6的程序片段就展示了Sequencer程序foc在執(zhí)行過程中查詢數(shù)據(jù)庫從而判斷狀態(tài)的過程,只需要一條簡單的語句Telescope.secondary_mirror_status就可以查詢到所需數(shù)據(jù)。
最后,在Sequencer程序編寫完成之后,對其進行編譯、調(diào)試、運行,查找其中的錯誤和存在的問題并不斷優(yōu)化。在所有Sequencer程序都能運行之后,將其編譯生成的Sequencer指令放置到Y(jié)FOSC控制系統(tǒng)指定的目錄下,之后就可以從云南暗弱天體光譜及成像儀控制窗口中執(zhí)行Sequencer指令控制望遠鏡了。
圖6 foc程序片段
Fig.6 An example of the log of the running of the command ‘foc’
經(jīng)過2.4 m維護組在觀測過程中的測試,TCS Sequencer程序已經(jīng)能夠?qū)崿F(xiàn)對望遠鏡的控制,常用的望遠鏡控制指令如foc、mirr_open、goto等都已經(jīng)能夠得到正確的執(zhí)行,望遠鏡也能執(zhí)行對應(yīng)的動作。圖7展示了foc指令執(zhí)行的具體情況及相應(yīng)的日志更新情況。
圖7 foc執(zhí)行情況及日志
Fig.7 Execution details and log of ‘foc’
通過Sequencer程序的運行,已經(jīng)將望遠鏡的赤經(jīng)/赤緯、高度/方位、望遠鏡的狀態(tài)以及氣象數(shù)據(jù)等重要信息寫入云南暗弱天體光譜及成像儀的觀測數(shù)據(jù)的FITS頭中。如圖8,左邊部分就是目前已經(jīng)添加到FITS頭中的信息。今后還將繼續(xù)對云南暗弱天體光譜及成像儀的FITS頭進行規(guī)范化,根據(jù)望遠鏡的觀測用戶的反饋要求添加更多必須的信息,并刪除冗余的信息,從而更好地為觀測用戶服務(wù)。
圖8 YFOSC數(shù)據(jù)的FITS頭中添加的信息
Fig.8 Information added to thd FITS header of the YFOSC data
基于TCS Sequencer程序,繼續(xù)開發(fā)了用來將目標源導(dǎo)入狹縫的中心位置的腳本程序(slitoffset),該腳本可以通過對配置文件中狹縫的中心位置和目標源位置的對比,計算兩者的偏差值,根據(jù)底片比例尺計算望遠鏡需要微調(diào)的值(角秒),并通過調(diào)用Sequencer程序offby實現(xiàn)望遠鏡的微調(diào),最終實現(xiàn)將目標源導(dǎo)入狹縫中心位置的目的(圖9)。在使用該腳本之前,需要手動完成將目標源導(dǎo)入狹縫中的工作,過程中可能會由于操作誤差或計算誤差導(dǎo)致長時間不能將目標源狹縫中的情況,既增加了觀測時的工作量也影響了觀測效率。
圖9 slitoff腳本運行情況
Fig.9 An example of the log of the running of the script ‘slitoff’
在測試過程中還發(fā)現(xiàn)了一個問題,即用來獲取望遠鏡狀態(tài)信息的客戶端程序運行不是很穩(wěn)定,有的時候會由于某些原因而停止運行,從而導(dǎo)致TCS Sequencer無法正常運行。接下來會對該程序進行深入的測試,以找到問題并解決。
另外,目前望遠鏡的狀態(tài)信息入庫是通過兩個不同的程序來完成,中間還涉及讀寫文件的操作,這就影響到了整個系統(tǒng)運行的穩(wěn)定性。為了提高系統(tǒng)的穩(wěn)定性,嘗試把兩個程序合并,去掉中間的文件讀寫過程,直接從網(wǎng)絡(luò)端口獲取狀態(tài)信息,然后拆分數(shù)據(jù)并進行存入數(shù)據(jù)庫的操作。
在開發(fā)TCS Sequencer程序的過程中,主要借鑒了YFOSC Sequencer程序的運行機制,并在Linux系統(tǒng)下通過簡單、健壯的C語言實現(xiàn)基本的操作,所實現(xiàn)的程序具備較好的易用性。網(wǎng)絡(luò)通信方面,在TTL的望遠鏡控制系統(tǒng)網(wǎng)絡(luò)通信測試程序的基礎(chǔ)上進行二次開發(fā),開發(fā)出了適合TCS Sequencer要求的網(wǎng)絡(luò)通信接口,也通過C語言實現(xiàn)。
通過TCS Sequencer程序的開發(fā),將2.4 m望遠鏡的控制部分放到云南暗弱天體光譜及成像儀的控制系統(tǒng)中,實現(xiàn)了望遠鏡控制系統(tǒng)與云南暗弱天體光譜及成像儀控制系統(tǒng)的集成工作。在開發(fā)過程中學(xué)習(xí)并積累了Linux系統(tǒng)下編程的一些經(jīng)驗,今后將嘗試把Sequencer模式的程序應(yīng)用到2.4 m望遠鏡其它的終端設(shè)備中。
[1] Hens Marts. The FOSC motor control for YFOSC and YFU[S]. Niels Bohr Institute, 2010.
[2] T2-010-5501-000, 2.0m Telescope Operators Manual[S]. TTL, 2006.
[3] Jacob Wang Clasen. Proposed plan for YFOSC postprocessing implement (Ver 1.0) [S]. Nordic Optical Telescope, 2010.
[4] Nordic Optical Telescope. Guide to the ALFOSC Sequencer[EB/OL]. [2012-11-29]. http://www.not.iac.es/instruments/alfosc/SEQ/alfosc-seq.html.
[5] Mark Bowman, et al. Telescope control system network interface control document (Ver 2.4) [S]. TTL, 2007.
[6] Martyn Ford. Liverpool 2.0m telescope communication interface library user guide (Ver 0.16) [S]. TTL, 2001.
DesignandDevelopmentofaTCSSequencerfortheYNAO2.4mTelescope
Wang Chuanjun1,2, Fan Yufeng1,2, Yi Weimin1,2
(1. Yunnan Observatories, Chinese Academy of Sciences, Kunming 650011, China, Email: wcj@ynao.ac.cn; 2. Key Laboratory for the Structure and Evolution of Celestial Objects, Chinese Academy of Science, Kunming 650011, China)
The control system the YNAO 2.4m Telescope at Lijiang uses the QNX real-time operating system and the CAN-Bus technology, realizing auto control (from a PLC system) of all control nodes of the telescope except the Telescope Control System(TCS) at the top operational level. All the instruments constructed for this telescope have their own control systems, which were previously independent of the TCS. The independence caused inconvenience in observation. The inconvenience is that different control interfaces needed to be used separately to control the telescope and the instruments in a complicated and low efficiency way. Meanwhile, some useful information produced by the TCS, especially the pointing/status information of the telescope and the important weather information could not be automatically written into a result-image FITS header. This put the burden on an observer to add the information into the header offline, passing the inconvenience into the data proceeeing. In this paper we introduce the design and development of a TCS Sequencer for the 2.4m telescope, including the system structure and the data flows of its programs. With the TCS Sequencer we have integrated the control systems of the 2.4m telescope and the mounted YFOSC camera. Currently, the telescope pointing/status information and weather information can be automatically written into a result-image FITS header; observers can control the telescope and instruments through a common control interface. Consequently, in using the telescope observation efficiency has been improved and data processing has been simplified. We also give certain results of using the TCS Sequencer and its running status. During this work we have also learned how to write C programs under a Linux OS and how to access a MySQL Database through a C program.
TCS Sequencer; 2.4m Telescope; YFOSC
CN53-1189/PISSN1672-7673
TP311.11
A
1672-7673(2013)04-0378-08
國家自然科學(xué)基金 (10903028, 10978026);云南省基礎(chǔ)研究面上項目 (2009CD121) 資助.
2012-11-29;修定日期:2012-12-24
王傳軍,男,助理研究員. 研究方向:天文技術(shù)與方法. Email: wcj@ynao.ac.cn