合肥光源飞扫控制系统研制

2024-03-10 05:20张天哲孔安博陈凯陈留国刘功发
核技术 2024年2期
关键词:光栅编码器控制器

张天哲 孔安博 陈凯 陈留国 刘功发

(中国科学技术大学 国家同步辐射实验室 合肥 230029)

在使用X射线进行材料表征时,相关扫描实验可进行多维度、多模态成像以及吸收谱学测试,从而全面、准确地得到样品内部结构和细节、元素组成和化学状态[1-2]。合肥光源(Hefei Light Source,HLS)是真空紫外和软X射线同步辐射光源[3]。目前,HLS的软X射线磁性圆二色(X-ray Magnetic Circular Dichroism,XMCD)、催化与表面科学和计量等实验站在进行扫描实验时,均采用步进扫描模式。步进扫描模式的扫描过程是电机在运动到设定位置时停止,触发探测器或者传感器完成数据的采集和记录,然后再控制电机运动到下一个设定位置,重复上述过程,直到扫描结束。在步进扫描模式中,电机需要经历多轮的减速、停止与加速过程,由电机运动带来的死区时间在扫描总用时中占据极大比例,导致扫描过程耗时长,实验效率低[4-5]。解决这个问题的一种有效方法是采用飞扫模式进行扫描实验,让电机在扫描过程中连续运动,并同步采集探测器数据,从而减少扫描用时,提高实验效率[6]。

目前,国内外已经有一些实验站正在使用或者正在部署飞扫这种快速连续扫描系统,包括能量飞扫和空间位置飞扫。目前飞扫的实现方式主要有两种。第一种系统是使用集成了运动控制、位置捕捉并有同步触发功能的运动控制器,例如西班牙ALBA光源在其BL22线站使用Turbo PMAC控制器实现飞扫[7]。第二种系统的运动控制部分由MAXv、IcePAP等不具有位置捕捉和硬件触发功能的控制器实现,借助外部计数卡或者同步触发硬件计算触发位置并完成触发,例如BESSY Ⅱ光源、上海光源、ALBA光源的部分线站使用计数卡实现飞扫[8-9];中国台湾TPS、日本KEK、法国SOLEIL、英国Diamond、美国NSLS-Ⅱ、中国北京HEPS等光源通过基于FPGA的同步触发硬件实现飞扫[10-17]。综合考虑两种方法,为了适应更多种类的运动控制器,本文选择使用第二种方法。参考SOLIEL和Diamond合作研制的硬件同步触发系统PandABox设计了基于国产SoM(System-on-module) Alinx-AC7020的同步触发模块[18-20]。开发了基于现场可编程门阵列(Field-Programmable Gate Array,FPGA) Zynq7020的硬件同步触发模块,并以它为核心构建了包含同步信号采集模块、同步运动控制模块、上层软件控制模块的飞扫控制系统。我们将这套飞扫控制系统应用于合肥光源XMCD实验站,实现了单色器能量飞扫实验,并对X射线吸收谱实验数据的一致性、稳定性和重复性等关键指标做了分析。实验结果表明,在满足采谱性能指标的前提下,该飞扫系统可显著提高实验效率和用户体验。

1 系统设计

飞扫的扫描过程主要包含电机运动和数据采集,为了快速、同步地完成扫描,本文设计的飞扫系统,主要由同步运动控制模块、同步数据采集模块以及上层软件控制模块组成。系统结构如图1所示,其中运动控制器负责按照设定的轨迹运动控制多轴电机同步运动,并通过编码器采集运动机构的位置编码信号发送给同步数据采集模块内的硬件同步触发模块。硬件同步触发模块根据编码器信号计算电机运动位置,依据预先设定的位置列表产生触发信号,提供给探测器或传感器触发数据采集。

图1 飞扫系统结构图Fig.1 Structure diagram of the proposed on-the-fly mode control system

HLS的控制系统是基于实验物理及工业控制系统(Experimental Physics and Industrial Control System,EPICS)的分布式控制系统[21]。运动控制器、硬件同步触发模块、探测器或传感器的控制信号以及设备状态信息都通过EPICS网络传送。扫描控制软件基于Bluesky架构,Bluesky是由美国NSLS-Ⅱ和APS实验室共同研发的用于科学数据采集、管理和分析的软件组件,是建立在硬件抽象层之上的数据收集框架[22]。飞扫系统底层通过EPICS跟硬件进行交互,实现扫描方式、扫描范围、探测器控制、运动控制等参数的控制,探测器的实验数据采用以太网进行传输。上层应用软件主要实现扫描结果的处理、存储和显示。

1.1 同步运动控制模块

运动控制器负责接收上位机生成的运动路径,控制多轴电机同步运动。本文选择Zmotion公司的ZMC464运动控制器为同步运动控制模块核心。ZMC464运动控制器最多支持64轴同步控制,支持编程以及EtherCAT(Ethernet for Control Automation Technology)接口,支持多轴插补功能,最大脉冲频率为10 MHz,能提供给电机较高的转速和位置精度。驱动器选择的是支持EtherCAT总线接口和CiA 402协议的驱动器。电机上的编码器信号一分为二,一路给同步触发模块用来计算位置,产生硬件同步触发;一路给运动控制器,实现闭环控制。ZMC464运动控制器与多台驱动电机的驱动器采用EtherCAT主从模式进行通信来实现多轴同步,其中ZMC464为主站,挂载多台驱动器为从站。

ZMC464运动控制器和EPICS IOC(Input-Output Controllers)之间采用TCP通讯。运动控制器的程序流程如图2所示。基于多任务技术进行编程,主任务创建新任务后,任务独立执行,各任务间互不影响。轨迹更新任务在上电后自动创建,循环等待上位机发送的运动轨迹信息,并将这些轨迹点存入运动控制器内的TABLE寄存器;主任务在上电后循环运行,根据上位机指令可以完成轴号选择、参数设定、运动等功能,当接收到启动飞扫的指令时创建飞扫任务,依据已设定轨迹完成多轴同步运动,完成运动后飞扫任务结束。

图2 运动控制器程序流程图Fig.2 Flowchart of the motion controller program

1.2 同步触发模块

同步触发模块是为了在电机快速、连续运动时,根据电机的位置同步地产生触发信号,触发探测器完成数据采集。同步触发模块主要包含Zynq核心、编码器控制单元、脉冲IO单元、设备监控单元、供电单元其结构如图3所示。Zynq芯片型号为XC7Z020-2CLG400,包含FPGA programmable logic(PL)和ARM Cortex-A9 processor system(PS),外接主要元器件为DDR3、QSPI-flash、USB串口、SD卡、以太网PHY。

图3 同步触发模块系统结构图Fig.3 Structure diagram of the synchronous trigger module system

编码器控制单元包括输入控制和输出控制两部分,支持正交(Quadrature)、同步串行接口(Synchronous Serial Interface,SSI)、双向同步串行接口(Bidirectional Synchronous Serial Interface,BISS)和数字同步串行协议(EnDat),使用跳线配置编码器信号类型。输入控制对接收的外部编码器信号进行电平转换后输入至Zynq的PL编码器端控制模块,输出控制则是将PL端编码器控制模块输出的波形输出至外部接口。PL中编码器控制模块用于与编码器控制单元通信,提供控制信号、采集编码器波形数据并解码得到位置数据,同时也可根据位置序列产生编码信号送至编码器输出。

脉冲IO单元输入输出同步脉冲,接收PL端脉冲产生模块产生的脉冲信号进行转换输出单端或差分脉冲,接收外部脉冲信号转换发送至PL端。PL端脉冲产生模块与脉冲IO单元通信,提供控制信号、采集输入脉冲信号,可配置脉冲数、宽度、频率、触发条件等参数,产生脉冲信号输出至脉冲IO单元。

设备监控单元用于采集设备内各类工作电压的状态以及风扇转速和温度数据,通过I2C跟ZYNQ芯片的PL端设备监控模块相连接。

PS和PL之间通过可扩展互联总线(Advanced eXtensible Interface,AXI)互联,PL端接口配置模块接收PS端控制需求和数据采集请求,对编码器控制和脉冲产生模块提供接口配置参数控制,收集位置数据和设备监控数据,打包后通过AXI总线发送至PS端。PS上运行TCP服务器,上位机可以使用IOC通过TCP对同步触发模块进行访问,通过读写映射在用户空间的PL端寄存器,读取位置信息和配置参数。

1.3 软件控制模块

软件控制模块基于Bluesky框架进行开发,其结构如图4所示。底层的硬件设备通过以太网接入软件控制模块,通过EPICS IOC进行控制和状态读取。Ophyd层将EPICS PV信息抽象为设备对象,并提供给Bluesky以API接口。在Bluesky中,扫描过程被抽象为Plan,具体为调用实验需要的硬件对象按照实验过程执行一系列原子操作来完成整个实验。Bluesky将飞扫的Plan定义为包括包括kickoff、complete、collect三个函数,其中kcikoff先完成扫描和探测器相关的参数设置然后启动扫描,complete是等待扫描完成最后执行,collect完成对探测器数据的采集、处理。RunEngine是Plan的解释器,通过执行设计好的Plan实现多设备联动完成特定实验。扫描运行过程中,RunEngine同步将数据和元数据通过Documents的方式抛出,传递给多个回调函数,在回调函数中进行数据的实时处理、显示以及存储。从用户系统获取的包括用户ID、实验类型、实验参数等内容作为元数据同时被存储,实验数据和元数据统一打包成HDF5文件格式,HDF5可以处理复杂的数据结构,并支持高性能的数据存储和检索。

图4 软件控制模块结构图Fig.4 Structure diagram of the software control module

2 飞扫系统应用

本文设计的飞扫系统在HLS的XMCD线站完成部署并应用在XAS实验采谱中。现场部署示意图如图5所示,单色器的电机采用了鸣志公司的SSDC06-ECX-H,电机的编码器信号接入同步触发模块。

图5 现场部署示意图Fig.5 Schematic of the on-site deployment

式(1)给出了光栅方程和聚焦关系,其中:α、β分别为光栅的入射角和衍射角;λ是波长;a1是光栅的设计参数;n为光栅线密度;m为衍射级次;r1、r2分别为光栅的入射臂和出射臂[23]。依据出射光能量不同计算出α、β。

光栅单色器光路示意图如图6所示,由此可得到平面镜和光栅偏转角度的计算公式(2),其中:α、β分别为光栅的入射角和衍射角;θ、φ是平面镜和光栅的偏转角度;γ是运动机构的安装误差;Xm、XG是平面镜和光栅的位置,X0m、Lem、θ0m、X0g、Leg、φ0g是初始位置和角度参数由标定得到。

图6 光栅单色器光路示意图Fig.6 Schematic of the light path in a grating monochromator

综合式(1)和式(2)通过能量计算对应波长得到光栅的入射角和衍射角α、β进而计算出平面镜和光栅的偏转角θ、φ,进一步得到能量和平面镜、光栅位置Xm、Xg之间的关系,即按照特定轨迹同步运动光栅和平面镜就可以连续改变能量。

进行飞扫实验的时候,控制平面镜和光栅位置的两个电机进行同时同步运动。两轴的联动运动控制采用连续直线插补运动,飞扫运动过程中,速度设定值为两个轴的合成速度,XMCD线站光栅-平面镜位置关系如图7所示,在常用实验能量段近似为线性,两个电机的速度近似匀速。同步脉冲的触发选择光栅电机的编码器作为触发。

图7 XMCD线站光栅-平面镜位置关系Fig.7 Relationship between the grating and mirror position in XMCD

光电流信号采集使用电流计6517B,6517B可以在设定触发点数量的条件下,通过外触发进行采集并将采集的数据保存在内部寄存器中,当采集到数量上限时停止接收触发信号。使用6517B的TRIGGER LINK触发模式接收同步触发模块的TTL输出信号,进行同步数据采集。

上位机运行扫描控制软件,其飞扫的软件流程如图8所示。用户在图形界面上输入和实验相关的用户信息、样品信息以及扫描相关的起始能量、结束能量和能量间隔。根据扫描起始能量、结束能量以及能量间隔这3个参数计算得到对应的扫描能量点数量,再通过式(1)和式(2)计算得到每个扫描能量点对应的光栅和平面镜位置,联合这些位置信息即可得到对应扫描能量范围的光栅和平面镜二维运动轨迹。

图8 飞扫软件流程图Fig.8 Flowchart of the on-the-fly mode program

开始扫描后,RunEngine执行飞扫Plan,在Kickoff过程完成对6517B电流计触发模式、触发点数的设置以及将扫描轨迹和触发点参数分别发送给运动控制模块和同步触发模块,其中触发点参数以相对位置的形式存储在同步触发模块的序列表模块,在开始扫描前将其内部位置参数设为0与序列表首行位置对齐,设置结束后会给控制器下发开始飞扫的命令,控制器按照寄存器中保存的扫描轨迹驱动两台伺服电机同步运动。之后进入Complete过程等待扫描的结束,扫描结束后收集6517B电流计记录的数据,在图形界面上显示扫描结果并将数据以HDF5的格式存入数据库。

对于上位机下发的触发点参数,同步触发模块将其存储到序列表模块中,并在初始状态指向序列表第一行。扫描过程中,同步运动控制模块依据能量设置参数改变光栅、平面镜的位置,同时编码器将位置信号输入到同步触发模块,同步触发模块解码后得到电机当前位置,将当前位置与内部序列表模块生成的触发位置进行比较,若满足序列表当前行的预设条件则生成触发信号,触发6517B电流计记录当前电流,同时序列表内部指向下一行,等待到达下一个触发位置再次触发,直到扫描结束。

3 飞扫控制系统性能测试

3.1 飞扫与步扫对比实验结果

首先是验证飞扫系统实验结果的正确性,即与传统步进扫描结果相比的一致性。对Fe样品在能量范围为690~740 eV、能量分辨率为0.1 eV的条件下分别使用飞扫系统和步进扫描方式进行XAS(Xray Absorption Spectroscopy)实验。实验结果如图9所示,横轴为扫描能量范围,纵轴为两台6517B采集电流结果相除后归一化后的值。飞扫系统用时为1 min 50 s,获得相同结果使用传统的步进扫描方式需要花费25 min左右。

图9 XAS实验的一致性测试结果Fig.9 Results of consistency testing in XAS experiments

可以看出,两次结果峰形一致、峰位置一致。以步进扫描结果为基准,依据式(3)计算平均绝对误差和相关系数[24]。平均绝对误差是两组数据每个数据点误差绝对值的平均值,结果越小说明两条曲线一致性越好;相关系数是两组数据的线性相关程度,越接近1则两条曲线越相关即一致性越好。

其中:MAE是平均绝对误差;r是相关系数;y1、y2是步进扫描和飞扫实验中6517B采集的电流值。

经过计算,平均绝对误差结果为0.01,相关系数为0.993,两条曲线的最高峰半高宽均为3.40 eV,说明使用飞扫模式只需要花费步进扫描十几分之一的时间就可以得到一致性很高的结果,实验效率提高了十倍以上。

3.2 稳定性测试

为了测量飞扫系统多次实验结果的重复性即系统的稳定性,本文对Co样品在能量范围275~315 eV,能量分辨率为0.1 eV,使用飞扫系统进行XAS实验,以相同的运动速度采集了10组数据。为清晰展示,在原始数据上做了上下偏移,实验结果如图10所示。

图10 XAS实验的稳定性测试结果Fig.10 Results of stability testing in XAS experiments

依据式(4)计算多条曲线的平均绝对误差,与式(3)不同的是当有多条曲线时,先计算每条曲线与其他曲线之间的平均绝对误差,然后将它们求平均得到多条曲线之间的平均绝对误差,平均绝对误差越接近0说明多条曲线的偏差越小即结果越稳定。

其中:MAE是所有曲线的平均绝对误差;MAEi是每一条曲线与其他曲线计算出的平均绝对误差结果;n是曲线数量;m是数据数量。

10条曲线与其他曲线的平均绝对误差计算结果如表1所示,最后计算10组数据的平均绝对误差为1.44×10-3,非常接近0,说明在相同实验条件下使用飞扫模式多次实验结果重复性高,稳定性好。

表1 每组数据的平均绝对误差Table 1 Mean absolute error for each group

3.3 不同扫描速度下的实验结果

对Fe样品改变不同的运动速度使用飞扫模式进行实验,分别花费1 min 20 s、1 min 50 s、5 min 5 s在相同能量范围、相同能量间隔完成三次XAS采谱,得到如图11所示结果,三次采谱结果峰形一致且峰位置一致。依据式(4)计算三次结果的平均绝对误差为1.5×10-3,接近于0,可知结果基本一致。因此,本文设计的飞扫系统进行能量扫描受速度影响很小具有通用性,可以根据不同实验的要求,合理选择飞扫的运行速度以达到最好的实验效果。

图11 XAS实验不同扫描速度测试结果Fig.11 Results of different scanning speeds testing in XAS experiments

4 结语

为解决合肥光源线站现有步进扫描速度慢、效率低的问题,本文设计开发了一种基于硬件触发的飞扫系统,基于Zynq 7020设计了硬件同步触发模块,并采用EtherCAT总线搭建了同步运动控制模块,在EPICS架构基础上采用Bluesky开发了软件控制模块,并在合肥光源的软X射线磁性圆二色实验站上部署、测试了该系统。实验结果表明,使用该系统进行XAS能量采谱,单次采谱时间相较于步进扫描模式的几十分钟量级缩短至分钟量级并且能保证吸收谱结果一致,达到了预定的设计目标。本文设计的飞扫系统提高了扫描实验的实验效率和用户体验,一方面为未来合肥先进光源(Hefei Advanced Light Facility,HALF)线站相关系统的搭建、调试打下了基础,另一方面由于设计的硬件系统和使用的软件框架具有良好的可拓展性,可为其他光源的实验站建设提供参考。

作者贡献声明张天哲负责硬件开发,系统测试和调试;孔安博负责软件开发;陈凯负责测试和实验数据分析;陈留国负责统方案设计,论文的修改与指导;刘功发负责论文审阅和修改。

猜你喜欢
光栅编码器控制器
基于FPGA的同步机轴角编码器
基于PRBS检测的8B/IOB编码器设计
CDIO教学模式在超声光栅实验教学中的实践
基于LabView的光栅衍射虚拟实验研究
JESD204B接口协议中的8B10B编码器设计
多总线式光电编码器的设计与应用
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列
倍福 CX8091嵌入式控制器
4V三输出同步降压型控制器