查看: 1252|回复: 4
收起左侧

[应用问题] 凸轮表的应用

赵子腾 2023-3-20 19:05:45 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
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;
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps1.jpg
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:= );
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps2.jpg
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
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps3.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps4.jpg
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。
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps5.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps6.jpg
应注意EndOfProfile为True的第一个周期从轴速度不一定为0,如果用EndOfProfile电平触发MC_CAMout应特别注意,详细请参照4
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps7.jpg
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(取值可以是绝对模式或相对模式)。
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps8.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps9.jpg
只有当主轴位置选择绝对模式,即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。如下图所示:
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps10.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps11.jpg
从轴偏移量导致的问题
当问题是由于从轴的初始偏移量导致时,解决方法也有三种:
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。如下图所示:
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps12.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps13.jpg
主从轴都有初始的位置偏移
解决方法:将前两种方法进行结合使用
10、如何将编码器接入虚轴:
1)轴池,添加设备,选择编码器轴,如下图
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps14.jpg
轴参数设置:与实轴设置类似,需要注意的是bit width宽度必须与编码器反馈值位数一致,设置过小只能识别编码器设置的低位。
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps15.jpg
编码器值与编码器轴关联:
将值直接赋值给编码器轴参数diEncoderPosition,di编码器可以是任何需要的变量。注意如果编码器是实际外部输入值需要将参数bVirtual设置为False。
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps16.jpg
11、修改凸轮表下周期生效的方法
第一步:产生凸轮表修改标志位
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps17.jpg
第二步:根据凸轮周期完成标志位.EndofProfile来重新出发camtable指令
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps18.jpg
file:///C:/Users/95435/AppData/Local/Temp/ksohtml18292/wps19.jpg
这样在下个周期会按照新的凸轮表执行。

点评

感谢分享!!!  发表于 2023-3-22 20:32




上一篇:产品应用文档-MD500Plus速度模式转矩限幅应用-V0.0
下一篇:402轴控状态机跳转解析

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

微光 2023-3-21 13:23:31 | 显示全部楼层
感谢分享学习
回复 送花

使用道具 举报

晨曦2022 2023-3-21 14:33:14 | 显示全部楼层
楼主用心了
回复 送花

使用道具 举报

yanghsan 2023-3-22 16:41:47 | 显示全部楼层
楼主你的图片显示都是本地地址啊,没上传图片!
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部