凸轮

1、凸轮表

当前的凸轮表设计可能存在某些不是很合理的地方,在此列举出某些注意事项:

(1) 一旦“添加点”()或“删除点”()被选中,在凸轮表中点击任意位置都会执行与被选行相关的相应动作,所以此处要注意容易引起误操作。解决方法,选中后可以使用Esc键退出。

(2) 下面分别列出某行被选中和未被选中的区分(背景色的区分):

“添加点”被选中状态:

“添加点”未被选中状态:

“删除点”被选中状态:

“删除点”未被选中状态:

2、如何修改电子凸轮关键点:

新建CAM凸轮表系统会自动生成MC_Cam_REF类型的数据结构和SMC_CAMXYVA结构类型的数组,要修改关键点就需要理解者两个数据结构。MC_Cam_REF定义起点、结束点等,SMC_CAMXYVA定义每个关键点的位置、速度等并合成一个数组。

如下图后台工程新建的凸轮表及数据,可以程序中在此基础上直接修改关键点。

如将第2个关键点位置改为(200,200)

CAM_A[0].dx:=200;

CAM_A[0].dy:=200;

2)完全新建一个凸轮表数据:

第一步定义MC_Cam_REF类型的数据结构Cam_Mum、定义SMC_CAMXYVA结构类型的数组Cam_Mum_Arr

第二步给Cam_Mum参数赋值,根据需求设置关键点并给Cam_Mum_Arr参数赋值。

数组Cam_Mum_Arr如何与Cam_Mum关联?取Cam_Mum_Arr首地址赋值给Cam_Mum.pce即可。

VAR

Cam_Mum:MC_CAM_REF;

Cam_Mum_Arr:ARRAY[0..3] OF SMC_CAMXYVA;

END_VAR

//设置关键点

Cam_Mum_Arr[0].dX:=0;

Cam_Mum_Arr[0].dY:=0;

Cam_Mum_Arr[0].dV:=1;

Cam_Mum_Arr[0].dA:=0;

Cam_Mum_Arr[2].dX:=250;

Cam_Mum_Arr[2].dY:=250;

Cam_Mum_Arr[2].dV:=1;

Cam_Mum_Arr[2].dA:=0;

Cam_Mum_Arr[3].dX:=500;

Cam_Mum_Arr[3].dY:=500;

Cam_Mum_Arr[3].dV:=1;

Cam_Mum_Arr[3].dA:=0;

//设置凸轮属性

Cam_Mum(

wCamStructID:= ,

byType:= 3,

byVarType:= ,

xStart:= 0,

xEnd:= 500,

nElements:= 3,

nTappets:= , 当没有使用挺杆时,请不要设置挺杆个数,否则会造成运行结果异常!

pce:= ADR(Cam_Mum_Arr),

pt:= ,

dwTappetActiveBits:= ,

strCAMName:= ,

byInterpolationQuality:= ,

byCompatibilityMode:= ,

bChangedOnline:= ,

xPartofLM:= );

3、凸轮偏移Offset和缩放比例Scaling:

CAMIN凸轮指令提供偏移Offset和缩放比例参数Scaling:

主轴MasterOffset, MasterScaling:主轴输入转换的位置是根据以下公式进行的,并且使用转化后的X作为作为凸轮的输出:

X = MasterScaling*MasterPosition + MasterOffset

因此,如果主轴的比例大约1,所述凸轮将会运行在一个更高的速率,如果比例值小于1,速率将会随之降低。

从轴SlaveOffset, SlaveScaling:**如果主轴的比例值大约1,电子凸轮将会以高速运行,如果此值小于1,速度值将会随之降低,计算公式:

Y = SlaveScaling*CAM( X ) + SlaveOffset

值SlaveScaling > 1 导致凸轮效果的拉伸,从轴的范围将会增加;相应的‘’如果 SlaveScaling < 1 将会导致一个收缩。

PS:从上面的计算公式可知,主从轴运行方向不一致时修改MasterScaling或SlaveScaling设置为负数即可。比如主轴一般位置设置为0~360,如果主轴反向运动将MasterScaling设置为-1,否则从轴不会运动也不会报错。

4、凸轮结束判断:

理解凸轮结束点需要理解ENDofprofile(凸轮结束时周期运行输出一个任务周期的脉冲,非周期运行一直输出高电平)何时产生。

ENDofprofile为ON的那个周期PLC还在给伺服最后一段位移。

我们一般用这个信号判断凸轮一个周期运行结束,上升沿使能MC_CAMout指令分离同步,分离动作会在这个周期马上生效,然后从轴处于持续运行模式。就算凸轮结束点的速度设置为0,但是在分离这个周期速度不是为0的,因为还有最后一个周期的位移,然后从轴就会以这个周期位移为速度持续运行,如果不停止会导致位置偏差,所以最好MC_CAMout后用MC_STOP停止,或者用ENDofprofile信号的下两个周期使能MC_CAMout

5、MC_CAMOUT:

1.此功能块将从轴与主轴立刻分离。

2.如果轴没有在synchronized_motion状态,执行该轴会报错ErrorCode=34,比如经常出现凸轮分离时报34,就有可能是逻辑上多次触发了)。

3.使能凸轮分离后,轴状态为continuous_motion(速度为0也是continuous_motion状态),既如果分离时轴速度不为0,轴会以此时的速度匀速运行,一般与MC_Stop等配合使用

6、MC_CAMIN:

7、CAM非周期运行

A.参数Periodic=False为非周期。

如下图,一个凸轮周期结束后EndOfProfile输出为True,如果MC_CamIn的使能条件不为False,EndOfProfile一直输出为True。

应注意EndOfProfile为True的第一个周期从轴速度不一定为0,如果用EndOfProfile电平触发MC_CAMout应特别注意,详细请参照4

MC_Camout使用后该轴处于continuous_motion状态,如果该状态保持65535个循环周期轴将报错SMC_AXIS_NOT_READY_FOR_MOTION (34),所以建议MC_camout与MC_Stop或MC_Halt一起使用。

B.参数Periodic=False为非周期,凸轮运行完一个周期后从轴还是处于synchronized_motion状态,但是不管主轴是否运行、凸轮结束点速度是否为0,从轴都不会运行(PS如果在参数EndOfProfile为True的第一和二个周期触发MC_CAMout指令会使轴为continuous_motion状态,且速度可能不为0,请参照A部分).

CAM 属性周期变化,从轴位置必须是周期值的整数倍。

8、MC_CamTableSelect

A.

EndOfProfile=false

MasterAbsolute=false

SlaveAbsolute=false

9、凸轮启动时多从轴多跑一个周期的问题

一.问题描述

在将主轴和从轴使能后,再使能电子凸轮指令,此时并未通过运动指令驱动主轴运动,但从轴却会以极高的速度转一个周期。

二.问题分析

  1. 电子凸轮功能工作时序(以一个主轴,一个从轴为例)

1)通过使能MC_Power指令,分别将主轴和从轴使能

2)通过使能MC_CamTableSelect指令,选择为主从轴选择凸轮表

3)通过使能MC_CamIn指令,将主从轴按选择的凸轮表,建立起跟随关系

4)对主轴,通过MC_MoveVelocity指令(或者Absolute,Relative),驱动主轴运动。 此时,从轴会跟随运动。

2. 问题出现原因

根据多次实验分析,发现有因为主轴使能后,此时主轴的电机会有微小的抖动,而导致主轴的实际位置可能出现负向的微小偏差。此时,若使能电子凸轮指令,由于用到的电子凸轮是周期性的模式(通常默认设置为360),PLC会认为主轴的负向微小位置是上一个周期的接近结束位置,如-0.1对应359.9。因此,PLC会立即控制从轴高速跟随到主轴359.9对应的从轴位置,即接近一个周期的距离。

其实,上电使能后,主从轴都有可能会出现一个微小的抖动。但通常情况下,凸轮表中,从轴位置是从0开始,因此从轴的微小抖动,虽然在启动凸轮后,也会有一个瞬间的调整过程,但由于抖动极小,因此过程不明显。

MC_CamTableSelect指令有两个关键参数MasterAbsolute和SlaveAbsolute; MC_CamIn指令也有一个同样的关键参数StartMode(取值可以是绝对模式或相对模式)。

只有当主轴位置选择绝对模式,即MC_CamTableSelect指令关键参数MasterAbsolute为true时,PLC会按照先前的分析进行计算,导致从轴会多跑一个周期。而如果主轴位置选择的是相对模式,则不会出现该问题。

但是,这样会引申出三个问题:

如果主轴位置要求必须是绝对模式呢?

如果主轴上电使能时没有抖动,但程序控制主轴进行单轴运动一段位置后,再选择凸轮功能,这肯定会导致主轴位置有偏移,而且该偏移量是合理的,那又如何解决?

相反,如果主轴没有抖动或凸轮开始前没有使主轴运动一段距离,而是先使从轴独立运动一段距离,那从轴位置也会有一个偏移量,此时启动凸轮,必然会出现和前面类似的从轴高速调整过程。怎么办?

三.问题解决方法

鉴于前面的分析,该问题核心是要满足上面这三种情况下的正常使用。于是,结合现场应用需求,对凸轮指令的参数进一步分析和实验,得出如下结论:

在AM600的电子凸轮指令中,位置或者叫坐标变换的原理如下:

根据指令MC_CamIn中参数MasterOffset, MasterScaling进行调整:

主轴输入转换的位置是根据以下公式进行的,并且使用转化后的X作为作为凸轮的输出: X = MasterScaling*MasterPosition + MasterOffset 。因此,可以通过MasterOffset参数调整主轴的位置输入量。

SlaveOffset, SlaveScaling:

从轴输出变换的位置是根据以下公式进行的,并且使用转化后的Y作为凸轮中从轴的实际输出:Y = SlaveScaling*CAM( X ) + SlaveOffset 。因此,可以通过参数SlaveOffset调整从轴的位置输出量。

由此可见,不管是由于主轴还是从轴的初始位置偏移量(抖动或正常的运动导致)带来的从轴瞬间高速调整过程问题,解决思路都是通过一定途径,抵消掉主轴或从轴的初始偏移量。

因此,对主从轴分别进行解决:

主轴偏移量导致的问题

当问题是由于主轴的初始偏移量导致时,解决方法有两种:

1)方法1: 将主轴位置模式配置为相对模式

该方法只适用于主轴可以支持相对位置模式的情况。

具体方法是:将MC_CamTableSelect的参数MasterAbsolute的值置为False,即

不使用绝对位置模式。其它参数不变。

注:若主轴只能使用绝对位置模式,则该方法不适用。

2)方法2: 将主轴位置进行反向偏移

该方法只能用于主轴仅支持绝对位置模式的情况。

具体步骤是:

将MC_CamTableSelect的参数MasterAbsolute的值置为True,即主轴使用绝对位置模式。

定义一个LREAL型的变量MasterOffsetAdjust,该变量的初始值为

MasterOffsetAdjust := 0 – AxisMaster.fActPosition;

其中, AxisMaster为主轴变量。

然后,将MasterOffsetAdjust值赋给指令MC_CamIn的输入参数MasterOffset。如下图所示:

从轴偏移量导致的问题

当问题是由于从轴的初始偏移量导致时,解决方法也有三种:

1)方法1:将从轴位置模式配置为相对模式

该方法只适用于从轴支持相对位置模式的情况。

具体方法是:将MC_CamTableSelect的参数SlaveAbsolute的值置为False,即

不使用绝对位置模式,其它参数不变。

注:若从轴只能使用绝对位置模式,则该方法不适用。

2)方法2:将凸轮启动模式设置为相对模式

具体方法:将MC_CamIn指令的StartMode参数设置为1(相对模式),其他参数不变。

3)方法3 :将从轴位置进行反向偏移

该方法只能用于从轴仅支持绝对位置模式的情况。

具体步骤是:

A.将MC_CamTableSelect的参数SlaveAbsolute的值置为True,即从轴使用绝对位置模式。

B.定义一个LREAL型的变量SlaveOffsetAdjust,该变量的初始值为

SlaveOffsetShift := AxisSlave.fActPosition;

其中, AxisSlave为从轴变量。

然后,将SlaveOffsetAdjust值赋给指令MC_CamIn的输入参数SlaveOffset。如下图所示:

主从轴都有初始的位置偏移

解决方法:将前两种方法进行结合使用

10、如何将编码器接入虚轴:

1)轴池,添加设备,选择编码器轴,如下图

轴参数设置:与实轴设置类似,需要注意的是bit width宽度必须与编码器反馈值位数一致,设置过小只能识别编码器设置的低位。

编码器值与编码器轴关联:

将值直接赋值给编码器轴参数diEncoderPosition,di编码器可以是任何需要的变量。注意如果编码器是实际外部输入值需要将参数bVirtual设置为False。

11、修改凸轮表下周期生效的方法

第一步:产生凸轮表修改标志位

第二步:根据凸轮周期完成标志位.EndofProfile来重新出发camtable指令

这样在下个周期会按照新的凸轮表执行。

Copyright © www.yanjuntech.cn 2018-2025 all right reserved,powered by Gitbook该文件修订时间: 2018-10-21 19:07:41

results matching ""

    No results matching ""