【正运动技术】二维螺距补偿(三) 点击:3 | 回复:0



正运动技术

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:471帖 | 360回
  • 年度积分:18
  • 历史总积分:1455
  • 注册:2020年9月10日
发表于:2026-01-27 14:20:46
楼主

假设工况2:XY轴的螺距均有异常需要补偿,但X轴和Y轴安装是垂直的。

二维螺距补偿.png

假设X轴的激光干涉仪数据如下:

'运动到1mm处,激光干涉仪打出来实际是0.9mm处,所以需要补偿的脉冲 = 0.1*units

'运动到2mm处,激光干涉仪打出来实际是1.8mm处,所以需要补偿的脉冲 = 0.2*units

'运动到3mm处,激光干涉仪打出来实际是2.7mm处,所以需要补偿的脉冲 = 0.3*units

'Y轴丝杆工况和X轴丝杆工况类似


步骤一:

规划起始补偿点,补偿间距,补偿的行数和列数。


'初始化二维螺距补偿的相关参数
TableId = 1000 '补偿数据的Table起始点
StartMposX = 0 'X轴开始补偿的位置
StartMposY = 0 'Y轴开始补偿的位置
DisX = 0.5 'X轴方向补偿的间距
DisY = 0.5 'Y轴方向补偿的间距
ColNumX = 50 'X轴方向补偿的点数
RowlNumY = 50 'Y轴方向补偿的点数


步骤二:

根据该工况的测试环境,计算各个补偿点的X方向和Y方向的改补偿的脉冲数,并更新到TABLE。

'假设X轴的激光干涉仪数据如下:
'运动到1mm处,激光干涉仪实际是0.9mm处,所以需要补偿的脉冲 = 0.1*units
'运动到2mm处,激光干涉仪实际是1.8mm处,所以需要补偿的脉冲 = 0.2*units
'运动到3mm处,激光干涉仪实际是2.7mm处,所以需要补偿的脉冲 = 0.3*units
'Y轴丝杆工况和X轴丝杆工况类似
'更新该工况下二维补偿表的TABLE数据
FOR i=0  to  RowlNumY-1
    '先按行填写该行的每一列的数据
    FOR  j=0  to  ColNumX-1
    '【实际测试发现运动到1mm处补偿的脉冲数不是0.1*units,是因为算法发现发0.1*units实际跑到不是0.1mm,发0.1111*units才跑0.1mm】        
        Table(TableId+2*(i*ColNumX+j)) = DisX*(j+1)*0.1*UNITS(AxisX)        
        Table(TableId+2*(i*ColNumX+j)+1) = DisY*(i+1)*0.1*UNITS(AxisY)    
    NEXT
NEXT


步骤三:

调用二维螺距补偿指令启用二维螺距补偿功能。

'开始2D螺距补偿
WAIT IDLE
PITCH2SET(1,StartMposX ,StartMposY,,DisX,DisY,ColNumX,RowlNumY,TableId)


步骤四:

发送运动指令,根据实际的编码器反馈来验证控制器实际上发的脉冲数是否正确。

'开始运动
MoveTest(1,1,RunMode)
MoveTest(2,1,RunMode)
MoveTest(2,2,RunMode)


步骤五:

验证效果。PSx轴和Y轴的脉冲当量均设置的是100000

根据以上数据启用二维螺距补偿功能后,我们可以计算出运动到点【1,1】时,X轴和Y轴理论上补偿的脉冲数分别是11111.11108个脉冲和11111.11108个脉冲,根据实际编码器的反馈值发现X轴和Y轴实际补偿的脉冲数分别是11110个脉冲和11110个脉冲,这里理论补偿值和实际补偿值误差在1个脉冲我们认为二维螺距补偿功能是正常的。

结果.png




热门招聘
相关主题

官方公众号

智造工程师