在運動控制系統中,多工(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控制,運動網路的同步 等等,以往這些功能只能由韌體處理!如今透過即時性與多工的設計,這些功能也可由使用者的程式來介入,使得系統的靈活度 產生了極大的提升!