前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[LKinCtrl功能库]应用之 Flag功能介绍

[LKinCtrl功能库]应用之 Flag功能介绍

作者头像
科控物联
发布2022-03-29 15:53:09
1.5K0
发布2022-03-29 15:53:09
举报
文章被收录于专栏:科控自动化

1 介绍

1.1 概述

本文档主要介绍LkinCtrl功能库中LKinCtrl_MC_MovePath功能块的Flag功能。

在文档《使用MC_MovePath功能块多路径插补使用入门》中介绍了使用MC_MovePath快速实现如图1-1中路径的插补任务。在实际应用中,所控制的运动机构并不是简单的完成走完整个路程,通常需要在走到某一些位置点时处理其他的任务,比如常见的物料的抓起或放下,或是启动其他的任务程序。为了方便处理这种情况, MC_MovePath提供了Flag功能。

图1-1 路径示例

注意:学习本文档的前提条件是用户已掌握

《LKinCtrl功能库应用之一:使用MC_MovePath功能块多路径插补使用入门》。

1.2 测试环境

本文档基于以下 硬件及软件环境:

表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

  • 可以从如下地址下载LKinCtrl library功能库及说明文档:

https://support.industry.siemens.com/cs/cn/en/view/109755891

2 Flag功能使用说明

2.1 Flag功能介绍

在使用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输出有相同的行为。

  1. Flag 模式1: SET_BEFORE_AND_NO_RESET

图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复位。

  1. Flag 模式2: SET_BEFORE_AND_RESET_AFTER

图2-2 SET_BEFORE_AND_RESET_AFTER模式 如图2-2所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式2下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1),当第3条指令执行完毕时(图中时刻2)flag[1]被复位。

  1. Flag 模式3: SET_BEFORE_AND_RESET_AFTER_ONE_CYCLE

图2-3 SET_BEFORE_AND_RESET_AFTER_ONE_CYCLE模式 如图2-3所示,PathData中定义了4条指令,其中在第2条指令中启用了Flag功能。 在模式3下,当第2条指令开始执行时,对应的Flag位flag[1]被置位(图中时刻1),一个扫描周期之后(图中时刻2)flag[1]被复位。

  1. Flag 模式5: BEFORE_AND_NO_RESET_AND_WAIT_FOR_ACKNOWLEDGE

图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信号后才会进入到下一条指令。 注意:

  • 如果使用的是LReal类型的Flag (valueFlags),可以通过将valueFlags设置为默认值-1.0来确认Flag信号。
  • 当启用了多个WAIT_FOR_ACKNOWLEDGE等待确认模式的Flag时,需要将所有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]不会被复位。用户可以根据需要编写复位指令。

注意:

  • 当整个路径执行完毕时(图中时刻2)flag[1]会被复位。
  • 当后继的指令定义了混合过渡模式并设定了过渡半径,当remainingDistance 值为0.0时并不一定表示已经到达了当前指令设定的目标位置,有可能正处于过渡半径上。

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信号后才会进入到下一条指令。

注意:

  • 如果使用的是LReal类型的Flag (valueFlags),可以通过将valueFlags设置为默认值-1.0来确认Flag信号。
  • 当启用了多个WAIT_FOR_ACKNOWLEDGE等待确认模式的Flag时,需要将所有Flag都复位后才会进入下一条指令

2.2 Flag功能启用方式

Flag功能通过用于定义路径的数据结构PathData中的setFlages或valueFlags来设置Flag相关参数的。

有两种启用方式:

  1. 方式一:令cmdType=0启用Flag only 命令,此时该条指令只用来启用flag功能,如图2-9所示,只需要填写以下信息:

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.3 Flag在程序中的使用

图 2-11 Flag在程序中的引用关系

如图2-11所示,按以下步骤完成程序中的变量建立及引用。

  1. 建立全局DB “Controls”,并建立Bool类型数组变量flags与LReal类型数组变量valueFlags,数组长度为常量“LKINCTRL_NO_OF_LAST_SETFLAG”。
  2. 在MC_MovePath功能块flags和valueFlags管脚填入建好的数组变量。

图 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]作为本条命令的标志输出。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 介绍
    • 1.1 概述
      • 1.2 测试环境
      • 2 Flag功能使用说明
        • 2.1 Flag功能介绍
          • 2.2 Flag功能启用方式
            • 2.3 Flag在程序中的使用
            • 3 示例项目
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档