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



正运动技术

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:470帖 | 360回
  • 年度积分:15
  • 历史总积分:1452
  • 注册:2020年9月10日
发表于:2026-01-23 14:17:59
楼主

01
二维螺距算法通过Basic编程快速验证效果
假设工况1:X轴和Y轴的丝杆螺距正常,但X轴和Y轴安装不垂直,假设安装夹角是135度。
工况一.png

步骤一:

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

'初始化二维螺距补偿的相关参数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。

'更新该工况下二维补偿表的TABLE数据
FOR i=0  to  RowlNumY-1
    '先按行填写该行的每一列的数据
  FOR  j=0  to  ColNumX-1
      '【工况一:XY轴螺距正常,但X轴和Y轴安装不垂直,假设安装夹角是135度】        
      '一定是先运动到补偿点位位置然后通过其他定位方式(如视觉)实际定位出来的差值        
      IF i=0 and j=0 THEN            
          Angle=135  'X轴和Y轴的安装夹角        
      ENDIF        
      LOCAL ActPosX,ActPosY '实际位置        
      '计算实际位置        
      ActPosX = 1 + (COS(Angle*PI/180))         
      ActPosY = (SIN(Angle*PI/180))        
      '计算各个补偿点需要补偿的X和Y方向的脉冲数        
      Table(TableId+2*(i*ColNumX+j))    =  DisX*(1+i)*(1- ActPosX) * UNITS(AxisX)        
      Table(TableId+2*(i*ColNumX+j)+1)  =  DisY*(1+i)*(1- ActPosY) * UNITS(AxisY)    
    NEXT 
NEXT


步骤三:

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

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


步骤四:

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

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


步骤五:

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

根据以上数据启用二维螺距补偿功能后,我们可以计算出运动到点【1,1,1】时,X轴和Y轴理论上补偿的脉冲数分别是109999.9999个脉冲和45563.49186个脉冲,根据实际编码器的反馈值发现X轴和Y轴实际补偿的脉冲数分别是109999个脉冲和45563个脉冲,因为脉冲个数是整数,所以二维螺距补偿功能正常。

输出结果.png




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师