王 維,毛銀盾,陳國平,張永帥,于 涌,羅 浩
(中國科學(xué)院上海天文臺,上海 200030)
在望遠(yuǎn)鏡控制軟件系統(tǒng)中,天文公共對象模型(Astronomy Common Object Model, ASCOM)平臺和遠(yuǎn)程望遠(yuǎn)鏡系統(tǒng)第2版(Remote Telescope System 2nd Version, RTS2)平臺具有很強(qiáng)的通用性與可擴(kuò)展性,它們?yōu)樘煳挠^測設(shè)備提供了接口標(biāo)準(zhǔn),其中前者基于Windows操作系統(tǒng),后者基于Linux操作系統(tǒng),目前兩者在通用望遠(yuǎn)鏡控制上的應(yīng)用比較廣泛。
天文公共對象模型是一個免費(fèi)開源的天文接口標(biāo)準(zhǔn),它在天文觀測設(shè)備與應(yīng)用軟件之間引入驅(qū)動層,為應(yīng)用軟件與天文觀測設(shè)備之間提供了一個免費(fèi)互通的中間橋梁,設(shè)備廠商只需要提供符合ASCOM標(biāo)準(zhǔn)的驅(qū)動程序,應(yīng)用軟件也只需要針對ASCOM進(jìn)行操作,無需考慮不同廠商、不同設(shè)備類型的特殊性。由于ASCOM采用了組件對象模型(Component Object Model, COM),極大提高了系統(tǒng)的可擴(kuò)展性和兼容性,便于望遠(yuǎn)鏡的遠(yuǎn)程操作和實(shí)時(shí)控制[1-2]。遠(yuǎn)程望遠(yuǎn)鏡系統(tǒng)第2版是一套開源的天文觀測管理系統(tǒng),基于Linux平臺,采用C/C++語言開發(fā),由于模塊化的組件開發(fā)技術(shù),使它具有可移植性,圍繞即插即用的設(shè)計(jì)思想,要求每個模塊和組件可以隨時(shí)進(jìn)入工作或退出,同時(shí)不影響系統(tǒng)的整體性能,特別是在有部分代碼出錯,任務(wù)無法繼續(xù)進(jìn)行時(shí),不會造成系統(tǒng)崩潰[3-4]。
FocusGEO是新一代地球同步軌道(Geosynchronous Orbit, GEO)動態(tài)監(jiān)視光學(xué)系統(tǒng)的簡稱,由中國科學(xué)院上海天文臺研究團(tuán)隊(duì)歷時(shí)兩年自行研制完成。望遠(yuǎn)鏡采用單機(jī)架三鏡筒赤道式結(jié)構(gòu)(見圖1),在軟件系統(tǒng)的支持下對臺站上空地球同步軌道帶反復(fù)掃描觀測,實(shí)現(xiàn)對地球同步軌道空間目標(biāo)編目管理和空間事件監(jiān)測。由于FocusGEO有許多特殊的硬件設(shè)備,這些設(shè)備缺乏標(biāo)準(zhǔn)的硬件底層驅(qū)動,同時(shí)運(yùn)行環(huán)境決定了驅(qū)動層和應(yīng)用層需要分別放置在不同的電腦上,因此無法像常規(guī)天文望遠(yuǎn)鏡一樣,設(shè)計(jì)開發(fā)基于RTS2或ASCOM的全自動軟件系統(tǒng)。需要從最底層開始設(shè)計(jì),采用合適的網(wǎng)絡(luò)通信,自行設(shè)計(jì)開發(fā)一套基于Windows環(huán)境的軟件系統(tǒng),實(shí)現(xiàn)望遠(yuǎn)鏡自動觀測、資料實(shí)時(shí)處理、數(shù)據(jù)傳輸與數(shù)據(jù)管理等過程。
FocusGEO軟件系統(tǒng)包括望遠(yuǎn)鏡控制軟件、CCD相機(jī)控制軟件、主控軟件、預(yù)處理軟件、地球同步軌道衛(wèi)星量度坐標(biāo)預(yù)報(bào)軟件和圖像壓縮及傳輸軟件共6部分。主控軟件與各設(shè)備驅(qū)動軟件采用用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol, UDP)進(jìn)行通信,同時(shí)獲取IP監(jiān)控?cái)z像頭的視頻流數(shù)據(jù),監(jiān)控望遠(yuǎn)鏡運(yùn)動情況。圖像壓縮及傳輸軟件實(shí)時(shí)進(jìn)行圖像壓縮及格式轉(zhuǎn)換,利用文件傳輸協(xié)議(File Transfer Protocol, FTP)將圖像和預(yù)處理結(jié)果主動推送至遠(yuǎn)端服務(wù)器,并即時(shí)統(tǒng)一錄入到甲骨文(Oracle)數(shù)據(jù)庫[4](圖2)。相較通常的望遠(yuǎn)鏡控制軟件僅服務(wù)于觀測的功能,我們的軟件系統(tǒng)集成了多核并行預(yù)處理、圖像實(shí)時(shí)壓縮及傳輸、資料入庫等功能,功能更加完備,自動化程度更高。
圖1FocusGEO望遠(yuǎn)鏡
Fig.1FocusGEO Telescope
圖2FocusGEO軟件系統(tǒng)框架圖
Fig.2The block diagram of FocusGEO software
望遠(yuǎn)鏡控制軟件和CCD相機(jī)控制軟件的功能相對單一,本文不再贅述其詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)過程。本文將對其余4部分軟件展開詳細(xì)描述,尤其是與觀測人員直接進(jìn)行人機(jī)交互的主控軟件。
系統(tǒng)軟件是實(shí)現(xiàn)FocusGEO高效準(zhǔn)確運(yùn)行的關(guān)鍵因素,需要滿足下面幾方面的重要要求:
(1)自動化程度要求高。
要實(shí)現(xiàn)FocusGEO對臺站上空地球同步軌道帶反復(fù)掃描觀測、數(shù)據(jù)預(yù)處理、圖像壓縮與數(shù)據(jù)傳輸?shù)热^程操作,高度自動化是對系統(tǒng)軟件的必然要求,以盡可能減少人工干預(yù)的頻次[5]。
(2)時(shí)序要求嚴(yán)。
采用圖像采集與數(shù)據(jù)實(shí)時(shí)處理并行工作的方法,確保所有進(jìn)程在時(shí)間上不發(fā)生沖突,除了嚴(yán)格計(jì)算每一個天區(qū)的觀測耗時(shí)、望遠(yuǎn)鏡每一次擺位耗時(shí)和每一次數(shù)據(jù)處理耗時(shí)等,還要設(shè)計(jì)嚴(yán)格的數(shù)據(jù)流向和時(shí)序關(guān)系。同時(shí)為了有效減少數(shù)據(jù)預(yù)處理耗時(shí),采用多核并行處理的方式。
(3)魯棒性要求強(qiáng)。
多個端口同時(shí)監(jiān)聽用戶數(shù)據(jù)報(bào)協(xié)議消息,避免端口收發(fā)指令時(shí)發(fā)生沖突,并且本軟件的UDP通信與FTP傳輸通信同時(shí)工作,做到各個通信線程互不干擾。對用戶的每一步操作都要進(jìn)行校驗(yàn),避免用戶操作不當(dāng)導(dǎo)致的系統(tǒng)異?;虮罎?。主控軟件需要與望遠(yuǎn)鏡軟件、CCD相機(jī)軟件和預(yù)處理軟件同時(shí)通信,端口號一一對應(yīng),不能錯發(fā)指令,指令的格式需要提前確認(rèn),并對接收到的指令進(jìn)行格式校驗(yàn),排除錯誤的消息。
(4)人機(jī)交互友好。
交互界面要做到簡潔直觀,軟件的交互需要提供最明確的需求,可以使用戶快速操作,即使不熟悉系統(tǒng),也能快速操作[5-6]。
根據(jù)上述需求,除了望遠(yuǎn)鏡控制和CCD相機(jī)控制軟件以外,軟件系統(tǒng)還包括任務(wù)解析控制、工況信息處理、圖像壓縮與傳輸、數(shù)據(jù)預(yù)處理和數(shù)據(jù)入庫共5個模塊或軟件,功能如下:
(1)任務(wù)解析控制
解析任務(wù)計(jì)劃的點(diǎn)位信息,發(fā)送時(shí)角、赤緯等位置參數(shù)給望遠(yuǎn)鏡軟件,控制望遠(yuǎn)鏡擺位、相機(jī)曝光,執(zhí)行觀測任務(wù)。
(2)工況信息處理
即時(shí)處理前端觀測設(shè)備的工況信息,處理過程包括工況信息獲取、顯示與傳輸?shù)龋约案鶕?jù)即時(shí)工況信息提供設(shè)備故障報(bào)警功能。
(3)圖像壓縮與傳輸
監(jiān)控CCD相機(jī)拍攝的FITS(Flexible Image Transport System)圖像,實(shí)時(shí)轉(zhuǎn)換為JPG格式,同時(shí)主動將壓縮圖像推送到服務(wù)器。
(4)數(shù)據(jù)預(yù)處理
接收主控軟件發(fā)送的啟動預(yù)處理的命令,在望遠(yuǎn)鏡進(jìn)行下一個天區(qū)觀測的同時(shí)進(jìn)行圖像處理,在下一個天區(qū)拍攝完成之前數(shù)據(jù)處理結(jié)束。
(5)數(shù)據(jù)入庫
該模塊在遠(yuǎn)程服務(wù)器終端運(yùn)行,其作用是建立Oracle數(shù)據(jù)庫,接收FTP傳輸?shù)奶幚頂?shù)據(jù)文件,做到數(shù)據(jù)的實(shí)時(shí)入庫。
FocusGEO正式運(yùn)行前,需先把主控軟件、望遠(yuǎn)鏡控制軟件和CCD相機(jī)控制軟件的IP地址以及端口號按照既定規(guī)則正確配置,保證UDP消息收發(fā)正常,并在服務(wù)器終端開啟FTP服務(wù)器,確保觀測圖像和數(shù)據(jù)處理結(jié)果的流程正常運(yùn)行。
正常工作時(shí),主控軟件根據(jù)任務(wù)計(jì)劃發(fā)送UDP消息給望遠(yuǎn)鏡控制軟件,望遠(yuǎn)鏡擺位到第1個天區(qū),確認(rèn)望遠(yuǎn)鏡到位后,CCD相機(jī)按預(yù)先設(shè)置的模式(包括曝光時(shí)間和拍攝幀數(shù))采集圖像,采集過程中,圖像轉(zhuǎn)換與FTP傳輸模塊監(jiān)控新生成的FITS圖像并轉(zhuǎn)換成JPG格式,通過FTP傳輸?shù)竭h(yuǎn)程服務(wù)器端。圖像采集結(jié)束后,CCD相機(jī)軟件發(fā)送拍攝結(jié)束的消息指令給主控軟件,系統(tǒng)開始下一個天區(qū)的觀測,與此同時(shí),調(diào)用數(shù)據(jù)預(yù)處理模塊開始執(zhí)行數(shù)據(jù)預(yù)處理,并行的工作方式大大縮減了工作時(shí)間,預(yù)處理結(jié)束后主動通過FTP將處理結(jié)果傳輸遠(yuǎn)程服務(wù)器端并立即入庫管理。整體執(zhí)行流程如圖3。
圖3FocusGEO軟件系統(tǒng)整體流程
Fig.3The flowchart of FocusGEO software
軟件系統(tǒng)采用C#語言作為編程語言,開發(fā)平臺為Visual Studio 2012,開發(fā)環(huán)境為.NET Framework 4.5框架。
主控軟件包含兩部分:(1)圖形用戶界面,實(shí)現(xiàn)與用戶的人機(jī)交互;(2)UDP控制端口,通過UDP集成控制望遠(yuǎn)鏡、CCD相機(jī)和圓頂?shù)仍O(shè)備。圖4為主控軟件工作狀態(tài)圖,點(diǎn)開始觀測按鈕后,自動執(zhí)行任務(wù)計(jì)劃,給望遠(yuǎn)鏡和CCD相機(jī)發(fā)送設(shè)備觀測參數(shù)指令,并判斷接收的望遠(yuǎn)鏡和相機(jī)反饋狀態(tài)消息進(jìn)行下一步操作,實(shí)現(xiàn)自動化觀測。由于設(shè)備故障是望遠(yuǎn)鏡系統(tǒng)運(yùn)行不可避免的問題,為了增加系統(tǒng)的可靠性,圖形用戶界面提供了工況信息模塊,實(shí)時(shí)顯示望遠(yuǎn)鏡、CCD相機(jī)和時(shí)間終端時(shí)統(tǒng)的狀態(tài)信息,工況信息的狀態(tài)欄中都有設(shè)備故障報(bào)警功能[7]。
在局域網(wǎng)內(nèi),針對本項(xiàng)目發(fā)送頻率低、報(bào)文很小的情況,同時(shí)又需要與6個網(wǎng)絡(luò)端口進(jìn)行通信的特點(diǎn),經(jīng)過認(rèn)真分析和比較UDP和TCP通信的優(yōu)劣,最終選擇UDP協(xié)議通訊,因?yàn)閁DP消耗資源少,響應(yīng)迅速,靈活性強(qiáng)且無需像TCP那樣建立連接消耗很長的時(shí)間。當(dāng)然UDP協(xié)議通訊存在一個固有的問題:當(dāng)發(fā)送頻率過高、報(bào)文過大時(shí)容易丟包。為此通過設(shè)置丟包重發(fā)機(jī)制和超時(shí)機(jī)制避免了上述問題,事實(shí)證明非常有效。為了避免主控軟件多個端口同時(shí)接收消息時(shí)發(fā)生沖突,同時(shí)監(jiān)聽多個網(wǎng)絡(luò)端口,采用委托的方式處理接收的UDP消息,當(dāng)某個端口接收消息后會觸發(fā)與該端口對應(yīng)的事件,并使用Dispatcher.BeginInvoke函數(shù)異步執(zhí)行觸發(fā)的事件,確保程序的主線程正常工作不受干擾。實(shí)現(xiàn)流程見圖5[8]。
圖4主控軟件工作狀態(tài)界面
Fig.4The screenshot of working status of the master software
圖5 UDP監(jiān)聽模塊流程圖Fig.5 The flowchart of UDP listening
CCD相機(jī)采集數(shù)據(jù)過程中,圖像壓縮與傳輸軟件實(shí)時(shí)監(jiān)控FITS文件的創(chuàng)建并進(jìn)行壓縮轉(zhuǎn)換,軟件采用FileSystemWatcher類監(jiān)測D:DATA文件夾內(nèi).fit后綴文件的創(chuàng)建,當(dāng)有圖像創(chuàng)建后觸發(fā)FileSystemEventHandler事件,事件中執(zhí)行圖像壓縮及轉(zhuǎn)換圖像格式的委托函數(shù),委托函數(shù)需新建一個EncoderParameter類的實(shí)例對象配置圖像質(zhì)量比。在確保大屏幕(分辨率1 920 × 1 080)能清晰顯示的前提下,同時(shí)滿足FTP快速傳輸?shù)囊螅?jīng)反復(fù)測試選擇85%的圖像質(zhì)量比最為合適 ,該參數(shù)下一幅5 M的FITS圖像壓縮成JPG格式后大小為400 K左右,壓縮比約為10∶1。壓縮后的JPG圖像通過FTP推送到遠(yuǎn)程服務(wù)器端,并將12個天區(qū)的圖像顯示到大屏幕上,同時(shí)數(shù)據(jù)立即錄入Oracle數(shù)據(jù)庫。觀測圖像監(jiān)測、壓縮和傳輸流程見圖6。
圖6圖像監(jiān)測、壓縮與傳輸流程圖
Fig.6The flowchart of images monitoring, compression and transmission
Oracle在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位,是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類微機(jī)環(huán)境。使用C#語言開發(fā)的應(yīng)用程序可以很方便地應(yīng)用Oracle數(shù)據(jù)庫,C#語言與Oracle數(shù)據(jù)庫之間的接口是指對Oracle數(shù)據(jù)表的調(diào)用與數(shù)據(jù)更改等操作[9-10]。
.NET Framework框架包括4個數(shù)據(jù)提供者,分別用于不同的數(shù)據(jù)庫標(biāo)準(zhǔn),本軟件針對Oracle數(shù)據(jù)庫使用Oracle.NET數(shù)據(jù)提供者,包括了如下 5個數(shù)據(jù)庫對象:(1)數(shù)據(jù)庫連接對象OracleConnecion,是一個與數(shù)據(jù)庫進(jìn)行連接的對象,包含與數(shù)據(jù)源創(chuàng)建連接的信息。(2)數(shù)據(jù)庫命令對象OracleCommand,用于對數(shù)據(jù)源發(fā)出命令。(3)命令構(gòu)造對象OracleCommandbuilder,用于構(gòu)建SQL命令。 (4)數(shù)據(jù)讀取對象OracleDatareader,專門用于讀取數(shù)據(jù)。(5)數(shù)據(jù)適配器對象OracleDataAdpter,取得數(shù)據(jù)并且在數(shù)據(jù)與數(shù)據(jù)集之間建立一座橋梁。
在程序中使用數(shù)據(jù)庫連接對象建立與數(shù)據(jù)庫的連接,實(shí)例化一個數(shù)據(jù)庫連接對象的實(shí)例對象con,連接字符串的參數(shù)在客戶端程序的名稱解析一致,使用con.Open()打開數(shù)據(jù)庫。應(yīng)用數(shù)據(jù)庫命令對象發(fā)送命令,對于從數(shù)據(jù)庫中檢索數(shù)據(jù)的語句可以使用OracleDataReader指令進(jìn)行操作,更多的使用Insert操作向數(shù)據(jù)表中寫入數(shù)據(jù)。操作完成后使用con.Close()關(guān)閉數(shù)據(jù)庫[10]。
本文介紹了FocusGEO系統(tǒng)軟件的總體框架,采取主控軟件集成控制望遠(yuǎn)鏡和CCD相機(jī)的基本思路,實(shí)現(xiàn)系統(tǒng)自動化運(yùn)行,減輕了觀測人員的工作強(qiáng)度。截止目前,F(xiàn)ocusGEO已經(jīng)在上海天文臺佘山科技園區(qū)開始正常觀測,系統(tǒng)軟件運(yùn)行狀況良好,在系統(tǒng)軟件的支持下,F(xiàn)ocusGEO實(shí)現(xiàn)了對臺站上空地球同步軌道帶的反復(fù)掃描觀測和數(shù)據(jù)實(shí)時(shí)處理,有效提高了系統(tǒng)可靠性和觀測效率。系統(tǒng)軟件全部為FocusGEO團(tuán)隊(duì)自行研發(fā),通過該工程的實(shí)現(xiàn),研究團(tuán)隊(duì)掌握遠(yuǎn)程控制、觀測與數(shù)據(jù)處理、圖像壓縮、數(shù)據(jù)庫設(shè)計(jì)與數(shù)據(jù)管理等方面的關(guān)鍵技術(shù),為實(shí)現(xiàn)非通用系統(tǒng)的自動化控制提供了技術(shù)支撐。
考慮到上海的天氣不利于光學(xué)觀測,計(jì)劃近期將FocusGEO搬遷至云南天文臺麗江觀測站,利用該觀測站良好的夜天光和旱季連續(xù)觀測的條件,開展常規(guī)觀測,獲取穩(wěn)定持續(xù)的觀測數(shù)據(jù)。同時(shí)為了實(shí)現(xiàn)在上海通過互聯(lián)網(wǎng)進(jìn)行遠(yuǎn)程控制,軟件系統(tǒng)的通信協(xié)議將升級為HTTP協(xié)議,為后續(xù)的國際觀測網(wǎng)做技術(shù)準(zhǔn)備。
致謝:感謝上海天文臺光學(xué)天文技術(shù)室參與本項(xiàng)目的部分觀測助手,他們在FocusGEO軟件系統(tǒng)的集成調(diào)試和試驗(yàn)觀測階段發(fā)現(xiàn)了不少問題,對軟件的持續(xù)改進(jìn)提供了大量有益的意見和建議。
參考文獻(xiàn):
[1]和壽圣, 辛玉新, 倫寶利, 等. 基于ASCOM和Modbus/TCP協(xié)議的天文圓頂控制系統(tǒng)[J]. 天文研究與技術(shù), 2017, 14(3): 356-362.
He Shousheng, Xin Yuxin, Lun Baoli, et al. Astronomical dome control system based on ASCOM and Modbus/TCP standard[J]. Astronomical Research & Technology, 2017, 14(3): 356-362.
[2]武鵬. 天文望遠(yuǎn)鏡的ASCOM開發(fā)技術(shù)研究[D]. 成都: 中國科學(xué)院光電技術(shù)研究所, 2015.
[3]梁波, 袁智, 鄧輝, 等. 一種基于異構(gòu)操作系統(tǒng)的RTS2 CCD相機(jī)擴(kuò)展方法[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2015, 12(4): 466-472.
Liang Bo, Yuan Zhi, Deng Hui, et al. A method to extend CCD operations across different operating systems in the RTS2[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2015, 12(4): 466-472.
[4]衛(wèi)守林, 曹子皇, 王峰, 等. 基于WebSocket的RTS2 Web控制研究[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2014, 11(4): 404-409.
Wei Shoulin, Cao Zihuang, Wang Feng, et al. A study of Web control of an RTS2 system based on the WebSocket[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2014, 11(4): 404-409.
[5]和壽圣, 范玉峰, 王傳軍. 基于ASCOM標(biāo)準(zhǔn)的CCD自動觀測系統(tǒng)[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2013, 10(4): 386-391.
He Shousheng, Fan Yufeng, Wang Chuanjun. An automatic CCD observation system based on the ASCOM Standard[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2013, 10(4): 386-391.
[6]陸棟寧, 黃磊, 陳穎為, 等. 85 cm天文望遠(yuǎn)鏡圓頂和天窗自動化系統(tǒng)研制[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2008, 5(4): 386-391.
Lu Dongning, Huang Lei, Chen Yinwei, et al. Research and development of the dome/slit control system for the 85cm reflector of NOAC-BNU[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2008, 5(4): 386-391.
[7]王武, 王金鎖, 姜崇國. 1.2米地平式望遠(yuǎn)鏡軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 云南天文臺臺刊, 1991(1): 53-60.
Wang Wu, Wang Jinsuo, Jiang Congguo. Design and accomplishment of the software for the control system of the 1.2-m horizontal telescope[J]. Publications of Yunnan Observatory, 1991(1): 53-60.
[8]姚正秋, 周必方, 汪達(dá)興. 1.2米紅外望遠(yuǎn)鏡[J]. 天文學(xué)報(bào), 1990, 31(3): 284-290.
Yao Zhengqiu, Zhou Bifang, Wang Daxing. 1.2m infrared telescope[J]. Acta Astronomica Sinica, 1990, 31(3): 284-290.
[9]鄭宇君. C#面向?qū)ο蟪绦蛟O(shè)計(jì)[M]. 北京: 人民郵電出版社, 2007.
[10]劉秋香, 張永勝. Visual C#下利用ADO.NET訪問SQL Server技術(shù)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2004(11): 66-69.
Liu Qiuxiang, Zhang Yongsheng. The technique of visiting SQL Server using ADO.NET in Visual C#[J]. Computer Systems & Applications, 2004(11): 66-69.