运动控制系统中的跟踪误差

更新 Nov 9, 2018

适用于

Hardware

  • PCI-7334
  • PXI-7332
  • PXI-7330
  • PXI-7348
  • PXI-7340

Software

  • Measurement and Automation Explorer (MAX)
  • LabVIEW Base

Driver

  • NI-Motion

Operating System

  • Windows

问题详述

什么是跟踪误差(following error),这类错误会对我的运动控制系统产生什么影响?

解决方案

控制器(NI 73xx运动控制器系列)将其控制信号与反馈信号进行比较,从而验证电机是不是正按照所给定的命令在运行。控制命令中给定的值与反馈值之间的差值便是跟踪误差(following error)。

跟踪误差在MAX中的显示

当我发指令执行一次运动时,为什么应用程序会报告超出了跟踪误差following error)的极限值?

在执行某一次运动时,跟踪误差(following error)的极限值是可以调整的。当实际误差超过设定的极限值时,便会出错,并报告超过极限值的错误。由多种因素都由可能导致跟踪误差(following error)超限,如机械系统方面的缺陷、不合适的输入输出、控制回路缺陷等。虽然跟踪误差(following error)问题不大容易调试,但大多数情况下都是由下面所列的原因导致的。
  • 原因1:编码器输入分辨率设置不正确
为了提高反馈精度,NI的运动控制卡对编码器反馈脉冲信号的每一个边沿都会读取。对于正交编码器来说,编码器的每一组正交脉冲都对应有四个脉冲边沿(A项和B项的上升沿河下降沿)。因此,如果您所用的编码器没转一周输出2000组正交脉冲,那么,控制卡实际每周将读到8000个边沿——并且,每一个边沿将会被作为一次“计数”来对待。

当在MAX 中设置“Encoder counts per revolution(编码器计数每转)”参数时,大家往往会错误地输入编码器的物理分辨率。而事实上,这里需要输入的是控制卡实际会读到计数值,即,四倍的物理分辨率。
  • 原因2:命令或反馈外部线接反
当发送一个顺时针方向运动的命令时,得到的反馈信号表明确实是在做顺时针方向的运动吗?如果反馈信号表明是在做反向的运动,则很有可能是输出给电机的模拟信号极性接反了或者编码器的A项和B项接反了。可以检查一下可能的连线错误来弥补这一错误。
如果确认是编码器的极性接反了,那么也可以在MAX 中将二者改正过来。如果确实需要改变编码器的极性,选择有问题的轴,并找到窗口中相应的编码器设置位置。在编码器选项卡上改变A、B两项中任意一项的极性,注意,不是两项都改,如果使用了索引,那么相应的索引也要改。
  • 原因3:在伺服电机控制系统中所用的PID环没有调到合适的参数
由于NI的伺服电机控制板卡是针对各种应用方案设计的,所以,针对某一特定的应用场合,板载的PID控制环都需要进行有针对性的配置。在MAX 中合适地调节PID环(设置KpKdKi等参数)对于确保电机按照设定的方案运行是有必要的。如果系统对振动、不确定性运动等产生的命令作出相应,那么控制环有可能会偏离原定的轨迹。在调节电机系统时的一些注意事项可以参考Understanding Servo Tune
  • 原因4:发出的指令要求的运动太快
高速的运动要求运动控制系统有高的相应速度。如果高速或高加速度的指令频繁地导致跟踪误差(following error)超限情况发生,那么,电机或工作台很有可能无法达到所给定的目标速度和加速度。(可能的原因很多,比如过大的摩擦力、机械部件不在同一直线上或者电机扭矩太小等。)可以考虑调整机械结构或者使用更小的速度或加速度来解决这个问题。I

相关信息

NI 73xx运动控制器包含一个板载PID控制回路,允许使用位置和速度的反馈来调整其命令信号。从模拟电压或脉冲序列编码器信号读取的反馈指示电动机的实际位置/速度。

在Measurement&Automation Explorer(MAX)中设置Encoder Counts Per Revolution(编码器计数每转)输入时,通常会将此值误认为是编码器的物理分辨率。但是,此设置需要保持控制器读取的相应计数,并且其位该分辨率的四倍。

更改允许的最大跟踪误差

在MAX中,可以在设备和接口»PCI-73xx»默认73xx设置»轴x»轨迹设置 ( Devices and Interfaces»PCI-73xx»Default 73xx Settings»Axis x»Trajectory Settings)为每个轴设置跟踪误差。如果使用MAX 中的“1-D Interactive”或者“2-D Interactive” 界面来发送运动指令,选择高级(Advanced) 选项卡。在Advanced Data group下,调整标签为“Following Error”的控件的值。当在LabVIEW中使用FlexMotion API时,可以使用Load Following Error.flx VI来设置允许的跟踪误差值

在C或Visual Basic中编程时,可以使用flex_load_follow_err函数。

本文是否有帮助?

无帮助