在运动控制中,运动轴的回零是一个共性的问题:对于半闭环的编码器+电机+模组或全闭环的直线电机+光栅尺来说,它们之所以能够知道自己当前处于一个什么样的位置就是靠编码器和光栅尺来记录当前的位置,问题在于一般我们使用的都是相对式的编码器或光栅尺,换言之,我们必须告诉编码器和光栅尺以什么位置作为零点开始计算当前的坐标,指定当前的零点的过程就是回零的过程。相对式的编码器或光栅尺一旦掉电,就必须重新回零,这也是大多数数控机床上电要回零的原因。
如下图,为了指定当前运动系统的零点,我们使用一个零位传感器来标记,对于编码器+电机+模组,零位传感器就是一个处在零位的限位传感器,对于直线电机+光栅尺可以不用设置特殊的硬件,直接捕获光栅尺的零位信号就行,当然你也可以不用零位信号,而统一使用限位传感器来指定零位。同时每个运动系统一般都是有正负限位的,一方面是作为安全用途,一旦模组运动超出正负限位范围自动停掉电机防止造成危害,另一方面,也可作为触发使用,下面会讲到。
为了形象的说明问题,考虑模组和传感器的如下相对运动,这里传感器既可以是限位传感器也可以是零位点触发,基本原理是一样的。这里为了说明问题,将传感器拉长了,实际上传感器的接触长度很短。
可以看到,当前模组和传感器相对运动的时候,还没接触的时候信号为低电平,一旦模组开始进入传感器范围,这时候电平跳变为高电平,存在一个上升沿,捕获这个上升沿就是模组刚刚进入传感器范围的时刻。模组继续运动,一旦模组完全离开传感器范围,这时候电平跳变为低电平,存在一个下降沿,捕获这个下降沿就是模组刚刚完全离开传感器范围的时刻。
因为最开始的时候没有回零,这时候模组是不知道自己当前到底处于什么位置的,但是在高低电平跳变的时候会发送中断,我们可以捕获这两个中断从而判断当前模组是否运动到指定的位置,从而将当前指定位置标记为零点。
A.不在负限位的时候,直接负向移动直到上升沿触发B.在负限位的时候,正向移动直到下降沿触发注意一个使用上升沿,一个使用下降沿,是为了保证两种情况触发时模组位置是一样的,看示意图就懂了
;程序功能:实现6轴回零运动。 ;********************************************************************** CLOSE ;确认所有缓冲区被关闭 &1 ;~~~~~~~~~~~~~~~~~~~~~~~~~ 以下部分为运动程序 ~~~~~~~~~~~~~~~~~~~~~~~ OPEN PROG 20 CLEAR ;6轴回零 If (M622 = 1) ;负限位有信号 I623=50 ;回零速度(Counts / msec),方向为正 I626=81920*16 ;回零偏置,单位1/16 Count I7123=2 ;使用负限位为触发信号 I7122=10 ;捕捉触发信号的下降沿 Home 6 ;回零 Dwell 20 Else ;负限位无信号 I623=-50 ;回零速度(Counts / msec),方向为负 I624=$120000 ;禁能限位 I626=81920*16 ;回零偏置,单位1/16 Count I7123=2 ;使用负限位为触发信号 I7122=6 ;捕捉触发信号的上升沿 Home 6 ;回零 Dwell 20 EndIf I623=-50 ;回零速度(Counts / msec),方向为负 I624=$100000 ;使能限位 I626=0 ;回零偏置,单位1/16 Count I7123=0 ;使用原位信号为触发信号 I7122=7 ;捕捉触发信号的上升沿及Z向的下降沿信号 Home 6 ;回零 Dwell 50 CLOSE
原文地址:http://blog.csdn.net/wenzhou1219/article/details/45249305