嫩叶草回家旧址图片高清_免费18款深夜禁用黄尿入口_禁止18勿入的30000部芒果

  • IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2024全景工博会
控制软件

SIMOITON中Motion Task状态查询与调用

  2013年10月14日  

  1概述

  在西门子的SIMOTION中,有一系列的命令可以用来控制Motion Tasks的启动、停止、继续运行,也可以查询某一个任务的运行状态。

  Motion Task的任务状态模型如图1所示,展示了执行系统中的任务(例如MotionTask)所处的各个运行状态之间的转换关系,以及该关系可以通过哪条指令进行跳转。

  图1.任务状态模型

  TS_INVALID:任务不存在于执行系统中,在执行系统的参数设置中未使用。

  TS_STOP_PENDIING:任务已经收到一个停止信号,但仍然处于RUNNING 和STOPPED状态之间。任务仍然可以执行动作直到被停止。

  TS_STOPPED:任务因调用功能 _resetTask()或SIMOTION SCOUT执行了停止而停止。

  TS_RUNNING:任务因下列功能而运行:

  ? 调用功能 _startTask() (MotionTasks)

  ? 相关事件已发生 (UserInterruptTask 等)

  TS_WAITING:任务因下列功能之一而处于等待状态:

  ? _waitTime()

  ? WAITFORCONDITION...

  TS_SUSPENDED:任务通过功能 _suspendTask()被暂停

  TS_WAIT_NEXT_CYCLE:TimerInterruptTask 正在等待其触发信号

  TS_WAIT_NEXT_INTERRUPT:SystemInterruptTask 正在等待触发报警或者UserInterruptTask 正在等待触发事件

  TS_LOCKED:任务通过功能 _disableScheduler()被锁定。

  2 Motion Task控制命令说明

  可以使用MCC或ST编程语言编辑Motion Tasks的调用及处理程序。MCC编程语言中的任务处理命令如图2所示:

  图2. MCC中的任务处理命令

  而ST编程语言中的任务处理命令有_startTaskId,_resetTaskId,_restartTaskId,_suspendTaskId,_resumeTaskId,_getStateOfTaskId。

  MCC命令说明:

  (1) Start task(对应于ST语言的_restartTaskId)

  该命令用于将一个处于TASK_STATE_STOPPED状态的Motion Task运行,对于处在TASK_STATE_WAITING,TASK_STATE_SUSPENED状态的Motion Task,该指令无效果。

  _restartTaskId命令从头启动一个MotionTask,也就是从最开始执行一个已停止的任务。如果任务已经激活,则停止该任务并从开始处重新处理,也就是说该命令只能在 BackgroundTask中调用一次,否则被选择的任务在每次BackgroundTask循环中都会重新启动。该命令允许用于MotionTask。

  (2)Interrupt task(对应于ST语言的_suspendTaskId)

  该命令将一个任务中断在当前位置,任务状态变为TASK_STATE_SUSPENDED。该命令不停止先前已经从该任务启动的那些轴运动。停止所有当前激活的 UserInterruptTask,只有当启动条件再次满足时才启动它。该命令允许用于MotionTask、BackgroundTask、UserInterruptTask、SystemInterruptTask 和TimerInterruptTask。对于循环任务 (BackgroundTask、TimerInterruptTask)同时停止任务的时间监视。使用 _resumeTask Id()可继续任务执行及其时间监视。

  (3)Continue task(对应于ST语言的_resumeTaskId)

  该命令将从先前的断点位置继续处理中断的任务。中断的运动不会自动继续,必须通过编程继续才能执行中断的运动。该命令只能在 BackgroundTask 中调用一次,否则被选择的任务在每次BackgroundTask循环中都会从中断位置继续执行。该命令允许用于MotionTask、BackgroundTask、UserInterruptTask、 SystemInterruptTask 和TimerInterruptTask。

  (4)Reset task(对应于ST语言的_resetTaskId)

  该命令可以将一个MotionTask复位为TASK_STATE_STOPPED状态,若此时想要将MotionTask恢复运行状态,需要使用RestartTaskId命令。

  (5)Task state(对应于ST语言的_getStateOfTaskId)

  该命令可以用来查询相关任务的运行状态。

  (6)Determine taskId(对应于ST语言的_getTaskId )

  该命令根据任务名称生成一个项目范围内唯一的TaskId ,该任务标识必须分配给一个数据类型为StructTaskId 的变量。

  3 Motion Task控制命令调用

  LAD编程方式如图3所示:

  图编程

  在任务控制命令中,通过id指定唯一被调用的任务,可通过以下方法可以获得Mo tionTask的TaskId:

  (1) _task.

  为被调用任务的的任务名称,例如Task_1。

  (2) 通过_getStateOfTaskId指令,可以获得相关任务的的运行状态,该指令的的返回值为DWORD型数据,其含义如图4所示:

  图4 任务执行状态查询

  指令的运行状态可以是两个或多个代码值的相加之和,例如16#0014表示的状态就是,该任务正在运行,但是由于_waitTime或者waitforcondition指令处在等待的状态。

  当然也可以使用ST或MCC编程方式来实现Motion Task的控制,在此不再赘述。

  4示例

  下面以SIMOTION D445-2为例,举一个简单的例子通过程序对MotionTask的状态模型进行控制。

  首先,在MCCUnit_1中插入源程序MCC_1(),在其中编写循环计数程序,计数变量为counter,将MCC_1()插入到执行系统的MotionTask_1中。

  图5 MCC_1()编程示例

  然后,在LFunit_1中,插入源程序LADFBD_1(),在其中编写MotionTask_1的控制程序,将LADFBD_1()放入执行系统的BackgroundTask中循环执行。

  图6 Motion Task控制程序示例

  运行SIMOTION,使用Trace功能可以捕捉到Counter和Taskstate两个变量的状态,如图7所示:

  图7. 变量Trace图

  图中,黄色线为Taskstate的数值,其数值变化为16#0002->16#0004->16#0024->16#4,表示MotionTask_1的运行状态依次TASK_STATE_STOPPED->TASK_STATE_RUNNING-> TASK_ST ATE_RUNNING+TASK_STATE_SUSPENDED->TASK_STATE_RUNNING。橘红色为MotionTask_1中计数程序的计数值。

最新视频
研祥智能AI无风扇工业控制器M60C   
ifm传感器课堂:IO-Link主站AL1X0X与Profinet通讯组态演示   
TE 成就稳定、高效的新能源储能系统
研祥金玛
专题报道
2024全景工博会
2024全景工博会 2024工博会以“工业聚能 新质领航”为全新主题,旨在瞄准我国新型工业化高质量发展的核心技术和重点领域,为产业转型升级提供良好的示范样板。
企业通讯
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事

全球能源格局加速重构的今天,怎样走好复杂且极具挑战的电气化转型之路?如何用创新技术实现更多电力和更低排放,从而创造美好世

开关电源在设备升级中的性能影响和选型技巧
开关电源在设备升级中的性能影响和选型技巧

随着《中国制造2025》等政策的推进,新一代工业浪潮来临,工控行业迅猛发展,自动化设备需求与日俱增。众所周知,电源是设备

在线会议
热门标签

社区

广灵县| 苏尼特右旗| 新巴尔虎左旗| 昌图县| 怀来县| 中卫市| 河南省| 张家口市| 潞城市| 吉首市|