【正运动技术】运动控制中的微调轨迹动态补偿 点击:7 | 回复:0



正运动技术

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:464帖 | 360回
  • 年度积分:437
  • 历史总积分:1437
  • 注册:2020年9月10日
发表于:2025-12-31 08:59:21
楼主
市场背景

在实际应用场景中,我们经常能遇到一些精度上的补偿问题,下面正运动给大家介绍几种实际的应用场景,可以更好地解决一些场景应用的问题,无论是导轨的螺距分布不够均匀,使运动位置不准确和螺距比较大的换向时轴旋转不能立马带动机台移动的现象,还是流水线传送带位置触发不够精准,或者机构上无可避免的固定偏差,运动中需要在已有的轨迹避免碰撞做一些微调。

那么接下来我们就来看一下如何通过正运动的指令来进行针对这四种场合的补偿。


场景一

运动中微调轨迹补偿(可手轮触发)


  应用描述:把主轴运动实时复制到从轴,并保留一个虚拟轴作为微调入口。CONNECT指令把轴0与轴1按1:1比例耦合,确保两者位移、速度、加减速度一致;同时另设虚拟轴2,通过ADDAX将它的脉冲叠加到轴1,形成“主轴+补偿”的复合轨迹。触发源选用IN0的边沿信号,上升沿正向补5脉冲,下降沿负向补5脉冲,实现手轮式即时修正,无需停机。

● Basic代码如下:


BASE(0,1)
ATYPE=1,1
UNITS=100,100
DPOS=0,0
SPEED=20,20
ACCEL=200,200
DECEL=200,200
TRIGGER '自动触发示波器
CONNECT(1,0)  AXIS(1)        '轴0连接到轴1,比例为1
MOVE(100)  AXIS(0)                      '轴1运动100,轴0运动100
BASE(2)
ATYPE=0
UNITS=100
ADDAX(2) AXIS(1) '设置叠加的绑定轴,虚拟轴2叠加给实际轴1
WHILE 1
  IF SCAN_EVENT(IN(0)) > 0 THEN     'IN0上升沿触发
  MOVE(5)  AXIS(2) '在运动中微调同步轴1轨迹位置
  ELSEIF SCAN_EVENT(IN(0)) < 0 THEN 'IN0下降沿触发
  MOVE(-5) AXIS(2) '在运动中微调同步轴1轨迹位置
  ENDIF
wend

● 具体指令内容:

CONNECT-同步运动

CONNECT-同步运动.png

ADDAX-运动叠加

ADDAX-运动叠加.jpg
● 效果如下:
效果图1.png


红色箭头部分即补偿部分,WHILE循环内SCAN_EVENT监测IN0边沿,MOVE(5)或MOVE(-5) AXIS(2)完成±5脉冲的瞬时叠加,实现运行中补偿的效果。


场景二

激光测高Z轴追平


应用描述:激光测高设备通过通讯处理,把激光测出的高度与标准平面差值HighData通过串口实时送达控制器。控制器将轴3设为实际Z轴,轴4设为补偿虚拟轴,ADDAX(4) AXIS(3)使补偿脉冲直接叠加到Z轴。

当IN1上升或下降沿到达时,MOVEABS(HighData) AXIS(4)立即把激光测得的偏差写入轨迹,相机在即将拍照瞬间完成焦平面自动对齐。

● Basic代码如下:


'示例二:激光测高微调相机Z轴高度
'激光器测高补偿Z轴示例,让Z轴上的相机保持拍照平面和目标平面统一高度
'测高数据采用激光器提前通讯过来,激光器保持在相机前方获取测高数据,提前反馈给Z轴进行微调
DIM HighData '测高偏差数据(通讯或者硬件接口获取)需要标定好零点参数
BASE(3,4)
ATYPE=1,0'轴3为实际Z轴,轴4为虚拟轴
UNITS=100,100
DPOS=0,0
SPEED=20,20
ACCEL=200,200
DECEL=200,200
ADDAX(4) AXIS(3) '轴4叠加脉冲给轴3
WHILE 1
  IF SCAN_EVENT(IN(1)) > 0 THEN     'IN1上升沿触发
      MOVEABS(HighData) AXIS(4) '通过偏差数据补偿调整Z轴高度
  ELSEIF SCAN_EVENT(IN(1)) < 0 THEN  'IN1下降沿触发
      MOVEABS(HighData) AXIS(4) '通过偏差数据补偿调整Z轴高度
  ENDIF
wend

● 效果如下:
效果图2.png

在线命令输入HighData = 1.5,模拟获取的偏差值为1.5,通过示波器可以观察到,输入口1信号触发时,红色曲线Z轴补偿移动了1.5。


场景三

飞拍锁存修正


应用描述:将传感器输出接入驱动器高速探针口,控制器通过总线读取锁存值,与理论目标坐标Target比较得到偏差P。由于驱动器响应滞后,P可能包含伺服周期累积误差,需在下一插补周期立即补偿。

通过REG_POS捕获实际的飞拍位置,重新修正飞拍位置,当IN0上升或下降沿到达时,立即把偏差写入table进行修正,触发一次拍照即修正,根据修正后的位置进行飞拍,无需减速停顿,满足高速飞拍节拍要求。

飞拍锁存修正.png
● 具体指令内容:

REGIST-锁存

REGIST-锁存.jpg
● Basic代码如下:


'示例三:飞拍锁存位置补偿,根据驱动器探针反馈数据进行补偿
'动态与静态点结合处理,或者提前通过位置传感器知道位置,反补给位置进行飞拍,通过锁存获取补偿
'一些驱动器滞后性的问题(驱动器参数调得好适配性越高,精度误差越小)
'导致精准输出有影响,此时通过锁存位置抓取数据进行偏差补偿
'做位置锁存和计算偏差,并把锁存值重新写入飞拍点
'举例简单飞拍触发
BASE(1)
ATYPE = 1
speed = 10000
ACCEL = 100000
DECEL = 100000
DPOS = 0
OP(0,0)
TABLE(0)=100
HW_PSWITCH2(1, 0, 1, 0, 0,1)  
MOVEABS(TABLE(0)+50)
DIM  regist_imode
regist_imode = 4  
BASE(1)                                '选择需要锁存位置的轴号  
'当发现速度较快的场合,飞拍位置有偏差,拍照不准,启动锁存触发,捕获飞拍的实际位置  
REGIST(regist_imode)             '锁存模式  
IF regist_imode = 4 THEN
   WAIT UNTIL MARK
   ?"模式",regist_imode ,"锁存位置 REG_POS",REG_POS      
   OP(0,0)      
   table(0)= table(0)+(table(0) -REG_POS)   'REG_POS的锁存飞拍位置保存,与实际偏差做对比得出实际偏差      
   WAIT IDLE      
   DPOS = 0  
ENDIF  
REGIST(regist_imode)  '锁存模式  
'重新飞拍修正后的位置  
HW_PSWITCH2(1, 0, 1, 0, 0,1)    
MOVEABS(table(0)+50)  
WAIT UNTIL MARK    
?"模式",regist_imode ,"修正后的锁存位置 REG_POS",REG_POS

● 效果如下:
效果图3.png

高速情况下,预设飞拍点位为100,但实际在100.02输出了,后续根据偏差值修正后,重新执行第二次飞拍,实际锁存到位置为100,和一开始预设点位一致,锁存飞拍补正完成。


场景四

螺距补偿反向间隙补偿


  应用描述:在实际应用中,导轨的螺距分布不均匀,可能导致运动位置不准确;而在螺距较大时,换向时轴旋转可能无法立即带动机台移动。针对这些问题,我们可以通过螺距补偿和反向间隙补偿功能来解决,从而提高运动精度和响应速度。

● 具体指令内容:

螺距补偿:每点的补偿脉冲个数存储在TABLE表里面。

PITCHEST-螺距补偿

PITCHEST-螺距补偿.jpg
● Basic代码如下:


'单轴螺距补偿:
'例一:
ATYPE(1)=6
UNITS(1)=100
DPOS(1)=0
BASE(0)
ATYPE=1
UNITS=100
SPEED=100
ACCEL=500
DECEL=500
TABLE(0,0*UNITS(0),-30*UNITS(0),-50*UNITS(0),30*UNITS(0),50*UNITS(0),0*UNITS(0)) 'TBALE存贮螺距补偿值,补偿值是脉冲个数,不是补偿距离值
DPOS=0
MPOS=0
PITCHSET(1,0,100,6,0) 'MPOS=0时,开始补偿6个点,间隔100
TRIGGER
MOVE(700)
MOVE(-700)
WAIT IDLE
PITCHSET(0,100,100,6,0)

● 效果如下:
效果图4.png

从示波器抓取的数据可以看到,在这段运动中,编码器轴1实际的位置有六段补偿。





楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师