任务执行等级定义了执行系统中程序执行的时间顺序,每个执行等级包含一个或几个任务,如图10-1所示。
执行等级包括:
1)同步执行等级(Synchronous execution levels):与伺服控制或插补时钟周期同步。
2)时间驱动的执行等级(Time-driven execution levels):按照用户指定的时间周期触发任务执行。
3)事件驱动的执行等级(Event-driven execution levels):事件触发任务,包括系统中断任务和用户中断任务。
4)自由运行执行等级(Free-running execution levels):自由循环执行的任务,包括Mo-tionTask和BackgroundTask,每个MotionTask只执行一次;BackgroundTask循环执行,执行的时间由Task中的程序长度决定。
5)系统启动和停止任务在特定的时候执行,其中StartupTask在CPU从STOP状态切换到RUN状态时执行;ShutdownTask在CPU从RUN状态切换到STOP状态时执行。
除了用户级的任务之外,在各执行等级中还包含系统任务,由系统自动执行,用户无法分配程序到系统任务也不能改变其执行顺序。
如果两个任务的程序在某个时刻同时执行,那么任务的优先级决定了哪个任务先执行,任务的优先级不能由用户改变。
注意事项:
1)对于TimerInterruptTasks:设定的时间越短优先级越高。
图10-1 执行等级及其包含的任务类型
2)所有的UserInterruptTask优先级是一样的,按照触发的顺序一一执行。
3)Wait for condition命令可以暂时提高MotionTask的优先级,在IPO周期检查条件是否满足。
图10-2所示为SIMOTION中各种任务的执行顺序,系统时钟设置为DP:Servo:IPO的比例是1∶1∶1。下面依次介绍任务执行过程中的各个节点:
①DP/PN-ASIC<->Bus,通信的芯片和PROFIBUS或PROFINET IO进行数据交换。
②DP/PN-ASIC->log.addr,IO输入数据从通信芯片加载。(www.xing528.com)
③System servo,在伺服时钟周期内进行系统计算(位置控制器等),如果在此周期内程序不能计算完会造成溢出,进入STOP模式,禁止启动,并在诊断缓冲区中记录。只有在重新上电后或下载后才能再次启动。
④Log.addr.->DP/PN-ASIC,I/O输出写入到通信芯片
图10-2 任务的执行顺序
⑤UserInterrupt-Check,检查用户中断程序的条件。
⑥Wait for condition-Check,WAITFORCONDITION(等待轴,等待信号等)命令的条件被检查。
⑦System IPO/IPO_2,IPO中的系统程序(运动控制:定位曲线,同步操作等)。
⑧MotionTask n,WAITFORCONDITION等待中的MotionTask,当条件满足时被优先执行(更高的优先级)。
⑨BackgroundTask,Background背景数据块(PI)在BackgroundTask开始时和结束后被刷新。如果程序的运行时间比较长,BackgroundTask在运行时可能被高级的任务打断几次。
⑩通信,通信功能(HMI,PG/PC等)。
对于任务执行过程中常见的几种情况,我们结合图10-3进行分析,图中:
(1)IPO任务中执行的程序比伺服周期时间长,此时,IPO任务被中断然后执行DP通信和伺服任务,随后IPO任务继续执行。
(2)IPO任务结束后,执行SystemInterruptTask,然后执行低优先级的TimerInterruptTask。
(3)UserInterruptTask即使在条件满足的条件下,也是在高优先级的任务结束后执行。
(4)自由执行等级任务在剩余的时间执行。
图10-3 任务执行机制
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。