时间:2024-12-20 11:09:25来源:深圳市雷赛智能控制股份有限公司
01、在线变速定义
在Leadsys软件中实现一个轴的点位运动控制、速度控制是很简单的,只需要调用单轴运动指令中的点位控制、速度控制功能块即可轻易实现,这些运动速度往往是我们触发功能块的执行运动时固定下来,此后的运动都是以此速度进行的,运动过程中的速度用户难以改变。在点位运动控制、速度控制的运动过程中,改变运动速度,便是运动的在线变速。
为实现运动的在线变速,这里我们提供两种常用的实现方式。本期我们将介绍雷赛提供的在线变速功能块的应用方式。上一期中,我们分享了如何使用SM3_Basic库的单轴运动指令及其BufferMode功能来实现变速控制(点击蓝字即可跳转)。
02、在线变速指令
雷赛提供了实用的在线变速的功能块分别位于CmpLSAxisControl库和PMC_SingleAxisLib库中,功能块一览如下:
CmpLSAxisControl库:
PMC_SingleAxisLib库:
这些指令都是通过直接更改功能块的输入速度来实现在线变速的。
指令介绍
MC_MoveAbsolute_ChangeVel
指令格式:
MC_MoveAbsolute_ChangeVel( Axis:= 轴, Execute:= 开始运动, Position:= 终点位置, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Direction:= 方向, Done=> 运动完成, Busy=> 功能块进行中, Active=> 运动中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误代码);
指令说明:
●绝对点位运动在线变速功能块,用于绝对定位运动过程需要实时变速的场景;
●运动过程中,修改Velocity / Acceleration / Deceleration / Jerk引脚的输入值,即可对应的改变运动的速度/加速度/减速度/加加速度;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●目标终点在Execute上升沿时确定,运动过程中更改不生效;
●运动过程中,重新触发Execute上升沿,新的运动将打断旧的运动,轴将运动到新的目标终点;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0;
●当轴类型设置为模数时,需要设置方向Direction;
●移动方向Direction在Execute上升沿时确定,运动过程中更改不生效。
时序图:
MC_MoveRelative_ChangeVel
指令格式:
MC_MoveRelative_ChangeVel( Axis:= 轴, Execute:= 开始运动, Distance:= 运动距离, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Done=> 运动完成, Busy=> 功能块进行中, Active=> 运动中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误代码);
指令说明:
●相对点位运动在线变速功能块,用于相对定位运动过程需要实时变速的场景;
●运动过程中,修改Velocity / Acceleration / Deceleration / Jerk引脚的输入值,即可对应的改变运动的速度/加速度/减速度/加加速度;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●运动的目标终点在Execute上升沿时确定,运动过程中修改输入引脚Distance,不会改变运动的目标终点;
●运动过程中,重新触发Execute上升沿,新的运动将打断旧的运动,轴将运动到新的目标终点;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0。
时序图:
MC_MoveVelocity_ChangeVel
指令格式:
MC_MoveVelocity_ChangeVel( Axis:= 轴, Execute:= 开始运动, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Direction:= 方向, InVelocity=> 速度抵达, Busy=> 功能块进行中, Active=> 运动中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误代码);
指令说明:
●恒速运动在线变速功能块,用于恒速运动过程需要实时变速的场景;
●恒速运动开始后轴将一直以设定的速度一直运动下去,使用MC_Stop或MC_Halt指令可停止运动;
●运动过程中,修改Velocity / Acceleration / Deceleration / Jerk / Direction引脚的输入值,即可对应的改变运动的速度/加速度/减速度/加加速度/方向;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●运动的方向由Direction引脚决定,而不是Velocity的参数前面的正负号,线性轴和模数轴可用的方向选项有所不同;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0。
时序图:
MC_JOG_ChangeVel
指令格式:
MC_JOG_ChangeVel( Axis:= 轴, JogForward:= 正向Jog, JogBackward:= 负向Jog, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Busy=> 功能块进行中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误代码);
指令说明:
●JOG运动在线变速功能块,用于点动运动过程需要实时变速的场景;
●运动过程中,修改Velocity / Acceleration / Deceleration / Jerk / Direction引脚的输入值,即可对应的改变运动的速度/加速度/减速度/加加速度/方向;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0。
时序图:
LS_MoveAbsChangePosVel
指令格式:
LS_MoveAbsChangePosVel(Axis:= 轴, Execute:= 开始运动, Position:= 目标位置, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Done=> 完成, Busy=> 功能块进行中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误ID);
指令说明:
●绝对点位运动在线变速变位功能块,用于绝对定位运动过程需要实时变速变位的场景;
●运动过程中,修改Position / Velocity / Acceleration / Deceleration / Jerk引脚的输入值,即可对应的改变运动的位置/速度/加速度/减速度/加加速度;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●运动过程中,重新触发Execute上升沿,新的运动将打断旧的运动,轴将运动到新的目标终点;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0;
●指令不支持仿真,仿真运行时功能块报错16#0FFFFFFF。
●与MC_MoveAbsolute_ChangeVel指令的差异:
LS_MoveChangeVel
指令格式:
LS_MoveChangeVel(Axis:= 轴, Execute:= 开始运动, Velocity:= 速度, Acceleration:= 加速度, Deceleration:= 减速度, Jerk:= 加加速度, Direction:= 方向, InVelocity=> 速度抵达, Busy=> 功能块进行中, CommandAborted=> 运动被打断, Error=> 出错, ErrorID=> 错误ID);
指令说明:
●恒速运动在线变速功能块,用于恒速运动过程需要实时变速的场景;
●恒速运动开始后轴将一直以设定的速度一直运动下去,使用MC_Stop或MC_Halt指令可停止运动;
●运动过程中,修改Velocity / Acceleration / Deceleration / Jerk / Direction引脚的输入值,即可对应的改变运动的速度/加速度/减速度/加加速度/方向;
●Velocity / Acceleration / Deceleration输入引脚必须大于0,否则功能块将报错;
●运动的方向由Direction引脚决定,而不是Velocity的参数前面的正负号,Direction为1正向运动,为-1负向运动;
●当轴的速度斜坡类型设置为二次或二次(平滑)时,需要设置加加速度Jerk,加加速度Jerk必须大于0;
●指令不支持仿真,仿真运行时功能块报错16#0FFFFFFF。其他功能和MC_MoveVelocity_ChangeVel一致。
03、编程方法
通过上面的介绍,我们已经了解了在线变速功能块的基本用法,下面通过三个编程实例介绍如何使用在线变速指令。
实例一
控制轴以20速度运动到100位置,然后加速到30运动到200位置。
程序:
①添加MC_Power轴使能功能块以使能轴。
②添加MC_MoveAbsolute_ChangeVel功能块,添加用于控制功能块启动、运动位置和运动速度的变量。
③编写控制程序。当变量MoveStart=TRUE时,轴开始以10的速度运动到100;轴运动到100位置后,轴的速度增加到20;轴运动到200位置,运动结束。
结果:
实例二
控制轴以10速度开始运动到100位置,运动过程中接收到in1输入信号,速度增加到20。
程序:
①添加MC_Power轴使能功能块以使能轴。
②添加MC_MoveAbsolute_ChangeVel功能块,添加用于控制功能块启动、运动位置和运动速度的变量。
③编写控制程序。当触发输入信号in0时,轴开始以10的速度运动到100位置;如果在运动过程中触发了输入信号in1,轴的速度增加到20;轴到达100位置时,运动完成。
结果:
实例三
用触摸屏控制轴的JOG运动,轴的运动速度可以随意改变。
触摸屏程序:
①通讯设置,使用触摸屏的Modbus TCP通讯,设置如下
②添加元件:一个数值输入,两个位设定开关。数值输入用于设定JOG运动的速度,两个开关分别控制轴的正转和反转。
PLC程序:
①启用Modbus TCP从站,与触摸屏通讯
②添加MC_Power轴使能功能块以使能轴。
③添加MC_JOG_ChangeVel功能块,添加用于控制轴正向运动、反向运动和运动速度的变量,并绑定与触摸屏对应的通讯地址。
结果:
04、小结
通过上述介绍我们了解到在线变速的两种实现方式,不难发现,两种实现方式从编程到实现的效果存在不少区别。
从运动控制的覆盖性来说,BufferMode支持绝对点位、相对点位、恒速运动的在线变速,而指令在这个基础上还支持JOG在线变速。
在编程方面,BufferMode往往需要定义多个运动功能块来实现在线变速,而在线变速指令只需要一条指令便可实现运动与运动中变速,而且在线变速指令比BufferMode的实现代码要简单得多。
在运动效果方面,BufferMode能在更加精准的位置上进行变速,而指令需要用程序判断达到指定的轴位置再进行变速,在变速的点位精度上不如BufferMode。
从调试的灵活性来说,在线变速指令可以随时修改速度的特性,能给调试带来许多方便,且能大幅减少程序量。
无论是何种实现方式,只要是符合使用场景的方式,就是合适的方式。用户应根据实际的使用需求选择合适的实现方式。
END
下一篇:六维力传感器精度的影响因素
中国传动网版权与免责声明:凡本网注明[来源:中国传动网]的所有文字、图片、音视和视频文件,版权均为中国传动网(www.chuandong.com)独家所有。如需转载请与0755-82949061联系。任何媒体、网站或个人转载使用时须注明来源“中国传动网”,违反者本网将追究其法律责任。
本网转载并注明其他来源的稿件,均来自互联网或业内投稿人士,版权属于原版权人。转载请保留稿件来源及作者,禁止擅自篡改,违者自负版权法律责任。
产品新闻
更多>2025-01-07
2024-12-30
2024-12-18
2024-12-18
2024-12-18
2024-12-17