说明:仅供自己学习记录,如有错误烦请指正,谢谢!

在使用基于PLCOpen的运动控制功能块时,我们经常会看到功能块的输入中有这样两个参数接口,如图:

可以看到左边的单轴功能块只有一个BufferMode,而右边的多轴控制功能块则有BufferMode、TransitionMode、TransitionParameter3个参数用于定于过渡。

下面记录下自己的学习笔记,参考了PLCOpen第四章和Codesys的帮助文档。

1.定义

BufferMode:缓冲模式是指同时启动多条插补指令时指令执行的流程,数据类型为枚举MC_BUFFER_MODE,枚举元素如下:

BufferMode

说明

Aborting(0)

没有缓冲,立即中断

Buffered(1)

缓冲,等待上一个动作结束后,开始动作

BlendingLow(2)

以较低的速度过渡运行

BlendingPrevious(3)

以上一个速度过渡运行

BlendingNext(4)

以下一个速度过渡运行

BlendingHigh(2)

以较高的速度过渡运行

TransitionMode:过渡方式是指当前插补跟上一段插补相互切换时的连接方式数据类型为枚举,MC_TRANSITION_MODE,枚举元素如下:

TransitionMode

说明

TMNone

没有速度混成

TMStartVelocity

以给定的速度为过渡起始速度,参数TransitionParameter[0]

TMCornerDistance

以给定的拐角距离处开始过渡,参数TransitionParameter[0]

TransitionParameter:过渡参数,数据类型ARRAY[0..(SMC_RCNST.MAX_TRANS_PARAMS-1)] OF LREAL

SMC_RCNST是Robot库里的全局变量(没找到具体说明),MAX_TRANS_PARAMS初始值为2。

所以一般来说,TransitionParameter有两个元素,即TransitionParameter[0]和TransitionParameter[1].

参数TransitionParameter[1]在TMStartVelocity和TMCornerDistance模式下为过渡内圆半径最小值。

2.使用方法

单轴控制中的使用:

单轴控制使用起来就非常方便了,如图:

两个单轴绝对运动实例,假如先后激活两个功能块,那么如果第二个功能块的缓冲模式是Aborting,会直接中断第一个功能块的运动,直接执行第二个功能块。但如果缓冲模式是Buffered,它不会中断第一个功能块的运动,而是会将第二个运动指令缓冲,等待第一个运行结束后再执行下一段运动。

轴组控制中的使用:

轴组中的应用稍微麻烦点,因为空间插补的话,如果要衔接两段插补运动,除了选择缓冲模式,还需要定义过度模式和过渡参数。如下:

过渡模式和过渡参数参考第一节的定义。

由于是仿真,看不到TCP空间轨迹,这里使用跟踪记录了下各个模式下关节的速度变化。

BlendingPrevious+TMCornerDistance,TransitionParameter[0]=10 ,TransitionParameter[1]= 1 :

BlendingPrevious+TMStartVelocity,TransitionParameter[0]=0.3,TransitionParameter[1]= 2 :

可以看到即使TransitionParameter[0]设到很小,过渡时间还是有点久。

BlendingNext+TMCornerDistance,TransitionParameter[0]=10 ,TransitionParameter[1]= 5 :

总之,示波器只能参考,要根据实际轨迹对比,可能才能看到明显的缓冲变化。

3.注意事项

定义了缓冲模式后如果没有设置缓冲参数,功能块会报错,无法执行,如图:

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐