本文档主要介绍如何使用LkinCtrl功能库的LKinCtrl_MC_MovePath功能块快速实现S7-1500T CPU运动学的多路径插补功能。
使用S7-1500T CPU的运动系统功能可以实现路径插补功能。S7-1500T CPU 提供了如下基本插补指令:
图1-1 路径示例
注意:学习本文档的前提条件是用户已掌握运动学功能单个插补指令的使用。
本文档基于以下 硬件及软件环境:
表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-1 MC_MovePaht指令
MC_MovePath提供了以指令列表的形式合成多个单独的路径运动的功能,可以实现以下功能:
• 启动 / 继续 执行路径运动
• 停止 / 中断路径运动
• 复位功能块错误(非工艺对象错误)
• 选择操作模式(自动/ 单步模式)
• 通过标志控制执行机构(例如:控制吸盘电磁阀)
【execute】: 输入,Bool类型
开始执行任务,上升沿有效
【stop】: 输入,Bool类型
触发时内部调用MC_GroupStop指令,取消所有路径运动并删除作业序列MotionQueue中的所有指令
【interrupt】: 输入,Bool类型
中断路径运动,触发时内部调用MC_GroupInterrupt,运动作
业被中断,可以通过重新触发execute管脚继续完成路径作业。
【reset】: 输入,Bool类型
复位FB程序块报错。注意该管脚并不复位工艺对象自身的报错。
【sequenceMode】:输入,Int类型
sequenceMode=0 : 自动模式,当excute上升沿触发FB开始执行时,完成定义的所有路径。
sequenceMode=1 : 单步模式, excute每触发一次,仅执行路径表中定义的一条路径命令,该模式下指令之间混合运动功能无效。
【pathTransition】:输入,DInt类型
当pathTransition = 1时,按照MC_MovePath的输入参数【bufferMode】和【transitionParameter】定义的过渡跳转模式和参数跳转到第二段路径。
当pathTransition = 0时,按照第二段MovePath路径中第一条路径指令定义的跳转模式和参数进行跳转。
【bufferMode】:输入,DInt类型
定义与后继新路径的跳转模式,当pathTransition=1时该参数有效。跳转模式说明参照插补指令MC_MoveLinearAbsolute或MC_MoveCircularAbsolute 中的BufferMode参数介绍。
【transitionParameter】:输入,Array[1..5] of LReal类型
定义与后继新路径的跳转参数,当pathTransition=1时该参数有效。跳转参数说明参照插补指令MC_MoveLinearAbsolute或MC_MoveCircularAbsolute 中的TransitionParameter参数介绍。
【configuration】:输入,“ LKinCtrl_typeConfiguration“类型
参数配置输入接口,包括三部分内容:
变量名 | 类型 | 说明 |
---|---|---|
offsetParameter | Array[1.."LKINCTRL_NO_OF_OFFSETS"] of "LKinCtrl_typeContourOffsetParameter" | 轮廓偏移功能投入时有效,详细介绍参见Library Kinematics Control 文档 |
conveyorConfiguration | Array[1.."LKINCTRL_NO_ OF_CONVEYOR"] of"LKinCtrl_typeConveyorConfiguration" | 传送带跟踪功能投入时有效,详细介绍参见Library Kinematics Control 文档 |
stopMode | DInt | 停止模式选择详细介绍参见Library Kinematics Control 文档 |
【done】:输出,Bool类型
指令已成功执行完成
【busy】:输出,Bool类型
指令正在执行
【error】:输出,Bool类型
FB执行过程中出现错误
【status】:输出,Bool类型
FB执行的状态输出
【diagnostics】:输出,"LKinCtrl_typeMovePathDiagnostics"类型
FB诊断状态,具体报错信息参见Library Kinematics Control 文档
【readyForNextPath】:输出,Bool类型
当readyForNextPath=ture时表示已具备执行下一条路径的条件。可以判断该位来及时启动一下一条路径。
注意:
为了实现在两段MovePath路径之间进行混合运动跳转,需要在第一段MovePath指令执行完成之前就触发第二段的MovePath指令。
【axesGroup】:输入/输出,TO_Kinematics类型
用于指定要操作的运动学工艺对象
【pathData】:输入/输出,Variant类型
用于定义路径的相关数据,参见下文pathData详细说明。
【flags】: 输入/输出,Array[0.."LKINCTRL_NO_OF_LAST_SETFLAG"] of
Bool类型
与在路径指令中定义DB的setFlags,参见下文Flags功能说明
【valueFlags】:输入/输出,Array[0.."LKINCTRL_NO_OF_LAST_VALUEFLAG"]
of LReal
在路径指令中定义DB的valueFlags,参见下文Flags功能说明
MovePath要执行的路径信息是通过管脚pathData连接的DB来定义的。对于路径的数据结构定义有三种形式PathData_reduced、PathData、PathData_advanced。下面对三种数据结构进行说明。
图2-2 PathData_reduced应用场景
图2-3 PathData应用场景
图2-4 PathData_advanced应用场景 在本示例中,由于图1-1所示路径包含了直线插补和圆弧插补两种插补指令,故选择PathData形式作为路径信息的数据类型。下面以PathData为例,对路径信息的填写方式进行详细说明。
图2-5 PathData数据结构 如图2-5所示, PathData在DB块中定义的数据类型为KinCtrl_typePathData,包含以下两个元素:
图2-6 PathData中插补指令的设置 如图2-6所示,对一条指令包含以下设置内容:
图2-7 cmdCoordinates元素
2. coordSystem用于指定坐标系,与插补指令的输入管脚CoordSystem对应。
5. cmdParameters:用于定义插补指令的相关参数,包含以下几个方面:
图2-8 pathDynamics参数 注意:当cmdType = 100时,velocity值表示以ms为单位的等待时间。
图2-9 circleParameters参数
6. setFlags: Flag标志功能相关参数的设置,如图2-10所示,PathData的参数setFlags[1]中的flag设置为3时,MovePath的管脚flags数组元素的flags[3]作为本条命令的flag输出。当本条指令按照设定的flagMode模式满足置位条件后使flags[3]=true,可以使用该标志位来控制执行机构,比如可以控制吸盘电磁阀导通。
图2-10 flag对应关系
7. valueFlags: Flag标志功能相关参数的设置,如图2-11所示,PathData的参数valueFlags[1]中的flag设置为3时,MovePath的管脚valueFlags数组元素的valueFlags[3]作为本条命令的标志输出,与setFlags不同valueFlags输出的是LReal类型的数值来控制执行机构。
图2-11 valueFlags对应关系
步骤1:新建项目【LKinCtrl_Getting_Started】,并插入CPU 1517T-3PN/DP
步骤2:
l 打开以下链接
https://support.industry.siemens.com/cs/cn/en/view/109755891
l 下载库文件并解压缩
【Library V3.0.3 for STEP 7 V16 】
l 在TIA右侧的全局库空白处点击鼠标右键选择【打开库】
步骤3:
l 鼠标左键按住功能库中【LKinCtrl_Blocks】文件夹不放,拖拽到项目的【程序块】文件夹下
l 鼠标左键按住功能库中【LKinCtrl_Tags】文件夹不放,拖拽到项目的【PLC变量】文件夹下
l 鼠标左键按住功能库中【LKinCtrl_Types】文件夹不放,拖拽到项目的【PLC数据类型】文件夹下
步骤4:
如图所示:
l 建立4个定位轴工艺对象,并设置为虚轴。
l 建立1个运动学工艺对象【Rollpicker】
步骤5:
修改PositioningAxis_1, PositioningAxis_2, PositioningAxis_4为旋转轴。
步骤6:
如右图所示,更改运动机构为【滚动拾取器3D (带定位功能,立式)】
步骤7:
如右图所示,在工艺对象【互连】中设置对应的运动机构轴
步骤8:
如右图所示,在工艺对象【几何结构】中设置【变换参数】
步骤9:
如右图所示,在工艺对象【几何结构】中设置【在运动机构中的表示】
步骤10:
如右图所示,在工艺对象【动力学】修改速度预设值为50.0 mm/s
使用库中的功能块【LKinCtrl_MC_GroupPower】、【LKinCtrl_MC_GroupHome】、【LKinCtrl_MC_GroupReset】可以快速的实现对运动机构涉及到的单轴进行使能、回原点以及复位操作。该步骤非必需操作,用户也可以使用自己编写的单轴处理功能块。
步骤1:
建立DB命名为【Controls】如右图建立相关变量。
注意【StartMode】中变量的起始值设置为1
步骤2:
在左侧项目树的【程序块】文件夹下,按如下目录找到【LKinCtrl_Blocks】->【LKinCtrl_AuxBlocks】->【LKinCtrl_MC_GroupPower】,将其拖拽到OB1组织块中,并如右图所示填写管脚
步骤3:
在左侧项目树的【程序块】文件夹下,按如下目录找到【LKinCtrl_Blocks】->【LKinCtrl_AuxBlocks】->【LKinCtrl_MC_GroupHome】,将其拖拽到OB1组织块中,并如右图所示填写管脚
步骤4:
在左侧项目树的【程序块】文件夹下,按如下目录找到【LKinCtrl_Blocks】->【LKinCtrl_AuxBlocks】->【LKinCtrl_MC_GroupReset】,将其拖拽到OB1组织块中,并如右图所示填写管脚
按右图所示路径信息,建立所需的路径数据的DB块
步骤1:
l 新建数据块,命名为【PathData】
l 按照右图所示,填写第1条路径指令
该指令表示使用绝对直线插补指令,从原点移动到路径第一个坐标P1(200,200,50)的正上方
步骤2:
按照右图所示,填写第2条路径指令,该指令表示使用绝对直线插补指令,下降移动到第一个坐标P1(200,200,50)
步骤3:
按照右图所示,填写第3条路径指令,该指令表示使用绝对直线插补指令从P1点移动到P2点(400,200,50)
步骤4:
按照右图所示,填写第4条路径指令完成以下任务:
l 等待5000 ms
l 使用flag功能11,在等待时间到后将flags[0]置位。
可以使用该flag位控制电磁阀给定,比如可以控制电磁阀抓取物料。
步骤5:
按照右图所示,填写第5条路径指令,该指令表示使用绝对圆弧插补指令从P2点移动到P3点(400,100,50)
步骤6:
按照右图所示,填写第6条路径指令,该指令表示使用绝对直线插补指令从P3点移动到P4点(200,100,50)
步骤7:
按照右图所示,填写第7条路径指令,该指令表示使用绝对直线插补指令从P4点移动到P1点
步骤8:
按照右图所示,在之前的数据块【Controls】新建三个变量用于flag存储及_MC_MovePath的配置管脚输入。
步骤9:
在左侧项目树的【程序块】文件夹下,按如下目录找到【LKinCtrl_Blocks】->【LKinCtrl_MC_MovePath】,拖拽到OB1中调用,并如右图所示填写管脚。
步骤10:
为了便于使用PLCSIM Advanced软件进行仿真需要对项目进行设置。
在左侧项目树 选中最上级的项目名称,点击鼠标右键选择【属性】,在【保护】选项卡点击【块编译时支持仿真】
步骤1:
双击 工艺对象Rollpicker下面的【运动机构轨迹】。
步骤2:
在【组态】选项卡修改记录方式为【工具零点(TCP)】
步骤3:
在OB1中使能轴。
步骤4:
在OB1中完成轴的回原点操作。
步骤5:
在【3D可视化】选项卡点击【监控打开】, 点击【开始记录】
步骤6:
在OB1中启动路径。
步骤7:
路径执行完毕后在【3D可视化】出现右侧的路径轨迹。