中自网

热门搜索:PID  plc  传感器  电机  变频器  工业以太网  无线通讯  低压 

当前位置:首页>>应用案例首页>>前沿技术>>正文

机械设备定位精度保障之可靠回零架构的探讨

发布日期:2012-07-31   作者:杨力   浏览次数:49509
分享到:
【摘   要】:本文揭示了运动机构回零的软硬件结构和常见的问题,针对运动定位系统的特征,综合机械结构,电气器件和软件相关需求,提出了解决这些问题的基本方法。

摘要
       本文揭示了运动机构回零的软硬件结构和常见的问题,针对运动定位系统的特征,综合机械结构,电气器件和软件相关需求,提出了解决这些问题的基本方法。
关键词:
       机械零点,带Z脉冲的回零,反馈,精确定位。
1.       引言
  我公司在对客户使用控制卡的技术支持过程中,常遇到客户对系统回零精度的困惑,通常是由于对回零硬件器件和结构的理解偏差,导致软件设计的问题,进而造成系统回零的不稳定,从而影响机械系统的定位精度。
  从国内外的主要控制卡的回零功能中,可以看到,不同运动控制厂商允许的回零方式从1到10多种不等,但其机械和电气系统结构的基本构成是相同的,单轴直线运动控制系统简图如“图一”所示。本文就该基本特征,结合深圳雷赛智能的DMC2410运动控制卡,就影响单轴直线运动系统精度和效率的因数进行探讨,并提供了基于该基本结构的回零流程和VB软件例程。
2.       回零点的目的
  自动化机械设备是为取代人工来处理对速度,精度有较高要求,并希望能确保获取一致性好的产品而诞生的。为了保证产品的一致性,必须首先确保机械设备的参考原始零位的精准性,这样才能保证在长时间工作时生产出的产品的一致性,而零点是机械系统的参考基准,所以必须保证参考基准的精确和唯一性,回零的目的是确保机械系统零点的重复定位精度在设计范围内,或者说确保单轴或多轴构成的X-Y-Z坐标系的零点在整个自动化设备的机械系统中的位置偏差在设计允许范围内。
3.       机电系统回零点的基本结构
  典型单轴直线系统的主要构成部件有: 电机(步进电机或伺服),滚珠丝杆(或皮带,齿轮),滑动导轨,运动平台,左右限位感应器,感应片和零点感应器,以这些主要部件为基础,构成的单轴基本结构如下图一:

  加入运动控制器件后的单轴直线控制系统的基本构成图如图二。影响回零精度和回零效果的主要因数如下:
         机械因素:机械机构的间隙;电机的定位精度。
         电气因素:零点感应器的响应频率(或时间);导线的信号输送延迟;采用感应器
   回零的配合方式。
         控制因素:电机的回零速度;控制卡接收到零点感应器输入电平信号到关断输出脉
冲的响应时间,该响应时间又受停止模式的影响,有2种停止模式较常见,一是减速停,二是立即停。
         软件因数:是否采用了恰当的回零软件流程。
  其中机械因数,导线的信号输送延迟因数,都假定为理想状态,对回零没有影响,不作讨论,本文仅讨论其他的影响因数。

  零点感应器的响应频率(或时间)因数:通常磁性感应器的响应频率在1KHz左右,光电感应的响应频率可达到10KHz,响应快的感应器可以允许较高的回零速度。下面通过一个例子结合电机的回零速度,可以看到其影响,参考图二的结构:
  假设:滚珠丝杆的导程是L毫米,电机转速是V转/分钟,零点感应器响应时间是t1秒, 控制卡接收到零点感应器输入电平信号到关断输出脉冲的响应时间是t2秒, 而从机械感应片运动到有效感应区直到控制卡关断脉冲输出的时间是: (t1+t2), 那么回零位置偏差是:
L = V*L*(t1+t2)/60
  可见,在t1,t2,L一定的情况下,要想提高回零点精度,电机的回零速度应该尽量小;零点感应器的响应时间应尽量短(即响应频率尽量高);L越小,回零点精度越高;同时还要求控制卡零点响应速度需够快。
  而停止方式因素的影响体现在采用减速停止时,假设回零速度一样,减速位移与减速度的大小相关,减速度大时,其减速位移小,反之减速度小时,其减速位移大。
  当这些因素都确定后,还需考虑感应器的配合方式,基本单轴直线运动系统感应器的配合方式通常有两种,其中一种如图一所示,包含左(或曰负限位),右限位感应器(或曰正限位),和零点感应器;另一种如图四所示,包含左,右限位感应器(没有使用零点感应器),再加上伺服电机编码器Z脉冲来构造单轴回零。通用的工业自动化设备中前一种较常用,而后一种亦具有鲜明的特点,下面分别将两种回零方式进行比较和探讨。
4.     回零结构分析
  单轴直线运动系统究竟该采用何种回零方式才能既经济又有效的保证机械设备系统的定位精度呢?下面将对前面提到的2种典型的回零基本方式进行分析,然后给出对应的系统方案。
4.1 方式一,运用零点加限位的回零方式
       该方式在各种机械设备直线运动系统中较为常见,适用于采用步进或伺服电机的直线系统,必须采用零点感应器,该感应器通常采用非接触式感应器,可以是磁感应接近感应器,光电或光纤感应器,不建议采用机械触点开关。限位感应器也采用和零点感应器相同属性的感应器,以简化机械触发机构(如图一中的感应片)。
相关的影响因数前面已经讲过,在该种方式中,应该注意下面2点:
         机械设计要求:确保限位感应器与零点感应器有足够的间隙,当限位感应器触发时,应确保运动平台与其他机械机构不能发生碰撞,而其当运动平台在极限位置时,限位感应器应该保持触发状态,以保证机械设备的安全。
         回零点的软件流程:从下图三中可以看出,针对3个感应器,运动平台感应片有2个区域(区域1,2)和3个特殊位置(感应片刚好在感应器上位置3,4,5),共5种位置状态。因此在软件流程制定过程中应充分考虑到这5种状态,以确保运动平台在任何位置都可以完成回零点的任务。我们可以设想,当机械设备断电后,维修人员需要给滚珠丝杆添加润滑油,出于方便的考虑,他会将运动平台推到不同的位置,以便添加润滑油,这会直接导致运动平台的位置的不确定性,但是该不确定性却被包含在这5种回零点的情况中,并不会导致回零故障。

  这种依靠零点感应器回零的方式会受到装配精度(很难确保到0.1毫米以下的感应器机械位置精度,通常会超过0.5毫米,这在精密生产行业是不太被接受的)和感应器元件精度的双重影响,会导致同种机型的设备之间各对应直线运动机构的零点位置偏差,通常会直接导致对应直线运动机构不具备互换性(没法确保高精度),这是机械设备生产商期望生产高一致性系列产品的大忌。
4.2 方式二,运用限位加Z脉冲的回零方式
       该方式主要针对采用增量式伺服电机(编码器带Z脉冲输出)的场合,在机械定位精度要求高的系统中极为有效。其限位感应器可采用机械触电开关,非接触式感应器,如磁感应接近感应器和光电或光纤感应器,同时需要将伺服电机编码器的Z脉冲输出接口连接到运动控制卡或控制器的专用输入接口上,如图五。

在该种回零方式中也要注意2点:
         机械设计要求:确保当限位感应器触发时,运动平台与其他机械机构不能发生碰撞,而其当运动平台在极限位置时,限位感应器应该保持触发状态,以保证机械设备的安全。
         回零点的软件流程:从下图六中可以看出,针对这2个限位感应器,运动平台感应片有区域1和2个特殊位置(感应片刚好在限位感应器上的位置2,3),共3种位置,比第一种回零构成方式简单,在软件流程制定过程中仅仅需考虑这3种状态,便能确保运动平台在任何位置都可以完成回零点的任务。

  假定采用伺服电机轴通过联轴器,连接到滚珠丝杆(再驱动运动平台),如图五示。从机械的角度,这里减速比是1:1,即电机轴每转动一圈,滚珠丝杆转一圈,同时运动平台往前走一个丝杠的导程(如导程是:5毫米,10毫米或20毫米)。从电气的角度,电机转动一圈,其编码器码盘转动360°,同时在固定的角度产生1个Z脉冲(如图四中示),其脉冲脉冲频率取决于电机轴转动的速度,假定电机旋转速度是3000转/分钟,即每0.02秒产生一个Z脉冲,其脉冲宽度极小;其脉冲宽度取决于电机速度和编码器的A/B相线数,假定编码器是1000线,在电机旋转速度是3000转/分钟时,Z脉冲的宽度是10微秒,远小于光电感应器的最快响应时间。另外,在该条件下,假定滚珠丝杆导程是10毫米,如果采用Z脉冲来定位零点,其直线零点理论位置精度可达,10毫米/1000 = 10微米,远远高于第1种回零方式。
  另外,该回零点的基本流程是,往负方向回零过程中,首先触发负限位感应器,电机急停,然后沿反方向(往正向)运动,直到找第一个伺服电机编码器Z脉冲,急停,这样便能确定单轴直线机构的零点。
同时,该方式需要机械设计工程师制定相应的调试夹具和相关流程来确保零点精度和互换性。
优点:
  在采用伺服电机的系统中,由于无需零点感应器,限位感应器可采用机械触点开关,使得单轴成本可下降约100到200元,较方式1节省硬件成本,同时能消除因感应器装配位置偏差带来的同型号精密机械设备与设备之间的机械零点的偏差,确保系列产品的一致性和良好的互换性,并且在同等情况下扩大了运动平台的实际使用空间。
5.     解决方案
  针对前面提出的2种回零方式的分析,在确保机械和电气硬件正确选择和配置的前提下,笔者以深圳雷赛智能典型的四轴控制卡DMC2410为例,按照第1种回零方式(启用了伺服的Z脉冲回零模式),编写了单轴回零点的流程图,以及基于VB的回零点源代码,,具体如下:
注意:
  由于零点感应器在轴正负限位感应器的中间,所以零点感应片可能落在5个区域,同时应确保机械运动平台在运动中会首先触发正(负)限位感应器,而不会发生机械碰撞。
回零流程图:如图七

回零源代码如下:
'选择DMC2410卡的第一轴,函数中轴编号为0
Public Function Home_AxisProcess()
Dim AxisStatus_XO As Integer
d2410_set_profile 0, (ORGspeed_X * pluse_mm_X) / 2, (ORGspeed_X * pluse_mm_X), _AccDec_T_X, AccDec_T_X
AxisStatus_XO = d2410_axis_io_status(0)
'判断感应片的位置 ,1.刚好在零点上面?
If (AxisStatus_XO And 2 ^ 14) = 1 Then
    Home_From_Zero '调用从零点感应器回零程序
    my_O_X = 1 '设置标记
Else '2,判断是否在正负限位感应器上
    AxisStatus_XO = d2410_axis_io_status(0)
    If ((AxisStatus_XO And 2 ^ 12) = 1) or ((AxisStatus_XO And 2 ^ 13) = 1) Then
        If (AxisStatus_XO And 2 ^ 12) = 1 Then
            '在正限位感应器上,调用正常d2410_home_move() -- 带Z脉冲
            d2410_home_move 0, 2, 1 '负方向回零
            While (d2410_check_done(0) = 1)
            '可显示一段文字来提示当前回零进展状态
            Wend
            my_O_X = 1 '设置标记
        Else
            Home_From_Lim '调用从负限位感应器回零程序
            my_O_X = 1
        End If
Else '3, 既不在零点感应器上,也不在限位感应器上
'启动电机往负方向走,查询零点或负限位感应器状态,如遇到感应器便立即停
        d2410_t_vmove 0, 1
        choose_X = 2
        While (choose_X = 2)
            '可显示一段文字来提示当前回零进展状态
            AxisStatus_XO = d2410_axis_io_status(0)
            If ((AxisStatus_XO And 2 ^ 14) = 1) Then
choose_X = 1
            End If
If ((AxisStatus_XO And 2 ^ 13) = 1) Then
choose_X = 0
            End If
        Wend
        D2410_imd_stop 0 '立即停
        select Case choose_X
        '3.1 在零点和正限位之间
        Case 0
            Home_From_Zero '调用从零点感应器回零程序
            my_O_X = 1 '设置标记
        '3.2 在零点和负限位之间
        Case 1
            Home_From_Lim '调用从负限位感应器回零程序
            my_O_X = 1
        End Select
    End If
End If
'将位置计数器清零,确定当前位置为零点
d2410_set_position 0, 0
'结束回零点函数调用
End Function
'************************************************************************
'从零点回零子程序
Public Function Home_From_Zero()
'启动电机往正方向走,直到走出零点感应器区再减速停,然后调用带Z脉冲的回零函数'd2410_home_move(),控制卡专用函数
Dim AxisStatus_XO As Integer
d2410_t_vmove 0, 1
AxisStatus_XO = d2410_axis_io_status(0)
While ((AxisStatus_XO And 2 ^ 14) = 0)
'可显示一段文字来提示当前回零进展状态
AxisStatus_XO = d2410_axis_io_status(0)
Wend
d2410_decel_stop 0, 0.05
While (d2410_check_done(0) = 1)
'可显示一段文字来提示当前回零进展状态
Wend
'调用正常d2410_home_move() -- 带Z脉冲
d2410_home_move 0, 2, 1
While (d2410_check_done(0) = 1)
'可显示一段文字来提示当前回零进展状态
Wend
End Function
'************************************************************************
'从负限位回零子程序
Public Function Home_From_Lim()
Dim AxisStatus_XO As Integer
'在负限位上启动电机往正方向走,直到感应到零点感应器后急停,调用零点回零子程序
d2410_t_vmove 0, 1
AxisStatus_XO = d2410_axis_io_status(0)
While ((AxisStatus_XO And 2 ^ 14) = 1)
    AxisStatus_XO = d2410_axis_io_status(0)
'可显示一段文字来提示当前回零进展状态
Wend
D2410_imd_stop 0 '立即停
Home_From_Zero '调用从零点感应器回零程序
End Function
'************************************************************************
6.     结论
通过以上对2种回零基本结构的分析,在实际应用中可以结合自身设备的特点进行针对性的改变,在确保设备精准度和稳定性的同时又能节约硬件成本,从而取得双赢的结局。
可靠的回零除了需要清楚的理解各相关控制元件和执行元件的工作原理,机械设备项目本身的精度要求外,还需从实际出发对特定设备进行精心测试,以便有针对性的准确给出相关的硬件和软件方案,这样才能确保设备的精准度。
参考文献
DMC2410/DMC2410B用户手册, 雷赛智能

 
 
[ 应用案例搜索 ]  [ ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]  [ 返回顶部 ]

0条 [查看全部]  网友评论