開發 運動控制 程式,常見的語法可分成兩類:
- 圖形式 :LD(階梯圖),FBD(功能塊圖)
- 文本式(TEXT): BASIC,C/C++,ST,IL(MSM)…
我們考慮一個運動控制常見的例子:X-Y 平台需走兩段直線路徑,第一段須走完才能走第二段,以閃避中間的障礙物.分別用二種語法撰寫並加以比較.
*首先以 階梯圖(圖形式)撰寫如下圖:
由於階梯圖是以掃描方式執行,為了達到 Line 1 執行完畢才執行 Line 2,必須串接一些條件接點,時序才會正確,這樣不但增加程式的複雜度也降低了可讀性![註 1]
*再以 C 語言(文本式)撰寫如下:
Line(x1,y1,z1); // 執行 Line 1
Wait_Motion_OK(); // 等待 Line 1 到達
Line(x2,y2,z2); // 執行 Line 2
// 執行後續工作 …
我們發現程式非常簡單易懂,由此可見,文本式語言較適合撰寫 運動控制的流程 [註 2],市面上許多運動控制器也提供這類的語法,例如:Trio(類似Basic),Galil(自定語法),ABB(類似Basic),IEC-61131-3 中的 ST/IL,台達 ASD-M-R (MSM) 等等!
運動控制器 必須支援 多工 的原因:
由於程式的流程 就是運動程序的流程,而運動路徑執行需要時間,一個路徑走個幾秒鐘很常見,所以程式的流程便會停頓,必須在 多工的環境下執行,才不會影響系統其他工作的正常執行!這也是 運動控制器 必須支援多工(Multi-Tasking)的一個極重要原因!
[註 1] 階梯圖是以掃描的方式執行,程式的流程是以 接點條件發生的先後順序來控制,而不是出現在程式裡的 先後順序決定!
[註 2] 目前許多運動控制器都會同時 支援 階梯圖 LD(含FBD) 與至少一種文本(Text)語言,前者適合作為 IO 順序控制的主體,後者則適合運動控制的流程撰寫!可互相搭配,以發揮各自的長處!