2. 中国科学院大学, 北京 100049;
3. 中国科学院天体结构与演化重点实验室, 云南 昆明 650011
2. University of Chinese Academy of Sciences, Beijing 100049, China;
3. Key Laboratory for the Structure and Evolution of Celestial Objects, Chinese Academy of Sciences, Kunming 650011, China
天文圆顶应满足在光学望远镜工作时,能让天体辐射自由而尽量少畸变地进入接收器,并尽量减小风振动、温度变化等外界不利因素的影响[1]。传统圆顶如我国2.16 m望远镜圆顶室[2]封闭性较好,但通风性较差,会引起圆顶内外的温差。后来大多数望远镜吸取了前期圆顶建造的经验:如甚大望远镜(Very Large Telescope, VLT)在圆顶下部设置大面积通风口;4.2 m的威廉·赫歇尔望远镜(William Herschel Telescope, WHT)增加大面积的百页窗,可根据外界风力、风向控制窗口开合与方向;斯隆巡天望远镜以及一米红外太阳望远镜[3]的挡阻风板对减小风振起到较好的作用。
丽江2.4 m望远镜通过预留大面积多组侧窗进行热控制(图 1)。原来设计的16扇大面积侧窗,需通过人工摇动机械摇柄拉动细钢丝开关侧窗,操作平台较高且费时,有安全隐患,另外细钢丝易绞合到一起且易断(图 2(a))。现阶段侧窗要么全开,要么全关,仅依靠人为经验,未考虑降水、云量、风速、湿度等外界气象因素的影响且没有气象预警[4]。风速对望远镜的扰动会影响观测,通常天文望远镜只能在四级风以下正常工作[5]。考虑到上述实际情况,本文开发了圆顶侧窗的自动化控制系统,能够实现自动、多通道控制,并依据气象条件智能化控制侧窗的开合。在满足所有气象设定阈值且风速较小的情况下,侧窗全部打开;一旦超过某一气象阈值,侧窗全部关闭;满足阈值且风速较大的情况下,迎风面关闭,只打开背风面侧窗,能极大地降低对望远镜的扰动。通过精确的自动化控制,系统运行稳定可靠,提高了望远镜的安全操作性能与观测效率。
1 机械改造侧窗有多种不同的改造形式,在目前较小改动的情况下,一方面要实现侧窗的自动化控制,另一方面要考虑不影响圆顶整体结构与外观。曾考虑过不需要改动原侧窗仅用电机驱动钢丝的方案,但存在细钢丝绞合到一起的可能,也考虑过改造为可调风阀的百叶窗形式,但密封性较差。最后选用依靠固有的圆顶钢架与龙骨,在圆顶外侧依照圆顶曲率搭建曲面滑动导轨(图 2(b)),侧窗在导轨上向两侧开合,然后利用电机连接链轮驱动链条。
2 侧窗控制系统设计概述目前侧窗共有16扇,每个节点控制两扇侧窗,分8组控制侧窗的开关,这样能减少控制网络的负荷。丽江2.4 m望远镜的超半球圆顶内径达13 m,因此若选用串口线或有线以太网长度至少为20 m,且线缆过多,因此根据圆顶结构选用无线网络进行控制。除一对一控制外,还要解决一对多控制、单独控制与整体控制的问题。针对现场调试与维护的问题,除远程网络控制外,还要考虑其他控制通道、网络稳定性以及掉电等,并能有效根据电机调节步长与速度。因此,侧窗的控制系统架构采用基于STM32的嵌入式控制板现场控制、无线网络通信的方式,可通过USB转串口或者手柄实现本地调试与控制。它包括上位机模块、WiFi模块、CH340G模块、手柄控制模块、主控芯片、电机驱动模块和电机模块,以及外围辅助电路等几大模块。上位机即远程控制主机,它作为服务器端发送命令和接收下位机的状态信息,同时在网络上调用气象与望远镜数据库,解析字符串与比较阈值,自动控制圆顶及侧窗的开关,并提供警报便于人工干预,系统架构如图 3。
3 下位机设计 3.1 下位机硬件设计下位机电路的主控芯片采用基于ARM Cortex-M内核的32位微控制器STM32F103C8T6[7],它有3个串口端,分别采用串口1通过CH340G和计算机通信,串口3和WiFi模块相连,通过中断GPIO口和手柄电路相连,通过PWM口、普通GPIO口和电机驱动模块相连。WiFi使用ESP8266模块①,它内置了TCP/IP协议栈,通过串口USART3与STM32通信。如图 4 ESP826模块有STA,AP,STA+AP 3种模式,本文选用STA模式。ESP8266模块通过路由器连接到网络,实现无线网络通信。
① https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview
CH340G为USB转串口模块,通过它将下位机程序烧录到STM32板卡中。手柄模块包含手柄电路、RJ11、PC817光耦电路几部分,起手柄电压转换与信号隔离的作用,并将控制信号稳定地连接到STM32的输入输出口。
如图 5,电机驱动模块通过DRV8825芯片驱动两个步进电机,通过电机步数调节侧窗到位与否。STM32通过PWM口、普通GPIO口和电机驱动模块相连。STEP引脚产生脉冲供给驱动芯片,脉冲由STM32内部PWM生成。M0,M1,M2为细分设置引脚,DRVEN连接至STM32做使能设置,DIR为驱动方向控制。电机采用轴径为8 mm、电流为2.5A的插线式两相四线57BYGH步进电机,电机走一步是1.8°,一圈为200步,采用全步进方式驱动,通过调节PWM的时钟频率与脉冲数调节电机的速度与步长。
3.2 下位机控制板软件设计下位机软件利用STM32库函数V3.5来开发。侧窗控制板的软件主要包含GPIO、串口、定时器、中断等基本设置,WiFi模块连接、电机驱动底配置、协议定义、网络通信等控制。
下位机软件中自定义数据帧格式为“:F*#”,其中“:F”表示帧头;“#”表示帧尾;“*”表示帧内容。接收到上位机的第1个字符是“:”,表示接收到有效数据;最后一个结束的是“#”,表示一帧数据传输完成,等待下一帧数据传输。解析第3个字符并执行相关指令与内部调用的函数,控制指令如表 1。
指令格式 | 指令含义及调用函数 |
A | WiFi名字设置SetWifiName() |
C | WiFi密码设置SetW ifiCode()以及侧窗全关; |
O | 电机全开 |
Q | 电机使能ControlMotor() |
S | 电机步长调节 |
V | 设置电机速度SetSpeed() |
W | IP设置SetIP() |
Y | 设置电机速度SetSpeed()/SetSpeedCover()、设置用户名SetNameCode()、设置WiFi连接SetWifiConnect() |
+ | 设置单个步进电机运转方向,用于单个模块打开ControlMotor() |
- | 设置单个步进电机运转方向,用于单个模块关闭ControlMotor() |
? | 查询Socket连接及编号 |
WiFi设置界面用于下位机,主要是将服务器端的IP、端口、路由、密码这些字符串转换为相关格式写入闪存(Flash),利用联合体共享内存和内存长度为其最大成员的内存长度这两个特点,即使断电也不会丢失这些信息,在联合体中包含结构体,结构体中含有WiFi设置界面的Name,Code,IP 3个变量,通过指针将上位机传递到联合体,其长度为最大成员长度,然后利用Flash接口函数写入。
控制软件首先对GPIO、时钟、定时器、中断、串口引脚与串口通信设置参数,完成初始化设置,再对两个DRV8255引脚进行设置。完成这些基本设置后,程序对串口1、3的布尔类型的数据帧标志位bFlagRun,bMoterRun分别设置初始值为false,然后两个串口等待数据的到来。接收到一帧数据时,数据帧标志位设置为true,接着解析数据帧内容,如果符合自定义指令,则执行相应操作,如果不符合则直接清除缓存并把标志位设置为false。最后检测到数据帧尾为“#”,完成整个数据帧的处理,将缓存清除并设置标志位为false,然后等待下一帧数据。控制流程框图如图 6。
4 上位机控制软件设计STM32控制板通过WiFi模块ESP8266与上位机采用TCP通信。STM32板即下位机作为客户端,上位机作为服务端,一个主机控制8块STM32板。上位机软件在Win7下采用C#4.0编写,使用Visual Studio 2010集成环境开发。
上位机主动通过执行及查询指令到STM32板,STM32板执行相应的指令动作,把实时状态反馈回上位机。如图 7(a)控制板自动通过AP获取该网段的IP,考虑到WiFi的IP会因断电或信号强弱等改变,使用字典(Dictionary<>)将连接的相关字符串(String)与套接字(Socket)绑定,同时每一个字符串String对应一个线程,通过哈希表的键值映射实现[8]。8个节点通过8个线程管理,每一个节点的断开与连接不影响其他节点。
如图 7(b),上位机服务器端界面启动后,在线列表中列出连接到下位机客户端的IP情况,每一个套接字有对应的线程管理。主界面主要包含状态查询与命令发送,可以控制一个板卡节点单独开关侧窗,也可通过遍历字符串绑定套接字发送开关指令到每一个节点。可能因节点IP的变动,要通过节点查询指令“:F?#”的反馈字符串“:FN#”的“N”值截取来判断IP对应的侧窗编号。
5 侧窗控制模式侧窗有4种控制模式:手柄控制、本地串口控制、远程控制和自动控制。上文介绍了前3种控制模式,而自动控制调用了望远镜及气象数据库:降雨、云量、湿度、风速、风向等气象参数都影响圆顶天窗、侧窗的开合与天文观测。利用已有的望远镜及气象数据表TCSStatusNow[9],通过定时器每5 min读取一次最新气象参数以及望远镜方位值。如果望远镜方位值为null,表示望远镜没有开启或者出错,执行自动关闭。在望远镜方位有数值的情况下,通过云量、降水、湿度、风速等气象参数设定开启和关闭的阈值,自动判断侧窗的开关,一旦上述任何一个气象参数值超过设定关闭阈值就自动关闭侧窗,且在天窗打开时通过蜂鸣器报警,便于人工对望远镜进行保护操作。满足以上所有开启阈值(无降雨、云量低、湿度低、风速<4 m/s),将打开所有侧窗。其他条件符合且风速适中(4 m/s < V < 8 m/s)时,出现自动开关较为特殊的情况:迎风面侧窗关闭,背风面侧窗打开。
大天窗编号为0,侧窗节点编号顺时针从1到8,则第N个节点对应的角度θN为
$ {{\theta }_{N}}=Az+45N. $ |
因为气象参数风向范围为0°~360°,而望远镜方位为-180°~360°,为了保证范围一致,需要把θN转换为0~360°,反求出最靠近风向的节点N,再根据查询节点编号“:FN#”的N值执行迎风面和背风面的侧窗开合。
6 结果和讨论圆顶侧窗自动控制系统解决了侧窗的机械改造与驱动、自动控制和多组控制、智能判断等问题。该系统通过WiFi模块、CH340G、手柄实现侧窗的多通道控制,调用气象与望远镜数据库及阈值判断,实现了丽江2.4 m望远镜圆顶的侧窗自动化与智能化控制,并有效减少风对望远镜的振动。经过两个月的试运行,该系统稳定、可靠,能满足侧窗的自主运行与人为控制。
致谢: 感谢张瑞龙老师、业凯老师在圆顶侧窗机械设计与安装上给予的帮助。
[1] | 姚正秋, 周放. 近代天文圆顶发展概况[J]. 天文学进展, 2003, 21(3): 206–218 DOI: 10.3969/j.issn.1000-8349.2003.03.003 |
[2] | 毛同生, 蒋世仰. 2.16米反射式望远镜圆顶室[J]. 天文学报, 1992, 33(2): 220–228 |
[3] | 李志, 宋腾飞, 许骏. 阻导风板及其在NVST上的测试结果[J]. 天文研究与技术——国家天文台台刊, 2012, 9(3): 329–334 |
[4] | 余晓光, 范玉峰, 辛玉新, 等.一种天文圆顶气象报警系统: 201721919222.9[P]. 2018-07-24[2018-11-13]. |
[5] | 黄佑然, 许敖敖. 实测天体物理学[M]. 北京: 科学出版社, 1987: 354-363. |
[6] | 范玉峰.中型望远镜观测系统集成[D].昆明: 中国科学院云南天文台, 2014. http://www.irgrid.ac.cn/handle/1471x/1050025 |
[7] | 刘火良, 杨森. STM32库开发实战指南:基于STM32F103[M]. 北京: 机械工业出版社, 2017: 17-23. |
[8] | 姜晓东. C#4.0权威指南[J]. 北京:机械工业出版社, 2011: 298–342 |
[9] | 王传军, 范玉峰, 易卫敏. 丽江2.4米望远镜TCS Sequencer程序的设计与开发[J]. 天文研究与技术——国家天文台台刊, 2013, 10(4): 378–385 |