总体来说,SIMOTION的任务分为系统任务和用户程序任务,下面对这些任务进行详细介绍。
1.系统任务
(1)用于通信
包括PROFIBUS、PROFINET IO网络的连接及IO处理,还有非周期通信,如Trace等。
(2)用于运动控制
包括IPO/IPO_2,Position Control(Servo)中执行的任务,当使用工艺包时,系统自动分配执行系统,用户程序不会影响工艺程序的执行。
2.用户程序任务
在用户程序任务中可以执行运动控制、逻辑控制和工艺功能等。用户程序任务主要包括:
(1)启动任务StartupTask
当SIMOTION运行模式从STOP或STOPU到RUN时触发StartupTask,该任务可以用于变量的初始化和工艺对象的复位。在这个任务中,由于工艺对象正在初始化,所以不能执行运动控制命令。当此任务执行时,除了SystemInterruptTask外,其他的程序都不执行。
此任务结束,并且CPU达到RUN模式后,启动下面的任务:
1)SynchronousTask;
2)TimerInterruptTask;
3)MotionTask;
4)BackgroundTask。
(2)同步任务SynchronousTask
SynchronousTask的执行与所设置的系统时钟同步。SIMOTION中包括下列同步任务:
1)ServoSynchronousTask:与伺服时钟周期同步,在此任务中可以运行对时间有严格要求的任务。例如对I/O的快速响应程序,PROFIBUS DP通信数据的同步处理,伺服设备的设定值的修改。
2)IPOSynchronousTask/IPOSynchronousTask_2:与IPO/IPO_2周期同步在IPOSynchro-nousTask中,可以实现对时间有严格要求的任务,用户程序在插补之前运行,在此任务中可以执行一些对工艺对象的操作。
(3)时间驱动任务TimerInterruptTask
用于执行有固定循环周期的任务,在程序执行结束后自动重新执行。SIMOTION包含有5个TimerInterruptTask,TimerInterruptTask_1~TimerInterruptTask_5,用于周期性程序的执行。TimerInterruptTask在固定的周期内被循环触发,这个周期要设为插补周期的倍数。在此任务中可以实现闭环控制或者监控功能程序。
(4)事件驱动任务
事件驱动任务为SystemInterruptTask和UserInterruptTask,当一个事件发生时,启动此类任务,执行一次后停止。当一个系统事件发生时,SystemInterruptTask被调用。
SIMOTION包含有下面的SystemInterruptTask:
1)TimeFaultTask:当TimerInterruptTask运行超时时执行;(www.xing528.com)
2)TimeFaultBackgroundTask:当BackgroundTask运行超时时执行;
3)TechnologicalFaultTask:TO发生故障时执行;
4)PeripheralFaultTask:发生I/O错误时执行;
5)ExecutionFaultTask:执行程序错误时执行。
下列错误将启动ExecutionFaultTask中的程序,并且发生错误的任务将会被停止执行:
2)除以0的操作;
3)数组超限;
4)访问系统变量错误。
如果SystemInterruptTask被触发,并且它没有被分配程序,那么CPU会停机。对于下面的任务,如果发生了错误,可以在ExecutionFaultTask中用命令重新启动该任务:
1)StartupTask;
2)ShutdownTask;
3)MotionTask。
如果下面的任务发生了错误,在ExecutionFaultTask结束后CPU会停机,并启动Shut-downTask:
1)BackgroundTask
2)TimerInterruptTask
3)SynchronousTask
4)ExecutionFaultTask和ShutdownTask中的编程错误会导致系统立即停机。
当一个用户自定义的事件发生时,UserInterruptTask将被调用。SIMOTION共包含有两个用户中断任务:UserInterruptTask_1和UserInterruptTask_2。必须指定UserInterruptTask的条件,当条件满足时,执行UserInterruptTask中的程序。如果同时触发两个中断任务,UserIn-terruptTask_1将在UserInterruptTask_2之前被执行。如果使用UserInterruptTask,那么也必须使用IPOsynchronousTask,因为UserInterruptTask的条件需在IPO周期中检查。UserInterrupt-Task在StartupTask和ShutDownTask执行期间不会被执行。
(5)自由运行任务
自由运行任务在自由执行等级中执行,包括MotionTask和BackgroundTask。MotionTask用于运行顺序执行的命令,例如运动控制的命令等,共有32个(MotionTask_1~Motion-Task_32)。MotionTask通常通过用户程序的任务控制命令(例如_startTaskID,_stopTaskID)来启动或停止任务,也可以通过设置为CPU在达到RUN模式时自动启动。可以通过_get-StateOfTaskID命令查询任务运行的状态。MotionTask只执行一次,没有时间监控,也就是说MotionTask中的程序可以无限期的执行。MotionTask在执行完或者是系统达到STOP或STOPU模式时停止。如果有等待命令(Wait for condition),任务将被挂起,在IPO周期内检查设置的条件,当条件满足时任务将继续执行。
BackgroundTask用于非固定周期循环程序的执行。在StartupTask结束后开始执行,在程序结束时自动重新执行,适合于执行后台程序或逻辑处理程序等。BackgroundTask的循环时间会被监控,一旦超时,会触发TimeFaultBackgroundTask,如果此任务中没有分配程序则会造成CPU进入停机模式。
(6)ShutdownTask
ShutdownTask在CPU从RUN模式到STOP或STOPU模式时执行一次。可以执行例如设置输出点的状态或轴的停止命令等,此任务不会在系统失电时执行。另外,还需要设置ShutdownTask的监控时间,过了设置的时间后CPU会自动切换到STOP模式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。