在运动控制系统中,多工(Multi-Tasking)的开发环境有许多好处!其中一个优点就是能区分轻重缓急!
一个系统要执行的工作很多,而每件事的紧急程度并不一样.例如:
1. 紧急工作:执行 PID 控制程序,需 1 ms 执行一次计算,被延迟将造成系统失效! 2. 一般工作:控制汽缸或三色灯的闪烁,不需要很频繁的执行,属于非紧急性的工作!
在单工与多工环境中执行的效果分别如下:
1,单工系统:例如传统的 PLC 里,只提供一个 Ladder 程序供使用者撰写,所有工作都混杂在一起,一旦程序写太长,整体的扫描时间就变长,需要实时响应的程序就容易受到拖累!
单工系统的执行方式
(图一)单工系统的作法
如图一所示:假设 紧急工作A执行一次需要花 0.5 ms,一般性工作 X,Y 需要花 4.5 ms,整体扫描时间就是 5 ms!如果 工作 A 需要更快的执行周期(例如 1 ms)!就只能换更快的CPU了!
2,多工系统:同样的情况,可以将紧急工作A 放在优先权较高的高速 Task 中,以较快的周期执行(例如 1 ms);一般性的工作则放在背景 Task 来执行!如此,背景工作不论扫描时间有多长,都不会影响 紧急工作A的执行.就可以保障整个系统的实时性!
(图二)多工系统的作法
如图二所示:高速 Task 每 1 ms 执行一次紧急工作A,花了 0.5 ms,剩余的 0.5 ms 则用来执行 背景 Task,原本需要花 4.5 ms 执行的 一般性工作 X,Y,则需要 9 ms 扫描一次!因为这段时间内,紧急工作A已经执行了 9 次(花 4.5 ms,剩 4.5 ms)!若把 高速 Task 改成每 2 ms 执行一次,则 背景 Task 扫描一次约 6 ms,因为高速 Task 执行了 3 次(花 1.5 ms,剩 4.5 ms)!由此可知,多工提供了2大好处:
1, 保障紧急工作的实时性要求! 2, 提供使用者 分配系统效能 的自由!
这样的设计在运动控制器里屡见不鲜,例如 Siemens SIMOTION,OMRON NJ,安川 MP2XXX,施耐德 SoMachine,以及台达 ASD-M-R,因为 运动控制里有许多实时性的工作,象是:路经规划/插值,PID控制,运动网络的同步 等等,以往这些功能只能由韧体处理!如今透过实时性与多工的设计,这些功能也可由使用者的程序来介入,使得系统的灵活度 产生了极大的提升!

