本文档主要介绍LkinCtrl功能库中LKinCtrl_MC_MovePath功能块的Flag功能。
在文档《使用MC_MovePath功能块多路径插补使用入门》中介绍了使用MC_MovePath快速实现如图1-1中路径的插补任务。在实际应用中,所控制的运动机构并不是简单的完成走完整个路程,通常需要在走到某一些位置点时处理其他的任务,比如常见的物料的抓起或放下,或是启动其他的任务程序。为了方便处理这种情况, MC_MovePath提供了Flag功能。
图1-1 路径示例
注意:学习本文档的前提条件是用户已掌握
《LKinCtrl功能库应用之一:使用MC_MovePath功能块多路径插补使用入门》。
本文档基于以下 硬件及软件环境:
表1-1: 硬件列表
产品 | 订货号 | 固件版本 |
---|---|---|
PM 70 W 120/230VAC | 6EP1332-4BA00 | |
CPU 1517T-3 PN/DP | 6ES7 517-3TP00-0AB0 | V2.8.2 |
SIMATIC Memory Card 24 MB | 6ES7954-8LF03-0AA0 |
表1-2: 软件列表
名称 | 版本 | 备注 |
---|---|---|
STEP 7 Professional | V16 Update 3 | |
LKinCtrl library | 3.0.3 |
https://support.industry.siemens.com/cs/cn/en/view/109755891
在使用MC_MovePath实现多路径的插补过程中,可以通过启用Flag功能来实现外部执行机构的控制,比如常见的物料的抓起或放下。
根据Flag输出的时序以及复位方式分为以下模式(如表2-1所示):
表2-1 Flag功能概览
Flag模式 | 功能 |
---|---|
0 | Flag deactivated |
1 | SET_BEFORE_AND_NO_RESET |
2 | SET_BEFORE_AND_RESET_AFTER |
3 | SET_BEFORE_AND_RESET_AFTER_ONE_CYCLE |
5 | BEFORE_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE |
10 | SET_IN_REMAINING_DISTANCE_TO_TARGET |
11 | SET_AFTER_AND_NO_RESET |
13 | SET_AFTER_AND_RESET_AFTER_ONE_CYCLE |
15 | SET_AFTER_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE |
以下对各个模式进行进一步详细说明。
注意:
以下模式说明均以Bool类型的setFlages为例,对于LReal类型的valueFlags输出有相同的行为。
图2-1 SET_BEFORE_AND_NO_RESET模式 如图2-1所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式1下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1),在后继路径执行的过程中,flag[1]不会被复位。用户可以编写程序进行外部复位。 注意:当整个路径执行完毕时(图中时刻2)即使没有外部复位,flag[1]也会被MC_MovePath复位。
图2-2 SET_BEFORE_AND_RESET_AFTER模式 如图2-2所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式2下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1),当第3条指令执行完毕时(图中时刻2)flag[1]被复位。
图2-3 SET_BEFORE_AND_RESET_AFTER_ONE_CYCLE模式 如图2-3所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式3下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1),一个扫描周期之后(图中时刻2)flag[1]被复位。
图2-4 BEFORE_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE 模式 如图2-4所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式5下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1);当第二条指令执行完毕后(图中时刻2)会等待外部的确认信号;当外部将flag[1]复位后,程序检查到flag[1]下降沿(途中时刻3),获得外部的确认信号后才开始执行第3条指令。 使用模式5可以很方便的实现按条件等待功能,只有外部条件满足并确认flag信号后才会进入到下一条指令。 注意:
5. Flag 模式10: SET_IN_REMAINING_DISTANCE_TO_TARGET
图2-5 SET_IN_REMAINING_DISTANCE_TO_TARGET 模式
如图2-5所示,PathData中定义了5条指令,其中在第2条指令中启用了Flag功能,设置的remainingDistance=20.0。
在模式10下,当第2条指令执行至距离目标设定距离差20.0时(图中时刻1),对应的Flag位flag[1]被置位;在后继路径执行的过程中,flag[1]不会被复位。用户可以根据需要编写复位指令。
注意:
6. Flag 模式11: SET_AFTER_AND_NO_RESET
图2-6 SET_AFTER_AND_NO_RESET模式
如图2-6所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。
在模式11下,当第2条指令执行完成时,对应的Flag位flag[1]被置位(图中时刻1),在后继路径执行的过程中,flag[1]不会被复位。用户可以编写程序进行外部复位。
注意:当整个路径执行完毕时(图中时刻2)即使没有外部复位,flag[1]也会被MC_MovePath复位。
7. Flag 模式13: SET_AFTER_AND_RESET_AFTER_ONE_CYCLE
图2-7 SET_AFTER_AND_RESET_AFTER_ONE_CYCLE模式
如图2-7所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。
在模式13下,当第2条指令执行完成时,对应的Flag位flag[1]被置位(图中时刻1),一个扫描周期之后(图中时刻2)flag[1]被复位。
8. Flag 模式15: SET_AFTER_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE
图2-8 SET_AFTER_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE 模式
如图2-8所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。
在模式15下,当第2条指令执行完成时,对应的Flag位flag[1]被置位(图中时刻1)并开始等待外部的确认信号;当外部将flag[1]复位后,程序检查到flag[1]下降沿(图中时刻2),获得外部的确认信号后才开始执行第3条指令。
使用模式15可以很方便的实现按条件等待功能,只有外部条件满足并确认flag信号后才会进入到下一条指令。
注意:
Flag功能通过用于定义路径的数据结构PathData中的setFlages或valueFlags来设置Flag相关参数的。
有两种启用方式:
1) cmdType=0
2) 根据需要填写setFlages(Bool类型输出)或valueFlags(LReal类型输出)相关参数。
图 2-9 FlagOnlyCmd方式
2. 方式二:配合其它命令使用,当cmdType 为以下命令类型时, 在填写完本条指令的命令参数后,再根据需要填写setFlages(Bool类型输出)或valueFlags(LReal类型输出)相关参数。
1: MoveLinAbs;
2: MoveLinRel;
3: MoveCircAbs;
4: MoveCircRel;
5: MoveDirectAbs;
6: MoveDirectRel;
10: TrackConveyorBelt;
100: WaitTime;
40/41/42: ContourOffset;
如图2-10所示,本条指令cmdType=1,实现的是MoveLinAbs绝对直线插补功能,在完成直线插补命令相关的参数之后,可以附加定义setFlages参数启用Flag功能。
图 2-10 配合其他命令使用
图 2-11 Flag在程序中的引用关系
如图2-11所示,按以下步骤完成程序中的变量建立及引用。
图 2-12 Flag的对应关系 如图2-12所示,当PathData中指令的参数setFlags[1]中的flag设置为3时,对应“Control”数据块中flags数组元素flags[3]。当本条指令按照设定的flagMode模式满足置位条件后使flags[3]=true。 同样的,当PathData的参数valueFlags[1]中的flag设置为2时,对应“Control”数据块中valueFlags数组元素的valueFlags[3]作为本条命令的标志输出。
步骤1:打开《LKinCtrl功能库应用之一:使用MC_MovePath功能块多路径插补使用入门》中的示例程序 【LKinCtrl_Getting_Started】,并在commands[2]启用flag命令
步骤2:
如右图所示,在OB1中添加使用flags[3]控制bool类型执行机构activateTool示例。
当任务完成后使用变量JobDone复位输出以及flag变量。
实现效果:
当commands[2]开始执行时flags[3]被置位,等待所有待确认的Flag被确认后开始执行后继的路径命令commands[3]
步骤3:
如右图所示,在OB1中添加使用valueFlags[2]控制LReal类型执行机构Actuator示例。
当任务完成后使用变量JobDone2复位输出以及valueFlag变量。
实现效果:
当commands[2]执行完成时valueFlags[2]开始输出设定值10.0,等待所有待确认的Flag被确认后开始执行后继的路径命令commands[3]
步骤4:
修改CPU属性,将【最小循环时间】改为4ms
步骤5:
下载程序到PLC并使能轴并进行回原点操作。
步骤6: 在左侧项目树下,双击【添加新轨迹】
步骤7: 如右图所示,添加要记录的信号
步骤8: 如右图所示,使能【使用最长纪录持续时间】
步骤9: 如右图所示,修改触发模式为【变量触发】,并选择变量ExcuteMyPath.
步骤10: 点击【在设备上安装轨迹】图标
步骤11: 点击【激活记录】图标,开始记录曲线
步骤12: 使能ExcuteMyePath,开始执行路径功能。
步骤13: 当观察到flags[3]被置位时,等待一段时间后将JobDone信号置为true对Flag进行确认。
步骤14: 当观察到valueFlags[2]输出为10.0时,等待一段时间后将JobDone2信号置为true对Flag进行确认。
步骤15: 在trace中观察曲线,仅当valueFlags和flags都却被确认时,才会进入到command3