杨长春,许 骏
(1. 中国科学院云南天文台,云南 昆明 650011; 2. 中国科学院大学,北京 100049)
NVST狭缝扫描及定标单元的电动控制实现*
杨长春1,2,许 骏1
(1. 中国科学院云南天文台,云南 昆明 650011; 2. 中国科学院大学,北京 100049)
利用1 m红外太阳望远镜(New Vacuum Solar Telescope, NVST)对太阳进行观测和研究,需要控制狭缝扫描系统和磁分析系统中各设备的运动以配合观测系统采集数据。针对实际观测中对设备运动控制的需求,并利用控制器对相应设备的直接控制,提出基于TCP协议及UDP协议的WinSock网络编程以及串口通信编程的设计方案,设计了一套基于Client/Server架构的控制系统软件,实现各仪器在局域网范围内的远程控制。通过对设备的运动控制测试,客户端发送控制命令给服务器端,服务器计算机解析命令并通过串口控制各仪器运行,同时采集设备的状态信息反馈给客户端,测试结果表明此系统能良好地控制各设备运行,结合网络通信及串口通信的设计为后续的观测系统功能升级打下了基础。
NVST;狭缝扫描;偏振分析;WinSock;串口通讯
1 m红外太阳望远镜(New Vacuum Solar Telescope, NVST)是我国研究太阳物理的设备之一,用于太阳活动区磁场的精细光谱分析和太阳活动的高分辨率精细结构研究[1-2]。在现有的高分辨成像观测系统基础上,完善狭缝扫描系统、磁分析系统及五通道成像系统,通过偏振[3]、光谱[4]及图像[5]的方法研究太阳,对太阳物理学的研究有十分重要的意义。利用NVST对太阳进行观测和研究时,需要控制狭缝扫描系统及磁分析系统中定标单元等设备的运动以配合观测系统采集数据。
Socket最初出现于UNIX系统中,为应用程序提供编程接口,通过调用Socket函数使用TCP/IP提供的网络服务,实现应用程序间的相互通信。WinSock根据Socket模型开发,增加了许多针对Windows的扩展函数,提供了针对Windows系统的网络编程接口。在Windows平台上基于套接字的网络编程有WinSock API和MFC Socket两种模式可以选择,MFC Socket利用面向对象技术重新封装和定义了WinSock API,可方便地用于面向对象的程序设计。利用计算机串口与仪器仪表通信,可方便地实现对仪器仪表的控制。充分利用Windows的消息驱动机制,结合Winsock网络通信和串口通信原理编程,可有效地应用于系统中对狭缝扫描及磁分析器等设备的运动控制。
在太阳望远镜现有设备结构中,在狭缝之后正交布置有大色散光谱仪和多波段光谱仪。为了得到太阳像的二维光谱信息,利用狭缝扫描系统,控制由一套电动升降台和一套电动旋转台组成的机电执行机构,由电动升降台带动负载平面镜作升降运动,通过镜面反射将光路平移,可使太阳像斑以扫描方式通过狭缝,并进入狭缝后的大色散光谱仪或多波段光谱仪;正交布置的大色散光谱仪和多波段光谱仪不同时工作,由电动旋转台将升降台等扫描设备水平方向旋转90°以将光路切换到不同的光谱仪系统。磁分析系统中,通过偏振分析对太阳磁场和磁场活动进行观测研究,在望远镜真空镜筒内F2焦点处放置定标单元,定标单元主要由一片波片和一片偏振片构成,波片和偏振片由两台独立的超声波电机支承,定标工作观测时需要相对旋转步进运动,定标单元整体部件受控于步进电机切入光路中工作或切出光路。
狭缝扫描系统及磁分析系统各机电执行机构互相配合工作,在图1的太阳塔结构示意图中,狭缝扫描装置放置在四楼光谱仪室消旋平台上,消旋平台的狭缝前放置一套偏振分析器,在真空镜筒内放置一套校正单元,观测者在三楼观测室控制各仪器的运行。狭缝扫描装置及磁分析设备的运动,主要由一系列步进电机或超声波电机驱动,考虑到观测室与光谱仪室间布线的便捷,针对各电机驱动设备的控制,控制信息通过光纤网络传输到消旋转台上的服务器,服务器即与各控制器通过串口通讯控制设备运行。系统中采用了多个控制器控制狭缝扫描的电动平移台和转台及磁分析系统的超声波电机和步进电机等设备。
图1 太阳塔结构示意图
观测系统进行数据采集时,需要狭缝扫描装置和磁分析器等机构实现相应的运动。系统软件为实现此功能,结合WinSock网络通信编程及串口通信编程,采用C/S架构设计,实现在局域网内的远程控制。客户端程序将指令通过网络传到服务器端,服务器接收消息并解析命令,随即通过串口与控制器通讯并控制仪器运行;服务器通过控制器采集设备的运行状态信息,解析采集的数据并反馈给客户端,以便于观测数据的同步采集。如图2为控制系统的简化设计框图,需要实现客户端与服务器端程序间的网络通信控制,服务器计算机与控制器间的串口通信控制。
图2 控制系统设计框图
2.1 基于Client/Server的控制系统软件
在Windows平台上基于套接字的网络编程有WinSock API和MFC Socket两种模式,此控制系统软件设计中网络通信模块主要采用WinSock(Microsoft Windows Socket)设计,同时采用了WinSock API设计部分通信模块。系统中的网络通信采用了TCP协议和UDP协议,基于CSocket类设计,利用CArchive类和CSocketFile类一起管理数据的发送与接收。图3为系统通信设计的基本框架。
对于串口通讯开发,通常可利用MSComm控件、Windows API函数以及其他第三方类实现串口通讯。在程序设计中,利用MSComm控件实现串口通信,采用事件驱动的方式读写串口,使计算机与各控制器间灵活地交互数据。服务器通过扩展的八通道串口卡与多个控制器通讯,相应设置多个MSComm控件以便于多串口同时工作,控制对应仪器的运行。
图3 控制系统软件设计框架
2.1.1 基于TCP协议的网络通信设计
基于WinSock的网络通讯设计,可以采用CSocket类和CAsyncSocket类。CSocket是从CAsyncSocket派生而来,可以直接使用CAsyncsocket类程序设计中Receive()和Send()的数据收发机可实现一些通信控制系统设计[6]。系统基于CSocket类设计,采用CArchive类和CSocketFile类能更灵活地管理数据的发送与接收,实现控制消息的传递。
系统基于TCP协议的通信设计,主要实现客户机与服务器两端的通信控制,完成控制命令和反馈消息等一系列数据的交互,采用自定义格式标准的通信协议,客户端将控制消息传递给服务器,服务器执行相应方案并反馈数据给客户端。在此微软基础类库(Microsoft Foundation Classes, MFC)程序设计中,采用对话框指针机制方式,将创建的基于CSocket类的网络事件函数OnClose()、OnReceive()、OnAccept()等成员函数重写后,对应到主窗口函数体中进行相关功能扩展操作。客户端的设计实现,如图3,先调用Create()构建一个Socket对象,然后通过Connect()与服务器端连接,再创建一个CSocketFile对象与CSocket关联,并创建两个CArchive对象与CSocketFile关联,用于数据接收和发送,当建立完成后即可在客户端与服务器端之间传输数据。服务器端网络通信部分设计流程与客户端有相通之处,需注意服务器要先建立侦听,在接受连接请求后才能通讯,创建一个Socket之后,需要调用Listen()监听端口,收到客户端连接请求后调用Accept()接收,再创建两个CArchive对象用于数据读写,在客户端与服务器端之间传输数据。结束通信时,客户端与服务器端都需销毁创建的CArchive对象、CSocketFile对象以及CSocket对象,释放占用的资源。
2.1.2 基于WinSock API编程的UDP程序设计
区别于面向连接的TCP协议程序设计,基于UDP的程序是面向无连接的,发送数据前不需建立连接,发送完也不需终止连接,没有连接建立、维护、终止所带来的开销,不需要特别复杂的传输控制模型即可交互信息,给程序设计带来灵活性与效率的提升。
对于远程控制,若能在客户端直接控制服务器开机、关机和重启等操作,将更为完善。此控制系统设计中,对服务器的远程关机及重启控制是嵌入到前文的TCP网络控制程序中,首先在服务器端设计关机及重启的程序模块,只待客户端发送关机或重启命令给服务器执行即可。针对关机状态下服务器的远程开机,特设计了基于UDP协议的远程开机模块。在启用计算机主板及网卡的远程唤醒功能情况下,采用Winsock API编程,通过UDP广播的方式发送针对服务器网卡MAC地址的唤醒数据包(Magic Packets, 魔包),从而驱动网卡向主板发送开机指令,实现上电开机。
2.1.3 串口通信控制设计
对于串口通讯开发,通常可利用MSComm控件、Windows API函数以及其他第三方类串口通讯实现一些工程设计[7]。在此程序设计中,利用MSComm控件实现串口通信,采用事件驱动的方式读写串口,使计算机与各控制器间灵活地交互数据。服务器通过扩展的八通道串口卡与多个控制器通讯,一个控制器对应一个串口,对应设置多个MSComm控件以便于多串口同时工作,控制对应仪器的运行。
串口通讯的基本步骤有:打开串口、配置串口参数、数据发送与接收、关闭串口,可以通过调用put_CommPort()、put_PortOpen()、put_Settings()、put_RThreshold()等函数完成串口操作。计算机通过串口向对应控制器发送指令控制设备,须遵循一定的通信协议。Modbus协议是应用于电子控制器上的一种通用语言,提供了ASCII和RTU两种选择模式,并广泛应用于工业通信系统设计中[8]。在此系统中的部分控制器通信采用Modbus ASCII协议设计,计算机与其通信时需满足通讯基本格式: “地址+命令+数据长度+32位参数+校验码”。系统中狭缝扫描设备及超声波电机有厂商配套的控制器,控制器通信命令格式为各自定义标准。尽管各控制器通信协议具体表现形式不尽相同,但对于控制执行命令皆可视为一段字符串的传递。电机的状态信息由控制器采集回传给计算机,可通过调用 “get_Input()” 读取缓冲区数据实现数据采集,串口采集的一段字符串,包含了Modbus协议格式的 “地址、命令、数据、校验码” 等信息,或厂商自定义的数据格式,而用户需要的信息只为字符串中的一段字符,可以调用Mid()、Left()、Right()等函数截取对应信息片段,再解析成需要的数值形式,实现数据的采集与重现。
2.2 系统设备的控制
狭缝扫描系统中涉及的电控设备主要为由步进电机驱动的电动升降台和电动旋转台,在磁分析系统中需要控制的设备主要由步进电机和超声波电机驱动,针对设备的远程控制需求,设计如图4的控制框架,需利用各控制器实现对应设备的运动控制。
图4 控制系统结构示意图
2.2.1 步进电机运动控制原理概述
步进电机利用电磁感应原理工作,使电脉冲信号转变成角位移,在给定脉冲量下电机旋转相应角度,实现一种数字控制式电动机。步进电机在脉冲电源下运行,其角位移量与输入的脉冲数成正比关系,具有快速的动态响应和良好的跟随性,可与相应驱动电路组成开环数控系统,具有良好的可靠性,也可与适当的反馈环节组成高性能的闭环数控系统。步进电动机可分为三大类:反应式步进电机,其转子由软磁材料制成,转子中无绕组,结构比较简单,步距角小,但动态性能较差;永磁式步进电机,转子由永磁材料制成,转子本身也是一个磁源,输出转矩大,动态性能好;混合式步进电机,综合了反应式和永磁式的优点,输出大转矩,动态性能好,步距角小,但结构较复杂。本系统中采用了两相混合式步进电机驱动相应设备。
步进电机的结构主要分为转子部分和定子部分,二相混合式步进电机的结构示意图如图5。图5(b)的定子上有8个大磁极,间隔的4个按照一定的缠绕方式形成同一绕组(同相),形成两相结构,每一相通电时相对的磁极产生同极性磁场。如图5(a)中转子由两段铁芯组成,中间嵌入永磁铁,使转子一端呈N极,另一端呈S极。由于转子也产生磁场,使得混合式步进电机的转矩由定子电枢磁场和转子永磁铁磁场共同作用产生。从图5可知,转子N极与定子S极磁极产生吸引力,与定子N极产生排斥力;转子S极与定子N极产生吸引力,与定子S极产生排斥力。这些力的合成促使了转子的运动。由于转子的极性不变,可通过控制电流改变定子磁极的N、S极性以及变化频率,即可使转子按照要求旋转。
图5 二相混合式步进电机结构示意图
2.2.2 超声波电机控制原理
超声波电机是一种新型电机,利用压电材料的逆压电效应产生超声振动实现电能到机械能的转化,并通过定子与转子间摩擦传动方式转换为运动体的运动,其工作机制与运行特性不同于利用电磁感应原理工作的传统电机。超声波电机具有体积小、无电磁干扰、形状自由度大、控制精度高、动作响应快等特征,在微机电系统、精密定位控制、航空航天、机器人等运动控制领域应用备受关注,成为新兴研究领域。
当今对超声波电机的研究主要集中在新的电机结构、运动控制策略和应用技术3方面。对电机结构的研究,先后提出了行波型、驻波型、直线及模态耦合型等不同结构的超声波电机,通过研发合适的驱动控制电路和控制策略,提高运动部件的运动精度、整体效率及可靠性,其应用已涉及航空航天、半导体工业、家用电器等众多领域,在磁分析系统中的定标单元及偏振分析器即采用了PI公司的超声波电机。
超声波电机的运行离不开合适的驱动电路,通常采用全控型的电子器件、脉冲宽度调制高频逆变电路等现代电子技术实现。由于超声波电机特殊的机体结构和运行机理,对两相行波超声波电机的控制,即是改变电机内部行波的波幅、速度和定子表面质点的运动轨迹,相应地控制变量即电机两相驱动电压的幅值、频率和相位差3个量[9],可由相应的控制器和驱动器实现。由于电机运行过程中表现出显著的时变及非线性特征,自20世纪90年代以来已有许多控制策略在超声波电机控制领域发展,比如PID控制、自适应控制、模糊控制及神经网络等控制策略。随着超声波电机的广泛应用,相应生产商也针对超声波电机的控制设计了对应的驱动器、控制器,方便用户的扩展设计。
2.2.3 设备的运动控制
狭缝扫描系统中通过升降台的升降往返运动,利用负载的镜面反射光路,即可使太阳像斑以扫描方式通过狭缝,进入大色散光谱仪系统或多波段光谱仪系统,电动旋转台用来驱动升降台等扫描机构水平方向旋转90°以切换到不同的光谱仪工作。扫描装置的运动由步进电机驱动,通过光栅编码器检测位置,并由对应的控制器控制设备精密运动,扫描装置采用卓立汉光公司的产品。对定标单元的控制,需要控制两台超声波电机带动负载偏振片或波片旋转,并控制两个步进电机驱动定标单元切入/切出工作状态。此套设备采用了PI公司生产的超声波电机及对应的控制器,步进电机及对应的控制器采用国产设备。
系统中涉及一系列设备的运动控制,可以反映到对各机构电机的控制,设备的运动过程是根据天文观测中图像采集的需求而定,客户端作图像采集时发送运动指令给服务器,服务器再控制电机执行相应的运动方案。对应到各个电机的运动控制中,扫描机构的步进电机及磁分析器的超声波电机都有配套的控制器,均有编码器反馈位置,可便于制定运行方案,实现对其精密定位控制。结合前文所述的软件设计过程及对电机的控制原理,实现了对现有设备的控制,如图6为此系统软件实现的基本功能结构,图7为系统设计中对超声波电机的控制应用于偏振分析器,在实际测试中的基本功能实现。
图6 系统软件基本功能结构
图7 偏振分析器运动控制概述
在图7对偏振分析器用于观测试验时,采用图6对超声波电机的部分控制设计,并直接将其串口通讯部分嵌入观测数据采集系统中。偏振分析器运动的基本流程,在准备观测阶段,实现对运动设备的初始化,将偏振分析器机械归零之后运动到光学原点完成初始化,待电机步进旋转22.5°,短暂停留时相机采集图像数据并存储。鉴于调试需求灵活,设计中添加了随时停止运行中的电机,随时复位到机械原点/光学原点,参数允许范围内任意角度定位,任意旋转圈数内的自动步进旋转等灵活控制需求。
对各设备的实际运动控制中,有许多值得注意的地方。超声波电机带动负载偏振片或波片旋转运动,按22.5°角步进旋转,由于控制器内部寄存器存储数据有限,不可能无限制地旋转电机并记录位置,必须在可记录角度值范围内归零位运动。此处的归零位运动还需注意归电机机械零位和归用户零位的区分,简单而言,机械零位是超声波电机固定的一个机械设计位置,用户零位即记录角度的零位,表现在电机旋转多圈之后,归用户零位时电机需要反转多圈使得角度值归零,而归机械零位则是无论此刻角度多大也是从此位置就近旋转到机械设计零点。观测初始化时超声波电机在光学零位,即执行机械归零后给定相对机械零点的一个角度偏移量。在对电动升降台基本的运动控制中,设计框架和对超声波电机的控制有相通之处,每次通电运行时也必须初始化基本的运行参数,由于有线光栅编码器检测位置,运行时可利用光电开关检测原点,并复位到扫描初始位置,设置零位以便于相对运动或绝对位置运动,并需充分利用升降台两端的机械限位开关和底端的光电开关,实现行程范围内的扫描运动控制。
此套控制软件针对各设备的运动控制设计,应用到观测工作时还需与观测数据采集系统集合,观测数据采集机将集合现有上位机客户端功能。测试表明,此套运动控制软件能实现各设备的运动控制,在实际观测中曾将对超声波电机的控制设计分解出来,结合到观测数据采集软件中测试偏振分析器,测试满足了运动控制需求,在后续的运行中还需根据调试需求和观测需求制定更具体的控制方案。
狭缝扫描设备及磁分析设备作为1 m太阳望远镜的重要观测设备,针对不同观测模式下各设备的运动控制需求,设计了此控制系统软件。本控制软件基于WinSock网络通信及串口通信,采用了Client/Server架构,利用TCP协议和UDP协议各自特点实现相应通讯控制,并结合多串口通讯编程,实现了对现有设备的控制,经测试具有良好的运行效果,同时继续为后续的观测需求做相应的修改和补充。基于WinSock的网络通讯以及串口通讯控制系统设计,具有广泛的应用价值,本文从实际应用出发,从通讯和控制的角度简单阐述了对局域网范围内远程仪器控制的一般方法,若需实现广域网内的远程控制,还涉及网络地址转换(Network Address Translation, NAT)相关技术。
[1] Liu Zhong, Xu Jun, Gu Bo Zhong, et al. New vacuum solar telescope and observations with high resolution[J]. Research in Astronomy and Astrophysics, 2014, 14(6):705-718.
[2] 刘忠, 邓元勇, 季海生, 等. 中国地基大太阳望远镜[J]. 中国科学: 物理学 力学 天文学, 2012, 42(12): 1282-1291. Liu Zhong, Deng Yuanyong, Ji Haisheng, et al. Ground-based giant solar telescope of China[J]. Scientia Sinica: Physica, Mechanica & Astronomica, 2012, 42(12): 1282-1291.
[3] 徐稚, 张蜀新, Sin Sun Ae, et al. 2006年3月29日日全食白光日冕偏振测量 (英文) [J]. 天文研究与技术——国家天文台台刊, 2006, 3(4): 4408-4413. Xu Zhi, Zhang Shuxin, Sin Sun Ae, et al. Polarization observation of white light corona during the total solar eclipse on 2006 March 29[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2006, 3(4): 4408-4413.
[4] 王瑞, 徐稚, 刘忠. 一米新真空红外太阳望远镜多波段光谱仪光谱弯曲分析[J]. 天文研究与技术——国家天文台台刊, 2014, 11(2): 165-167. Wang Rui, Xu Zhi, Liu Zhong. An analysis of curvatures for the multi-wavelength spectrometer of the new vaccum solar telescope of the Yunnan Observatories[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2014, 11(2): 165-167.
[5] 方玉亮, 金振宇, 刘忠, 等. 一米新真空太阳望远镜离焦对高分辨太阳观测图像重建的影响[J]. 天文研究与技术, 2015, 12(2): 183-188. Fang Yuliang, Jin Zhenyu, Liu Zhong, et al. A study of influences of defocus aberrations on high-resolution image reconstruction for data from the New Vacuum Solar Telescope of the YNAO[J]. Astronomical Research & Technology, 2015, 12(2): 183-188.
[6] 高志滨, 乐仁昌, 张鑫煌, 等. 伽玛能谱仪远程控制系统的设计与实现[J]. 计算机工程与设计, 2014, 35(6): 2214-2217+2223. Gao Zhibin, Le Renchang, Zhang Xinhuang, et al. Design and implementation of remote control system of gamma-ray spectrometer[J]. Computer Engineering and Design, 2014, 35(6): 2214-2217+2223.
[7] 廖政, 施宇锋, 陈迪军, 等. 红外光谱仪摆臂在线实时监控系统的设计与实现[J]. 计算机应用与软件, 2012, 29(1): 220-223. Liao Zheng, Shi Yufeng, Chen Dijun, et al. Design and realisation of online real-time monitoring system for swing-arm of infrared spectrometer[J]. Computer Applications and Software, 2012, 29(1): 220-223.
[8] 李永强, 单鸣雷, 朱昌平, 等. 基于Modbus协议的多功能数据采集器设计[J]. 计算机测量与控制, 2014, 22(3): 839-841+862. Li Yongqiang, Shan Minglei, Zhu Changping, et al. Design of Modbus protocol-based multifunction data acquisition device[J]. Computer Measurement & Control, 2014, 22(3): 839-841+862.
[9] 史敬灼. 超声波电机运动控制理论与技术[M]. 北京: 科学出版社, 2011.
Design and Implementation of an Electric Control System for Slit-Scanning and Calibration Instruments of the YNAO NVST
Yang Changchun1,2, Xu Jun1
(1. Yunnan Observatories, Chinese Academy of Sciences, Kunming 650011, China, Email: ycc@ynao.ac.cn; 2. University of Chinese Academy of Sciences, Beijing 100049, China)
The NVST (New Vacuum Solar Telescope) of the Yunnan Observatories (YNAO) is for observations of fine solar structures though high-resolution imaging instruments and spectrometers in conjuncture with polarization analyzers. During observation with the NVST the slit scanning and motions of the polarization measurement instruments need to be controlled synchronously with the data-collecting systems. In this paper, we present the design and implementation of an electric control system to remotely control motions of these instruments (including the polarization analyzers and slit-scanning devices) according to observational requirements. The remote control is achieved using a server computer from which commands are sent to control machineries associated with various separate controllers via a serial port on the computer and then a LAN network. Needed data and messages are fed back to the client through the LAN. The system is designed based on WinSock network programming and serial-port communication programming using the TCP and UDP protocols. The control system incorporates a software system for operation in the Server/Client architecture. Our experimental results show that this control system is effective in controlling the instruments on the NVST, and the design incorporating network/serial-port communications provides excellent extensibility for subsequent upgrading of the NVST to expand its functions.
NVST; Slit scanning; Polarization analyzer; WinSock; Serial-port communication
国家自然科学基金 (11273058) 资助.
2015-12-12;修定日期:2015-12-31
杨长春,男,硕士. 研究方向:天文仪器与方法. Email: ycc@ynao ac cn
P111.2; TP311.5
A
1672-7673(2015)04-0487-08
CN 53-1189/P ISSN 1672-7673