浅谈S7-1500T 运动控制指令的控制时序
轴的**定位指令
工艺对象”TO_1”通过运动控制指令MC_MoveAbsolute进行**定位,左侧输入参数设置**定位的动态参数,右侧输出状态显示工艺对象”TO_1”当前的状态。
通过设置运动控制指令的参数“Execute”或“Enable”可以启动运动控制作业。运行运动控制作业时,应该同时注意工艺对象的状态。应该按如下步骤启动运动控制作业:
· 查询工艺对象的状态。
· 初始化用于工艺对象的新作业。
· 检查作业状态。
还是以**定位指令为例进行说明:
1. 查询工艺对象的状态
1) 是否已释放工艺对象
为了执行运动作业,必须启用工艺对象。例如:可以使用运动控制指令MC_Power完成启用.MC_Power.Status参数<TO>.StatusWord.X0 (Enable)的值必须显示为 True。
2) 是否有未决工艺报警
为了执行运动控制指令,不得有未决工艺报警或报警响应。例如: 工艺对象 <TO>.ErrorDetail.Number.<TO>.ErrorDetail.Reaction的变量值必须显示为零。如果需要复位错误,可以使用运动控制指令“MC_Reset”对未决报警进行确认。
3) 工艺对象是否已归位
为了执行**定位作业,必须使定位轴/同步轴工艺对象回原点。例如:工艺对象<TO>.StatusWord.X5 (HomingDone) ”变量的值必须显示为 True 。可以使用运动控制指令“MC_Home”实现回原点操作。
2. 初始化用于工艺对象的新指令
在指令” MC_MoveAbsolute”的输入参数”position””velocity”等参数中*轴的动态响应参数.此后将在参数”execute”的上升沿启动作业.
3. 检查指令状态
运动控制指令的参数“Done”表示作业已成功完成(在本示例中表示已到达目标位置)。如果检测到错误,则运动控制指令的参数“Error”被设置为 True,且作业被拒绝。
每次调用运动控制指令时,都会更新这些状态参数.在跟踪作业时,会区分为以下三种形式:
· 带”Done”参数的运动控制指令
· 不带”Done”参数的运动控制指令
· 运动控制指令”MC_Movejog”(特例)
以下分别对以上三种形式为例,来对运动控制指令的时序进行说明:
1. 带”Done”参数的运动控制指令
带“Done”参数的运动控制指令的作业在参数“Execute”上升沿开始。如果该作业已经完成且未出现错误或者未被其它任务中断(例如“MC_MoveAbsolute”:已经到达目标位置),则参数“Done”会显示值 TRUE。
以下通过不同情形对这些参数特性进行说明:
1)完成作业执行过程
从图中可以看出,如果在完成作业前”Execute”被设置为False,则参数”Done”仅在一个执行周期内显示为True.
2)作业中止
从图中可以看出,如果在完成作业前”Execute”被设置为False,则参数”CommandAborted”仅在一个执行周期内显示为True.
3)作业执行期间出错
从图中可以看出,如果在完成作业前”Execute”被设置为False,则参数”Error”仅在一个执行周期内显示为True.
2.不带”Done”参数的运动控制指令
不带“Done”参数的运动控制指令使用特殊参数来指示已达到指令目标(例如,“InVelocity”、“InGear”)。
以下以”MC_MoveVelocity”指令为例来对运动控制指令的时序进行说明:
在参数“Execute”的上升沿开始“MC_MoveVelocity”作业。当达到*的速度且轴以恒定速度移动时,就达到了作业目标。在达到并保持*的速度时,将在参数“InVelocity”中用值为 True 进行指示。
以下通过不同情形对这些参数特性进行说明:
1)达到并维持*的速度
从图中可以看出”Invelocity”与”Busy”的状态与”Execute”无关.
2)作业在达到分配的速度前中止
如果在达到分配的速度前,运动控制指令被另一个作业中止,例如”MC_halt”,则会通过参数”CommandAborted”=True进行指示,从图中可以看出,此状态的显示时间受到”Execute”的信号状态影响,如果在中止作业之前,已经将”Execute”设置为False,则”CommandAborted”仅在一个周期内显示为True.
3)达到*的速度前出错
如果在达到分配的速度前,在执行运动控制工作时出错,则会通过参数“Error”= True进行指示。从图中可以看出,此状态的显示时间受到”Execute”的信号状态影响,如果在中止作业之前,已经将”Execute”设置为False,则”Error”仅在一个周期内显示为True.
3.运动控制指令”MC_Movejog”
通过设置参数“JogForward” 或 “JogBackward”启动“MC_MoveJog”作业。当达到*的速度且轴以恒定速度移动时,就达到了作业目标。在达到并保持*的速度时,将在参数“InVelocity”中用值为 True 进行指示。
当参数“JogForward”或“JogBackward”的值已设置为 False 并且轴已停止时,作业完成。
以下通过不同情形对这些参数特性进行说明:
1)达到并维持*的速度
从图中可以看出轴在执行作业的期间”Busy”会显示为True,在到达*速度后”Invelocity”会变为True.
轴在重置参数”JogForward”或者”JogBackward”时,轴将会减速,此时”Invelocity”会变为False,但是当轴停止以后”Busy”的值才会变为False.
2)作业在执行期间中止
从图中可以看出在中止作业时”Busy”会变为False,“CommandAborted”将变为True。
但是在重置参数”JogForward”或者”JogBackward”时,参数“CommandAborted”也将变为False.
3)在执行作业期间发生错误
从图中可以看出在发生错误时,”Busy”会变为False, ”Error”将变为”True”,但是在重置”JogForward”或者”JogBackward”时,参数”Error”也将变为False.
综上所述,我们可以获取轴的当前状态,例如:轴是否定位完成等等,通过获取到的轴状态,我们可以进行进一步的编程,实现顺序控制等功能,同时必须要强调在编程中考虑轴的指令状态的存在时间,以防止在某些情况下,由于轴的状态存在时间很短导致无法获取当前状态,造成顺序控制无法执行下去的问题.
shtxjd.cn.b2b168.com/m/