多工的需求-(2)支援 文本式 語法

開發 運動控制 程式,常見的語法可分成兩類:

  1. 圖形式      :LD(階梯圖),FBD(功能塊圖)
  2. 文本式(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 順序控制的主體,後者則適合運動控制的流程撰寫!可互相搭配,以發揮各自的長處!


 

 

發表迴響