NJ电子凸轮培训资料
欧姆龙自动化(中国)有限公司
FAE中心
2015年7月
目录
一、凸轮概述 (2)
1、机械凸轮组成结构 (2)
2、机械凸轮的实现 (2)
3、电子凸轮的实现 (6)
二、NJ的凸轮指令和凸轮表 (8)
1、NJ的凸轮指令 (8)
2、其它凸轮相关指令 (18)
3、NJ的凸轮表的设定 (21)
三、凸轮计算应用实现 (24)
1、包封机变袋长凸轮计算实现 (24)
2、枕包机变袋长凸轮计算实现 (26)
①设备要求 (26)
②解决方法 (28)
③设置及程序 (33)
3、枕包机变袋长凸轮三次方优化实现 (33)
①飞剪功能实现 (33)
②凸轮曲线的三次方优化 (35)
③调试经验 (37)
4、色标补偿计算实现 (37)
①产生偏差的原因 (37)
②如何实现“纠偏”程序 (38)
凸轮概述
1、 机械凸轮组成结构
机械凸轮机构一般是由凸轮、从动件和机架三个构件组成的高副机构
。凸轮通常作连续等速转动,从动件根据使用要求设计使它获得一定规律的运动。凸轮机构能实现复杂的运动要求,广泛用于各种自动化和半自动化机械装置中。
凸轮结构示意图
2、 机械凸轮的实现
机械凸轮是一个具有曲线轮廓或凹槽的构件。一般可分为三类: 盘形凸轮:凸轮为绕固定轴线转动且有变化直径的盘形构件;如下图
这是凸轮的基本形式,凸轮绕固定轴旋转时,推杆(从动件)的位移规律是一定的。
移动凸轮:凸轮相对机架作直线移动;如下图
从动件一般做成杆状,接触凸轮的部分装有滚轮,在凸轮上做纯滚动,从而带动从动杆移动。它可视为盘型凸轮的演化形式。
圆柱凸轮:凸轮是圆柱体,可以看成是将移动凸轮卷成一圆柱体。
凸轮是圆柱体,可以看成是将移动凸轮卷成一个圆柱体。圆柱凸轮不再做往复直线移动,而是做旋转移动。前两种都可以看成平面运动形式,而圆柱凸轮则是一种空间运动形式。
机械凸轮从动件(推杆)一般具有3种不同形状。
尖顶从动件
构造简单,尖顶能与任意复杂凸轮轮廓保持接触,但易于磨损,所以只适用于作用力不大和速度不高的场合。
滚子从动件
克服了尖顶从动件的缺点,在尖顶处安装一个滚子,改善了从动件与凸轮轮廓间的接触条件。由于滚子和凸轮之间为滚动摩擦,所以磨损较小,故可用来传递较大的动力。在低速下,从动件的运动规律可以被看成纯旋转,但在高速时会有明显的滑移(偏离预期的运动轨迹)。平底从动件
与凸轮轮廓接触为一个平面,显然它只能与全部外凸的凸轮进行配合。其优点是凸轮与平底接触面间容易形成油膜,润滑较好,所以常用于高速传动中。
机械凸轮从动件的运动方式一般分为摆动和直动两种方式。
摆动方式:从动件绕某一固定轴摆动
摆动平底从动件凸轮机构
摆动滚子从动件凸轮机构
直动从动件:从动件只能沿某一直线路径做往复移动。直动从动件又可分为对心直动和偏置直动两类。划分的依据就是从动件的运动路径跟凸轮转轴中心是在同一直线上,还是存在一个偏置值
对心直动偏置直动
凸轮机构的特点:只要设计出适当的凸轮轮廓,即可使从动件实现任意预期的运动规律,并且结构简单、紧凑、可靠。缺点是凸轮与从动件的接触处压强较大,容易磨损;凸轮轮廓加工比较困难,费用较高,通常用于传力不大的控制机构。
凸轮实物图
3、电子凸轮的实现
电子凸轮是在机械凸轮的基础上发展起来的。从本质上讲,从动件的运动是一种“程序”的结果。因此,凸轮机构可以看成一种函数关系,凸轮的转动作为函数的输入,而从动件的位移作为函数的输出。相应地,凸轮设计者的目标就是建立一个“程序”,建立凸轮从动件的运动轨迹。
运动轨迹的函数可表示为:Y=f(θ)其中θ为凸轮旋转的角度(可理解为主轴位置),Y为从动件的摆动或直动位移(可理解为从轴位置),f(θ)就是电子凸轮关系(可理解为电子凸轮表)
凸轮关系示意图
电子凸轮属于多轴同步运动(Multi-Synchronized Motion),这种运动是基于主轴(Master or Leading axis)和一个或者多个从轴(Slave or Following axis)系统。主轴可以是物理轴,
也可以是虚拟轴(一种算法,没有实际的输出)。
电子凸轮是在机械凸轮的基础上发展起来的, 传统机械凸轮是通过凸轮实现非线性的加工轨迹。而电子凸轮是直接将轨迹点输入到驱动器内,通过设定的计算方式进行伺服控制,达到和机械凸轮相同的加工目的,实现一种周期性的往复运动。
电子凸轮曲线可以采用多种描述方式,常见的采用二维表格分别描述主轴和从轴的值;也可以采用数学公式来描述。NJ 可以用Sysmac Studio 软件绘制电子凸轮曲线也可以编程计算后实时修改凸轮曲线。 电子凸轮曲线分类
根据从轴的启动位置和终点位置是否一致,可以将电子凸轮曲线分为闭式曲线和开式曲线
闭式曲线
开式曲线
一、NJ的凸轮指令和凸轮表
NJ中关于电子凸轮有两条功能块指令MC_CamIn和MC_CamOut,分别用来对功能块所指定的轴启动和停止凸轮操作。
1、N J的凸轮指令
①MC_CamIn指令
此指令功能用来启动凸轮表操作。
MC_CamIn输入参数:
1)参数Execute
功能块的执行条件,非上升沿执行条件,初始化执行时会将功能块输出Busy和Active 输出置on,此后将Execute输入条件置为off凸轮表也可以照常执行。此功能块要先于主轴运行指令启动,否则凸轮表无法正常执行。
2)参数Periodic, Non-Periodic
此参数用来设置凸轮表是周期执行还是只执行一次。如果是设置为周期执行时,即使跟
随的主轴是线性轴也可以正常周期执行。
3)参数StartMode
用来设置MasterStart Distance所要使用的是相对坐标还是绝对坐标。换句话说,MasterStart Distance参数用来控制从轴何时开始跟随主轴做凸轮运动,这个距离可以是主轴相对原点的一个绝对坐标值,也可以是相对StartPosition的一个相对坐标值。
例如下图中20度位置为StartPosition,60度为从轴开始运动的位置,中间的40度采用的是relative模式时设置的MasterStart Distance的参数值,而如果使用absolute模式的话就需要将MasterStart Distance的数值设置为60度。
4)参数StartPosition, MasterStart Distance.
StartPosition参数的数值会影响到凸轮表开始动作的起始点,当主轴到达StartPosition位置开始功能块的输出参数InCam才会值on,直到执行MC_CamOut。
MasterStart Distance参数的数值会影响到凸轮表定义的从轴何时开始真正的跟随主轴运动。功能块的输出参数InSync开始变为on,直到执行MC_CamOut。例如,下图中的从轴会在到达MasterStart Distance设定的主轴位置瞬间启动。这个功能在使用时需要注意:从轴为了实现位置的跟随会瞬间有一个很大的加速到达在凸轮表中设定的与主轴相应的位置,这时对机械会有很大的冲击,并且伺服驱动器会报偏差计数器溢出错误。这两个参数只对第一次启动凸轮表有效,如果运动过程中主轴停止并手动复位为原点位置,再启动主轴运动,凸轮表依旧会继续前面的跟踪运行。而从轴如果手动复位NJ会报警重复操作。
5)参数Master Scaling, Slave Scaling
这两个参数用来实现凸轮表中主轴或从轴的比例缩放功能。
6)参数MasterOffset,SlaveOffset
当MasterOffset设置
为一个正值时,像右图
所示凸轮曲线的主轴
坐标会向右横移一个
设置值。也就是主轴从
零点运动一个设定距
离后,再把当前位置当
做凸轮表的起始点。正
常的凸轮表是虚线部
分,移动后是实线部分。
实际应用时的效果是让主轴空跑一段设定距离后从轴才开始做凸轮跟随,与MasterStart Distance的区别是主轴开始运动时就已经满足从轴的跟随条件,只是到达MasterStart Distance设定的距离后从轴开始阶跃运动到跟踪距离。
两者都会有一段从轴不跟随主轴运动的距离,但是MasterOffset可以得到一个完整的凸轮曲线,而MasterStart Distance不能得到完整的凸轮运行曲线,MasterStart Distance之前的部分没有执行。
当MasterOffset设置
为一个负值时,像右图
所示凸轮曲线的主轴
坐标会向左横移一个
设置值。也就是主轴在
零点时从轴就已经在
凸轮曲线中主轴在
MasterOffset值位置
对应的从轴位置值。正常的凸轮表是虚线部分,移动后是实线部分。
实际应用时的效果是凸轮表执行条件一使能,主轴还没有运动时(在零位),从轴就会阶跃运动到上面所描述的位置处。接下来主轴开始运动,从轴做凸轮跟随剩下的曲线轨迹。与MasterOffset设置为正值时的区别是无法获得完整凸轮曲线。
与MasterStart Distance的区别是,MasterOffset设置为负值是在主轴在原点时得到一个从轴阶跃,而MasterStart Distance是在主轴到达设定距离后得到一个从轴阶跃。
当SlaveOffset设置
为一个正值时,像右
图所示凸轮曲线的
从轴坐标会向上移
动一个设置值。也就
是主轴在零点时从
轴在SlaveOffset值位置,并且将这个位置认为是凸轮表的起始点。正常的凸轮表是虚线部分,移动后是实线部分。
实际应用时的效果是凸轮表执行条件一使能,主轴还没有运动时(在零位),从轴就会阶跃运动到上面所描述的位置处。接下来主轴开始运动,从轴做凸轮跟随剩下的曲线轨迹。
与MasterOffset设置为正值时相同点:都可以获得完整凸轮曲线,不同点:是从轴的整体位置增大了一个设置值。与MasterOffset设置为负值时的相同点:功能块使能时从轴会有一个阶跃,不同点是:可以得到一个完整的运动曲线,但是坐标整体增大一个设定值。
当SlaveOffset设置为一个
负值时,像右图所示凸轮曲
线的从轴坐标会向下移动
一个设置值。也就是主轴在
零点时从轴在SlaveOffset
值位置,并且将这个位置认
为是凸轮表的起始点。正常
的凸轮表是虚线部分,移动后是实线部分。
实际应用时的效果是凸轮表执行条件一使能,主轴还没有运动时(在零位),从轴就会阶跃运动到上面所描述的位置处。接下来主轴开始运动,从轴做凸轮跟随剩下的曲线轨迹。
与MasterOffset设置为正值时相同点:都可以获得完整凸轮曲线,不同点:是从轴的整体位置减小了一个设置值。与MasterOffset设置为负值时的相同点:功能块使能时从轴会有一个阶跃,不同点是:可以得到一个完整的运动曲线,但是坐标整体减小一个设定值。
7)参数ReferenceType(位置类型选择)
此参数用来设置做从轴做位置跟随时所使用的主轴的位置类型。
_mcCommand:指令位置(在前一个主周期(primary period)内计算得到的值)主轴在当前周期使用的是在前一个主周期内计算的指令位置值。依据在前一个主周期内计算得到的主轴指令位置来计算当前周期内从轴指令位置值。
_mcFeedback:在同一个主周期内获得的值。使用的是同一个主周期内获得的主轴实际反馈位置。
_mcLatestCommand:指令位置(在同一个主周期内获得的值)。使用的是同一个主周期内计算得到的主轴位置。相比_mcCommand来讲,可以使用最近一次更新得到的数据进行计算。但是,使用这种ReferenceType时,要求主轴的轴号必须小于从轴的轴号,否则Error将会置on,对应的ErrorID输出的error code:5438 hex。
在同一主周期内计算得到的指令位置的精度要高于在前一个主周期内计算得到的值。也就是后两种方式的精度要比前一种的要高。
8)参数Direction
此参数用来设置做从轴跟随运动时主轴所运行的方向。当InSync为TRUE时有效。
_mcNoDirection:(不指定方向)不管主轴是正向还是反向运动,都启动凸轮表。
_mcPositiveDirection:主轴正向运动时凸轮表有效。
_mcNegativeDirection:主轴反向运动时凸轮表有效。MC_CamIn输出参数:
9) 参数InCam,InSync,Busy,Active,EndOfProfile 的时序见下图。
其中EndOfProfile 标志只在凸轮表执行完成后置on 一个周期。
10) 参数Index
用来指示当前走到凸轮表的第几步,这里所说的步,不是凸轮表中建立了多少个点,而是与pitch 有关的,凸轮表ARRAY[0..N]OF_sMC_CAM_REF 中数组的长度所对应的索引。
MC_CamIn 输入/输出参数:
②MC_CamOut指令
此指令功能用来取消主轴与从轴之间的电子凸轮关系。
MC_CamOut输入参数:
1)参数Execute
功能块的执行条件,非上升沿有效,初始化执行时会将功能块输出Busy和Active输出置on。
2)参数Deceleration
功能块开始执行时,指令中所设定的凸轮表从轴将不再与主轴同步,而是以此参数设定的减速度进行减速停止。
MC_CamOut输出参数:
关于输出信号的时序,请参考下图。有一点需要注意的是Done标志表示的是指令速度降为0,而并不是电机的实际速度降为0。
2、其他凸轮相关指令
①MC_Phasing指令
此指令功能用来在同步运动过程中偏移主轴的位置。
MC_Phasing输入参数:
1)参数Execute
功能块开始执行时,指令控制主轴按照phaseshift设置的值进行偏移。这个指令可以在执行MC_CamIn,MC_GearIn,MC_GearInPos和MC_MoveLink时进行调用。
2)参数phaseshift
指定主轴偏移距离。主轴的指令当前位置和实际当前位置是不变的,而指令当前位置和实际当前位置之间会产生一个偏移,从轴会按照这个偏移与主轴之间进行同步。
3)参数Velocity
指定主轴偏移指定距离时的速度值,此值不能为0.
4)参数Acceleration、Deceleration
指定主轴偏移指定距离时的加减速度值。
MC_Phasing输出参数:
MC_Phasing输入输出参数:
②MC_SaveCamTable指令
此指令功能用来将指定的凸轮表保存到非易失存储器中。
使用SYSMAC STUDIO下载凸轮表时是将数据下载到非易失存储器中,同时加载到NJ的主内存中,或者是在上电的时候从非易失存储器加载到主内存中。但是凸轮表中的数据在程序中也是可以修改的,修改完的凸轮表只是存在主内存中,而不会影响到非易失存储器中的凸轮表。所以,每次重新上电或者,使用软件上载凸轮表时得到的还将是以前的老的凸轮表。因此,为了使程序中修改的凸轮表能够生效,必须使用此指令将其保存到非易失存储器中。