FocusGEO软件系统的设计与实现*
2018-04-12毛银盾陈国平张永帅
王 维,毛银盾,陈国平,张永帅,于 涌,罗 浩
(中国科学院上海天文台,上海 200030)
在望远镜控制软件系统中,天文公共对象模型(Astronomy Common Object Model, ASCOM)平台和远程望远镜系统第2版(Remote Telescope System 2nd Version, RTS2)平台具有很强的通用性与可扩展性,它们为天文观测设备提供了接口标准,其中前者基于Windows操作系统,后者基于Linux操作系统,目前两者在通用望远镜控制上的应用比较广泛。
天文公共对象模型是一个免费开源的天文接口标准,它在天文观测设备与应用软件之间引入驱动层,为应用软件与天文观测设备之间提供了一个免费互通的中间桥梁,设备厂商只需要提供符合ASCOM标准的驱动程序,应用软件也只需要针对ASCOM进行操作,无需考虑不同厂商、不同设备类型的特殊性。由于ASCOM采用了组件对象模型(Component Object Model, COM),极大提高了系统的可扩展性和兼容性,便于望远镜的远程操作和实时控制[1-2]。远程望远镜系统第2版是一套开源的天文观测管理系统,基于Linux平台,采用C/C++语言开发,由于模块化的组件开发技术,使它具有可移植性,围绕即插即用的设计思想,要求每个模块和组件可以随时进入工作或退出,同时不影响系统的整体性能,特别是在有部分代码出错,任务无法继续进行时,不会造成系统崩溃[3-4]。
FocusGEO是新一代地球同步轨道(Geosynchronous Orbit, GEO)动态监视光学系统的简称,由中国科学院上海天文台研究团队历时两年自行研制完成。望远镜采用单机架三镜筒赤道式结构(见图1),在软件系统的支持下对台站上空地球同步轨道带反复扫描观测,实现对地球同步轨道空间目标编目管理和空间事件监测。由于FocusGEO有许多特殊的硬件设备,这些设备缺乏标准的硬件底层驱动,同时运行环境决定了驱动层和应用层需要分别放置在不同的电脑上,因此无法像常规天文望远镜一样,设计开发基于RTS2或ASCOM的全自动软件系统。需要从最底层开始设计,采用合适的网络通信,自行设计开发一套基于Windows环境的软件系统,实现望远镜自动观测、资料实时处理、数据传输与数据管理等过程。
FocusGEO软件系统包括望远镜控制软件、CCD相机控制软件、主控软件、预处理软件、地球同步轨道卫星量度坐标预报软件和图像压缩及传输软件共6部分。主控软件与各设备驱动软件采用用户数据报协议(User Datagram Protocol, UDP)进行通信,同时获取IP监控摄像头的视频流数据,监控望远镜运动情况。图像压缩及传输软件实时进行图像压缩及格式转换,利用文件传输协议(File Transfer Protocol, FTP)将图像和预处理结果主动推送至远端服务器,并即时统一录入到甲骨文(Oracle)数据库[4](图2)。相较通常的望远镜控制软件仅服务于观测的功能,我们的软件系统集成了多核并行预处理、图像实时压缩及传输、资料入库等功能,功能更加完备,自动化程度更高。
图1FocusGEO望远镜
Fig.1FocusGEO Telescope
图2FocusGEO软件系统框架图
Fig.2The block diagram of FocusGEO software
望远镜控制软件和CCD相机控制软件的功能相对单一,本文不再赘述其详细设计和实现过程。本文将对其余4部分软件展开详细描述,尤其是与观测人员直接进行人机交互的主控软件。
1 系统设计
1.1 需求分析
系统软件是实现FocusGEO高效准确运行的关键因素,需要满足下面几方面的重要要求:
(1)自动化程度要求高。
要实现FocusGEO对台站上空地球同步轨道带反复扫描观测、数据预处理、图像压缩与数据传输等全过程操作,高度自动化是对系统软件的必然要求,以尽可能减少人工干预的频次[5]。
(2)时序要求严。
采用图像采集与数据实时处理并行工作的方法,确保所有进程在时间上不发生冲突,除了严格计算每一个天区的观测耗时、望远镜每一次摆位耗时和每一次数据处理耗时等,还要设计严格的数据流向和时序关系。同时为了有效减少数据预处理耗时,采用多核并行处理的方式。
(3)鲁棒性要求强。
多个端口同时监听用户数据报协议消息,避免端口收发指令时发生冲突,并且本软件的UDP通信与FTP传输通信同时工作,做到各个通信线程互不干扰。对用户的每一步操作都要进行校验,避免用户操作不当导致的系统异常或崩溃。主控软件需要与望远镜软件、CCD相机软件和预处理软件同时通信,端口号一一对应,不能错发指令,指令的格式需要提前确认,并对接收到的指令进行格式校验,排除错误的消息。
(4)人机交互友好。
交互界面要做到简洁直观,软件的交互需要提供最明确的需求,可以使用户快速操作,即使不熟悉系统,也能快速操作[5-6]。
1.2 系统功能
根据上述需求,除了望远镜控制和CCD相机控制软件以外,软件系统还包括任务解析控制、工况信息处理、图像压缩与传输、数据预处理和数据入库共5个模块或软件,功能如下:
(1)任务解析控制
解析任务计划的点位信息,发送时角、赤纬等位置参数给望远镜软件,控制望远镜摆位、相机曝光,执行观测任务。
(2)工况信息处理
即时处理前端观测设备的工况信息,处理过程包括工况信息获取、显示与传输等,以及根据即时工况信息提供设备故障报警功能。
(3)图像压缩与传输
监控CCD相机拍摄的FITS(Flexible Image Transport System)图像,实时转换为JPG格式,同时主动将压缩图像推送到服务器。
(4)数据预处理
接收主控软件发送的启动预处理的命令,在望远镜进行下一个天区观测的同时进行图像处理,在下一个天区拍摄完成之前数据处理结束。
(5)数据入库
该模块在远程服务器终端运行,其作用是建立Oracle数据库,接收FTP传输的处理数据文件,做到数据的实时入库。
1.3 系统流程
FocusGEO正式运行前,需先把主控软件、望远镜控制软件和CCD相机控制软件的IP地址以及端口号按照既定规则正确配置,保证UDP消息收发正常,并在服务器终端开启FTP服务器,确保观测图像和数据处理结果的流程正常运行。
正常工作时,主控软件根据任务计划发送UDP消息给望远镜控制软件,望远镜摆位到第1个天区,确认望远镜到位后,CCD相机按预先设置的模式(包括曝光时间和拍摄帧数)采集图像,采集过程中,图像转换与FTP传输模块监控新生成的FITS图像并转换成JPG格式,通过FTP传输到远程服务器端。图像采集结束后,CCD相机软件发送拍摄结束的消息指令给主控软件,系统开始下一个天区的观测,与此同时,调用数据预处理模块开始执行数据预处理,并行的工作方式大大缩减了工作时间,预处理结束后主动通过FTP将处理结果传输远程服务器端并立即入库管理。整体执行流程如图3。
图3FocusGEO软件系统整体流程
Fig.3The flowchart of FocusGEO software
2 系统实现
软件系统采用C#语言作为编程语言,开发平台为Visual Studio 2012,开发环境为.NET Framework 4.5框架。
主控软件包含两部分:(1)图形用户界面,实现与用户的人机交互;(2)UDP控制端口,通过UDP集成控制望远镜、CCD相机和圆顶等设备。图4为主控软件工作状态图,点开始观测按钮后,自动执行任务计划,给望远镜和CCD相机发送设备观测参数指令,并判断接收的望远镜和相机反馈状态消息进行下一步操作,实现自动化观测。由于设备故障是望远镜系统运行不可避免的问题,为了增加系统的可靠性,图形用户界面提供了工况信息模块,实时显示望远镜、CCD相机和时间终端时统的状态信息,工况信息的状态栏中都有设备故障报警功能[7]。
在局域网内,针对本项目发送频率低、报文很小的情况,同时又需要与6个网络端口进行通信的特点,经过认真分析和比较UDP和TCP通信的优劣,最终选择UDP协议通讯,因为UDP消耗资源少,响应迅速,灵活性强且无需像TCP那样建立连接消耗很长的时间。当然UDP协议通讯存在一个固有的问题:当发送频率过高、报文过大时容易丢包。为此通过设置丢包重发机制和超时机制避免了上述问题,事实证明非常有效。为了避免主控软件多个端口同时接收消息时发生冲突,同时监听多个网络端口,采用委托的方式处理接收的UDP消息,当某个端口接收消息后会触发与该端口对应的事件,并使用Dispatcher.BeginInvoke函数异步执行触发的事件,确保程序的主线程正常工作不受干扰。实现流程见图5[8]。
图4主控软件工作状态界面
Fig.4The screenshot of working status of the master software
图5 UDP监听模块流程图Fig.5 The flowchart of UDP listening
CCD相机采集数据过程中,图像压缩与传输软件实时监控FITS文件的创建并进行压缩转换,软件采用FileSystemWatcher类监测D:DATA文件夹内.fit后缀文件的创建,当有图像创建后触发FileSystemEventHandler事件,事件中执行图像压缩及转换图像格式的委托函数,委托函数需新建一个EncoderParameter类的实例对象配置图像质量比。在确保大屏幕(分辨率1 920 × 1 080)能清晰显示的前提下,同时满足FTP快速传输的要求,经反复测试选择85%的图像质量比最为合适 ,该参数下一幅5 M的FITS图像压缩成JPG格式后大小为400 K左右,压缩比约为10∶1。压缩后的JPG图像通过FTP推送到远程服务器端,并将12个天区的图像显示到大屏幕上,同时数据立即录入Oracle数据库。观测图像监测、压缩和传输流程见图6。
图6图像监测、压缩与传输流程图
Fig.6The flowchart of images monitoring, compression and transmission
Oracle在数据库领域一直处于领先地位,是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类微机环境。使用C#语言开发的应用程序可以很方便地应用Oracle数据库,C#语言与Oracle数据库之间的接口是指对Oracle数据表的调用与数据更改等操作[9-10]。
.NET Framework框架包括4个数据提供者,分别用于不同的数据库标准,本软件针对Oracle数据库使用Oracle.NET数据提供者,包括了如下 5个数据库对象:(1)数据库连接对象OracleConnecion,是一个与数据库进行连接的对象,包含与数据源创建连接的信息。(2)数据库命令对象OracleCommand,用于对数据源发出命令。(3)命令构造对象OracleCommandbuilder,用于构建SQL命令。 (4)数据读取对象OracleDatareader,专门用于读取数据。(5)数据适配器对象OracleDataAdpter,取得数据并且在数据与数据集之间建立一座桥梁。
在程序中使用数据库连接对象建立与数据库的连接,实例化一个数据库连接对象的实例对象con,连接字符串的参数在客户端程序的名称解析一致,使用con.Open()打开数据库。应用数据库命令对象发送命令,对于从数据库中检索数据的语句可以使用OracleDataReader指令进行操作,更多的使用Insert操作向数据表中写入数据。操作完成后使用con.Close()关闭数据库[10]。
3 结束语
本文介绍了FocusGEO系统软件的总体框架,采取主控软件集成控制望远镜和CCD相机的基本思路,实现系统自动化运行,减轻了观测人员的工作强度。截止目前,FocusGEO已经在上海天文台佘山科技园区开始正常观测,系统软件运行状况良好,在系统软件的支持下,FocusGEO实现了对台站上空地球同步轨道带的反复扫描观测和数据实时处理,有效提高了系统可靠性和观测效率。系统软件全部为FocusGEO团队自行研发,通过该工程的实现,研究团队掌握远程控制、观测与数据处理、图像压缩、数据库设计与数据管理等方面的关键技术,为实现非通用系统的自动化控制提供了技术支撑。
考虑到上海的天气不利于光学观测,计划近期将FocusGEO搬迁至云南天文台丽江观测站,利用该观测站良好的夜天光和旱季连续观测的条件,开展常规观测,获取稳定持续的观测数据。同时为了实现在上海通过互联网进行远程控制,软件系统的通信协议将升级为HTTP协议,为后续的国际观测网做技术准备。
致谢:感谢上海天文台光学天文技术室参与本项目的部分观测助手,他们在FocusGEO软件系统的集成调试和试验观测阶段发现了不少问题,对软件的持续改进提供了大量有益的意见和建议。
参考文献:
[1]和寿圣, 辛玉新, 伦宝利, 等. 基于ASCOM和Modbus/TCP协议的天文圆顶控制系统[J]. 天文研究与技术, 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]武鹏. 天文望远镜的ASCOM开发技术研究[D]. 成都: 中国科学院光电技术研究所, 2015.
[3]梁波, 袁智, 邓辉, 等. 一种基于异构操作系统的RTS2 CCD相机扩展方法[J]. 天文研究与技术——国家天文台台刊, 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]卫守林, 曹子皇, 王峰, 等. 基于WebSocket的RTS2 Web控制研究[J]. 天文研究与技术——国家天文台台刊, 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标准的CCD自动观测系统[J]. 天文研究与技术——国家天文台台刊, 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天文望远镜圆顶和天窗自动化系统研制[J]. 天文研究与技术——国家天文台台刊, 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米地平式望远镜软件系统设计与实现[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]姚正秋, 周必方, 汪达兴. 1.2米红外望远镜[J]. 天文学报, 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#面向对象程序设计[M]. 北京: 人民邮电出版社, 2007.
[10]刘秋香, 张永胜. Visual C#下利用ADO.NET访问SQL Server技术[J]. 计算机系统应用, 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.