激光跟踪仪角度采集系统设计及误差修正研究

2014-04-13 09:30董登峰王博李万红周维虎劳达宝
计测技术 2014年5期
关键词:状态机光栅时钟

董登峰,王博,李万红,周维虎,劳达宝

(中国科学院光电研究院,北京100094)

0 引言

激光跟踪仪是一种高精度超大尺寸空间工业测量仪器,广泛应用于大型飞机、船舶潜艇、卫星火箭、工装型架等大部件的装配对接。激光跟踪仪测量合作目标(靶球)的空间坐标位置取决于跟踪仪基准点到靶球的距离长度及当前的方位、俯仰角度,因而角度测量是跟踪测量的核心单元之一,而且是目前制约空间位置测量精度的主要瓶颈。

为了在激光跟踪仪中实现精密角度测量,通常采用高精度的角位移测量传感器圆光栅编码器,并对编码器输出信号进行准确快速采集。一般而言,角度采集系统有三种方式:采用独立元器件设计开发逻辑门电路,采用专用细分计数电路,采用现有的可编程逻辑器件或微控制器。第一种方法周期长、可靠性低;第二种方式功能单一、渠道不畅;第三种方式(如FPGA)介于前两者之间,在保证可靠性的基础可以方便地进行编程、出错、再编程操作,灵活性强[1]。

在获得可靠角度数据的基础上进一步提高测角精度有两个途径[2]:①提高光栅盘的刻划以及轴系的加工、装配精度;②采用误差修正技术。前者受制于加工条件和跟踪仪的体积大小不易实现,后者主要依赖于光栅盘的检测精度以及光栅盘本身的重复精度。所以,以高精度的测量数据为基础,应用误差修正技术是提高跟踪仪测角精度的主要途径之一。

本文针对圆光栅编码器,介绍一种基于FPGA 的角度采集实现方法以及基于谐波分析的角度误差修正方法。角度采集充分利用FPGA 大规模逻辑资源、高集成度、高稳定性且易编程的特点,完成对圆光栅输出信号的滤波、倍频辨向计数及数据传输功能。根据采集到的角度数据,在上位机进行谐波分析,建立误差修正模型。在测量过程中,根据模型对实测角度进行在线修正以提高测量精度。

1 系统组成及设计

为减小仪器体积,激光跟踪仪中的角度测量采用Renishaw 的精巧型高精度圆光栅。为了消除偏心等误差,其读数头成对安装。光栅盘直径52 mm,全周刻线数8192,细分盒实现250 倍细分,输出A,B 正交码和Index 零位信号,角度分辨力为0.63″。A 信号超前B 信号1/4 周期,表示圆光栅正转,B 信号超前A 信号1/4 周期表示圆光栅反转,如图1所示。当圆光栅经过零点时Z 信号输出一个高电平信号。利用Z 相信号,可以矫正系统的计数数据,有效消除系统的累计误差。圆光栅通过细分盒处理后,输出标准的RS422 差分信号,每转产生2048000 个方波脉冲。

图1 圆光栅正转、反转输出波形

角度脉冲数据采集系统采用自顶向下的设计思想,除时钟管理及同步控制外,分为三大模块[1,3]:数字滤波、辨向计数模块及数据通信模块。其中滤波模块的主要功能是消除干扰脉冲对系统计数的影响,保证计数的准确性;辨向计数模块主要完成四倍频、正反转辨识和计数功能;数据通信模块主要负责将数据传输到FPGA 外部其他数据处理芯片,避免跨时钟域数据传输带来的各种不利影响。采集系统的结构如图2所示。

2 角度采集系统设计

2.1 滤波设计

跟踪仪在工业现场应用存在各种不确定性因素,如跟踪控制过程中跟踪头的振动、抖动和现场环境中的电磁干扰。干扰噪声会使得圆光栅细分盒输出的正交编码信号在一定程度上受到干扰,输出脉冲产生毛刺,导致脉冲计数错误,从而严重影响测量精度[4]。

图2 角度数据采集系统结构框图

由于经过细分盒输出的方波脉冲为差分信号,受到电磁干扰产生的共模噪声在一定程度上得到抑制。对于机械振动和抖动产生的噪声,通常表现为在某一相的脉冲的边缘地方出现毛刺的情况,如图3所示。因此有效滤除脉冲的抖动和毛刺,是提高计数精度的关键步骤。

对抖动产生的毛刺信号进行观察和分析发现,其持续时间通常极短,故频率一般都远高于圆光栅正常工作时所输出的脉冲频率,因此本文采用一种高频数字计数滤波方法:根据系统允许的最高转速,结合所使用圆光栅的刻线数,计算出最高转速下圆光栅输出的脉冲频率,并以此频率为临界点,将高于这个临界点的脉冲视为干扰脉冲滤除。即只有持续时间超过允许的最短时间的脉冲视为正常的计数脉冲。

图3 受干扰后编码器输出波形

激光跟踪仪允许的电机最大转速为15 r/min,有效脉冲最高频率应为500 kHz。FPGA 工作时钟设定为50 MHz,则1/4 周期光栅脉冲信号的高或者低电平至少应持续12 个FPGA 工作时钟。持续时间低于12 个工作时钟的脉冲信号(超过了激光跟踪仪允许的最大转速)被视为干扰脉冲予以滤除。持续时间大于等于12个工作时钟的脉冲将被送到FPGA 的辨向计数单元。此方法能有效去除高频脉冲干扰对计数的影响,保证系统的测量精度。

2.2 辨向计数

激光跟踪仪一个显著的特点是实时精密跟踪合作目标,因此跟踪头旋转方向在不断改变。为准确地进行跟踪角度测量,角度采集系统必须具有快速准确的辨向计数功能。

根据Renishaw 增量式圆光栅编码器的基本工作原理,A,B 两相信号输出共产生4 个跳变沿,基于A 相和B 相信号的跳变沿对圆光栅状态进行划分。根据状态划分和时序,本文采用有限状态机对圆光栅的方波信号进行四倍频辨向计数,另外状态机专设一路高速同步时钟对方波信号进行采样和滤波处理。

有限状态机是一种根据输入集合及次序决定输出集合的时序电路,是数字系统中实现高效率可靠性逻辑控制的重要方法。其可分为Moore 和Mealy 两种类型。Mealy 状态机的输出是当前状态和输入信号的函数。即当前的圆光栅计数器既与当前编码器所处的组合状态有关,又与前一个状态有关。Mealy 状态机具有较强的实时性,用于防止输出信号出现毛刺,增强系统的稳定性,而且比Moore 状态机在状态切换时提前一个同步时钟。

将圆光栅输出信号A,B 的高低电平分别用1,0 表示,则两者组合共有A1B1,A1B0,A0B1,A0B0 四种稳定状态。当圆光栅输出状态按A0B0→A1B0→A1B1→A0B1→A0B0 变化时,表示圆光栅正转,状态机计数增加;当状态按A0B0→A0B1→A1B1→A1B0→A0B0 变化时,圆光栅反转,状态机计数递减。圆光栅一旦转动,计数模块可以随时在正转和反转状态中自由切换。

辨向计数模块内部自定义两个寄存器分别存储“当前状态”和“新状态”。“当前状态”和“新状态”值相同时,则状态机等待且不进行任何操作。当圆光栅编码器输出信号A 或B 任一电平信号发生变化时,辨向计数模块会将其存储到“新状态”寄存器中,并根据A,B 两相信号相应的逻辑关系及两个寄存器中的状态判断当前的状态变化所表征的编码器转动方向,同时进行相应的加或减运算。接着将“新状态”寄存器中的值赋给“当前状态”寄存器,等待A 或B 信号的改变触发下新一轮的操作。如此反复完成转向辨识和脉冲计数。

由于稳定状态是以A 相信号和B 相信号的脉冲边沿变化进行划分的,而A,B 一个周期内边沿均变化两次,所以有限状态机在一个周期内会触发4 次状态判断,完成了信号的四倍频的功能,提高了脉冲计数的分辨力。

为了便于软件维护及升级,程序设计中引入A0B0+,A1B0 +,A1B1 +,A0B1 + 与A0B0-,A1B0-,A1B1-,A0B1-等八个状态,用于表示A 相信号和B相信号在某个特定的状态下发生变化后,所引起的有限状态机的操作。状态机状态的转换流程图如图4所示。

图4 辨向计数模块状态机状态转换图

2.3 数据通信模块的设计

角度数据采集系统需要与跟踪仪的跟踪控制单元进行实时通信,以提供角度信息并进行误差补偿和进一步数据处理。为此本文利用FPGA 片内资源自定义一片双口RAM 作为缓存。片内一部分用来存储外部处理器发送到FPGA 的指令,另一部分用来存储FPGA 上传至上位机或其外部处理器的计数结果。自定义双口RAM 能够灵活地配置地址总线、总线数据宽度,修改与通信相关的逻辑次序和协议,方便地扩展FPGA 数据采集系统的其他功能。为便于与其他处理器进行通信,RAM 区预留一个同步时钟信号,进行同步通讯。以避免数据传输过程中由亚稳态造成的错误。自定义双口RAM 的数据流向如图5所示。

图5 自定义双口RAM 数据流向

在通信过程中,把自定义的双口RAM 划分为命令、数据两个部分,命令部分为外部处理器数据流向FPGA;数据部分为FPGA 计数逻辑模块向双口RAM 的数据部分写入数据;在同步时钟的下降沿“片选”以及“读”信号有效后,触发FPGA 数据流向外部处理器。利用预留的同步时钟来控制数据的传输:在同步时钟上升沿“片选”信号以及“写”信号有效后,触发FPGA 内部逻辑电路,内部的逻辑模块和外部处理器分别读取双口RAM 中的数据。利用同步时钟控制数据的读写,能够防止外部处理器和内部逻辑模块同时对双口RAM 的同一个存储单元进行操作所产生的数据冲突。而且由于同步时钟的控制,FPGA 传输的数据仅延迟了一个同步时钟周期,较好地保证了激光跟踪仪控制系统的实时性。在此基础上,如果想进一步提高实时性可以根据实际的通讯速度和频率,适当调整同步时钟的周期。

3 仿真及实验结果

基于前述设计思路,本文以Xilinx 公司Spartan-3E系列的FPGA XC3S500E 作为验证平台。在ISE 软件环境下,基于Verilog HDL 语言开发各个功能模块,利用Modelsim 进行仿真。结果如图6 和图7所示。

图6 滤波模块仿真波形图

图7 辨向计数模块仿真结果图

图6 中clk 为系统工作时钟,in_a 与in_b 为数字滤波模块的输入,out_sample 为clk 二倍频后得到的采样时钟,out_a 与out_b 为模块输出。由图6 可以看到系统输入in_a 和in_b 经过滤波模块处理后,高频干扰脉冲被有效滤除,数字滤波模块输出波形out_a及out_b 符合正确计数的要求。

由图7,输入信号a,b 电平的改变会引起计数模块中状态寄存器“新状态”nstate_reg 和“当前状态”state_reg 状态值的改变,计数模块根据有限状态机辨识出圆光栅为正转或反转并进行+1 或-1 操作。由仿真结果可以看出当圆光栅编码器从正转切换到反转,并且反向转动速度为正向转速的2 倍时(信号A 和信号B 的频率增加了一倍),计数模块可以正确辨向并计数。

在仿真验证的基础上,以8 面棱体与自准直仪相结合开展实验进行角度验证。实测8 组角度数据及其相应的测量偏差如表1所示。

Renishaw 圆光栅的技术手册标明光栅测量误差为4.28″,实验测得的角度误差小于3.5″,表明角度采集处理结果准确无误,能够满足激光跟踪仪的角度测量要求。

4 误差分析及修正

激光跟踪仪测角误差主要来源于光栅盘的机械安装误差、柱面刻划误差以及细分盒的细分误差等周期性误差[5-6]。机械安装误差包括偏心、倾斜、轴系晃动等;刻划误差指刻线实际位置与理想位置的偏差;细分误差指细分信号的非严格正交误差、幅度不等误差和电压信号的漂移误差。前两者以一转为一个基周期,属于中低频误差;后者以一个栅距为一个基周期,属于高频误差。但两者都具有周期性,因而可以采用谐波分析法对误差数据进行处理以提高测量精度,即在基周期内取N 等分测量点,将离散实验数据近似表示为傅里叶级数,通过数据拟合计算得到各阶谐波系数。当等分数N 为偶数时,只能计算到m=N /2 阶系数;N 为奇数时,只能计算到m=(N- 1)/2 阶系数[6-7]。

表1 实验测试结果

一般地,对于0 ~m 阶误差谐波函数,可以表示为

式中:m 为测角误差谐波的最高阶数,Ck为第k 阶误差谐波系数,φk为第k 阶谐波误差的初相角。

实验测得的误差以Δθ 表示,则可以采用非线性最小二乘法求解下式[8],即

得到满足e 为最小值时的谐波系数Ck,φk。由于采用的是8 面棱体,所以m=4,根据表1 及式(2),得到计算结果如表2所示。

表2 误差谐波函数参量计算结果

由表2,谐波函数的一、二、三阶系数较大,权重较高,所以采用一、二、三阶谐波函数对测量误差进行修正。重新开展一次实验,实测误差及修正后的结果如表3所示。

表3 误差修正前后的结果对比

实验数据表明,测量误差由3.5″减小到1.5″以内,这说明误差谐波分析方法能够显著提高圆光栅测角系统的精度。

5 结束语

本文以FPGA 为平台,详细介绍了激光跟踪仪角度数据采集系统的设计和实现方法,仿真及实验结果表明该系统能够有效滤除干扰脉冲,准确无误地进行辨向计数及数据通信。在分析了圆光栅测角误差产生机理的基础上,采用误差谐波分析方法对实验结果进行误差修正,使系统测量误差由3.5″减小到1.5″以内。本文设计的角度采集系统具有灵活性和易于扩展的特点,所采用的谐波分析方法具有一定的通用性,可以综合推广应用到其他相关领域。

[1]王博,郭阳宽,周维虎,等.基于FPGA 的圆光栅编码器数据采集系统设计[J].微型机与应用,2012,31(23):28-31.

[2]费斌,徐文雄,蒋庄德,等.计量圆光栅动态精度的检测技术[J].仪器仪表学报,1996,17(5):525-529.

[3]王鹏,杜卫东,吕志刚,等.基于FPGA 与FSM 的高精度测角系统设计与实现[J].测控技术与仪器仪表,2012,38(2):77-79,83.

[4]苏东风,续志军,贾继强,等.提高圆光栅测角系统精度的读数头设计[J].电子测量与仪器学报,2013,27(7):653-657.

[5]高贯斌.圆光栅角度传感器的误差补偿及参数辨识[J].光学精密工程,2010,18(8):1766-1762.

[6]赵人杰,马文礼.利用误差谐波补偿法提高金属圆光栅测角精度[J].仪器仪表用户.2009,116(3):69-71.

[7]Kaul S K,Tickoo A K,Koul R,et al,Improving the accuracy of low-cost resolver-based encoders using harmonicanalysis[J].Nuclear Instruments and Methodsin Physics Research,2008,586(A):345-355.

[8]张礼松,管炳良.关节坐标测量机研制中圆光栅误差修正技术[J].计测技术,2007,27(4):41-43.

猜你喜欢
状态机光栅时钟
别样的“时钟”
古代的时钟
基于有限状态机的交会对接飞行任务规划方法
有趣的时钟
CDIO教学模式在超声光栅实验教学中的实践
时钟会开“花”
基于LabView的光栅衍射虚拟实验研究
光栅衍射实验教学中的体会
用实函数直接计算光栅衍射的光强分布
FPGA设计中状态机安全性研究