MC_MoveVelocity()
该指令控制轴以指定的速度和指定的方向持续运行,运动过程中可以使用MC_Stop指令或者MC_Halt指令停止轴的运动。
- 使用该指令控制轴运行时,必须先使用MC_Power指令对轴进行使能
- 使用该功能块控制轴的运动是一个加速到匀速的过程,一旦轴达到了Velocity指定的速度(加速过程已经结束),这个功能块的InVelocity输出引脚就会变为TRUE,此时功能块就已经执行完毕了,轴会一直以Velocity指定的速度一直运行,但是这个功能块不会再去监控轴的运动过程了(因为一旦轴的速度达到Velocity指定的速度,这个功能块的使命就完成了)
- 前面说使用MC_MoveVelocity指令控制轴的运动过程是一个加速到匀速的过程,那么在加速阶段如果被其他指令打断的话,例如使用了MC_Stop指令停止了轴的运动,那么对于MC_MoveVelocity功能块来说,相当于没有执行完(因为轴没有达到Velocity指定的速度就被终止运行了),在轴没有达到Velocity指定的运行速度的过程中,MC_MoveVelocity会一直监控轴的运行(因为它得确保完成自己的使命:让轴达到Velocity指定的运行速度,但是需要程序每周期都能扫描到这个功能块),这时CommandAborted引脚就会置TRUE,标示功能块的执行过程被打断了。或者有其他错误发生的话,那么Error就会置TRUE且ErrorID会指示对应的错误代码。
但是!如果你的程序每个周期都在扫描执行这个功能块的实例,那么即使轴已经达到了匀速的状态,如果有其他运动指令打断的话,例如MC_Halt()指令,那么功能块的Invelocity引脚也会变为FALSE状态,但是变为FALSE状态的前提是功能块的Execute是TRUE状态。 - 此指令可以应用在已经耦合到主轴的从轴上,如果从轴的NC-parameters选项下的此项为TRUE的话,那么对从轴使用此指令可以导致从轴从主轴上解耦,解耦完后从轴就执行这个指令。
Invelocity与Override的关系
Override(类型是LREAL,取值范围0.0-100.0)用来设置指令速度的比例,该值在MC_Power指令中进行设置,由于MC_Power需要在轴运行过程中一直保持为TRUE的状态,所以这个override是可以动态修改的,本周期的修改在下一个程序扫描周期生效
如果MC_MoveVelocity指令已经让轴运行到了指定的速度,此时MC_MoveVelocity的输出Invelocity和Busy(如果此时MC_MoveVelocity的Enable还为TRUE的话)就会为TRUE,如果此时修改了MC_Power指令中的Override值,比如修改为了50.0,那么MC_MoveVelocity指令的Invelocity和Busy就会变为FALSE,同时CommandAborted输出会变为TRUE。