融合運動

執行機械手臂移動、工件切割等需要連續性運動的任務時,需要融合各動作指令,才能使工具持續以穩定速度沿平滑路徑移動,本節將介紹如何使用融合與轉換模式來融合速度和路徑。

融合模式

融合模式是一用來融合速度的方式。其中有四種融合速度的運動模式: BlendingLow, BlendingHigh, BlendingPrevious, BlendingNext

名稱 意義
mcBlendingLow 速度以兩個函式或功能塊 (Function Block) 中較低的速度進行融合。
mcBlendingHigh 速度以兩個函式或功能塊中較高的速度進行融合。
mcBlendingPrevious 速度以第一個函式或功能塊的速度進行融合。
mcBlendingNext 速度以第二個函式或功能塊的速度進行融合。

以上可在 McBufferMode類型找到。在運動指令中,這些值用作 BufferMode 的參數。

上圖展示在同樣的指令組合下,不同的 BufferMode 參數所產生的速度-時間圖。選擇 Buffered 時,定位運動指令結束於其目標位置且結束速度為零。當運動指令融合後,可使用融合模式指定其結束速度,並以該速度通過前後指令的連接位置(即為前一個指令的目標位置)。若選擇 BlendingHigh,則以前後指令速度較高者作為連接速度;若選擇 BlendingLow,則以前後指令速度較低者作為連接速度。而 BlendingPreviousBlendNext 原理相同,唯改以選擇前方指令速度或是後方指令速度作為連接速度。

 

在一系列的運動指令中,在第一個指令中設定的融合模式不會產生任何影響,因為融合主要作用為融合當前的動作與前一個動作;而既然第一次以前不會有任何指令,那麼任何融合模式的設定將不影響。例如:MoveAxisAbsolute 為第一個運動指令,將 BufferMode 參數設置為 mcBlendingHighmcBlendingNextmcAborting 或任何其他值皆不影響 MoveAxisAbsolute,然而第一個指令將受融合模式設定的第二個指令所影響。若 MoveAxisRelative 為第二個指令,其融合模式為 mcBlendingNext,則融合速度將會是 MoveAxisRelative 的速度。

融合時,以下幾點須注意:

  1. 第一個指令所設定的融合模式不會產生任何影響。
  2. 次一個指令的融合模式將會影響前一個指令。

預看

KINGSTAR 使用"預看"的概念連接速度和路徑,表示在執行運動指令時,會同時考慮所有運動指令的速度和路徑(路徑適用於多個軸),以實現連續與穩定的動作。例如:若有五個運動指令,當第一個指令正在運行時,這五個運動指令的參數均會被評估,以生成在指令間具有速度和路徑平滑轉換的運動輪廓。

KINGSTAR 最多支援預看 511 個指令(功能塊)。

轉換模式

使用轉換模式時,轉換的曲線融合了兩個運動的路徑。

轉換模式 意義
mcNone 無轉換。
mcCornerDistance 以給定的轉角距離轉換。

以上類型可在 McTransitionMode 找到。在運動指令中,這些值用作 TransitionMode 的參數,而不同的轉換模式使用不同的轉換參數。

目前 KINGSTAR 僅支援 CornerDistance。

CornerDistance

CornerDistance 使用 n 度曲線來連結路徑及兩個運動。下圖展示從 E1 開始至 S2 結束之融合路徑。在未融合的狀況下,E1 與 S2 位置相同,為使兩路徑連接,實際轉換位置與原始位置之間需保留些許距離使軸從路徑一轉至路徑二,此距離為 d,d 的長度將受使用的硬體、軸的運動曲線、切割材料的精密度、障礙物的位置、所開發的應用程式及許多其他因素所影響。所有因素皆須被納入考量以得出適當的 d 值。使用 d 時,軸在行進一定距離後開始沿插入的曲線移動。例如:若軸移動的整個距離(一條路徑)為 1000,而 d 為 50,則軸將在移動 950 個單位後開始在轉換路徑上移動。其中 d 值不可小於零或大於軸行徑的整個距離。因此上述例子的 d 值不可大於 1000。

S1:起始點 1

S2:起始點 2

E1:終點 1

E2:終點 2

d:融合路徑的距離

1:路徑一

2:路徑二

單軸

在單軸的情況下,前後運動間速度需相連,若未有融合發生,可使用 MoveAxisContinuousAbsoluteMoveAxisContinuousRelative 加上另一個運動指令來連續移動軸,如:MoveAxisContinuousAbsolute + MoveAxisRelative,如此一來,融合速度將永遠為 "BlendingNext",因速度的融合方式是無法自定的,若想要有彈性的融合速度,融合模式將是必要的。

支援速度融合的函式

下表列出 RT 與 Win32 支援融合速度的函式。在其他介面的函式亦為相同的運作方式。

名稱 意義
MoveAxisAbsolute 下達一個目標為特定絕對位置之運動指令。
MoveAxisAdditive 下達一個目標為特定相對位置之運動指令。呼叫此命令時,給定之相對距離將添加於離散運動中最後一個指令位置。指令位置之定義請參考 McSource
MoveAxisRelative 下達一個目標為特定相對位置之運動指令。呼叫此命令時,給定之相對距離將添加於當前設置位置。
MoveAxisVelocity 下達一個永遠照特定速度移動之運動指令。

使用融合模式

欲使用融合模式,請使用融合模式其中之一值填寫 BufferMode。例如:

MoveAxisAbsolute(0, 360, 360, 360 * 10, 360 * 10, 360 * 1000, mcPositiveDirection, mcAborting);
MoveAxisAbsolute(0, 360 * 2, 360 * 2, 360 * 10, 360 * 10, 360 * 1000, mcPositiveDirection, mcBlendingLow);

第一個 MoveAxisAbsolute:請注意 BufferMode mcAborting。因其為第一個指令,所設定的 BufferMode 值不會影響指令本身或其他。可將此值設定為 mcAborting, mcBuffered, mcCancel, mcBlendingNext 或其他在 McBufferMode 的值。

第二個 MoveAxisAbsolute當第一個 MoveAxisAbsolute 轉換到第二個 MoveAxisAbsolute 時,融合速度為 720。

欲了解其他融合模式的詳細資訊,請看 MoveAxisAbsolute 中的範例。

多軸

在多軸的情況下,前後運動間的速度以及路徑必需相連。其速度連接方式與單軸相同,而路徑連接方法為路徑融合,此法需使用轉換模式與轉換參數。

支援速度與路徑融合的函式

下表列舉支援速度與路徑融合的 RT 及 Win32 函式。其他介面的函式運作方式相同。

請注意 KINGSTAR 4.5MoveCircular 函式僅支援速度融合。

名稱 意義
MoveLinearAbsolute 命令軸組之工具中心點自當前位置進行直線插補運動至指定坐標系之絕對位置。
MoveLinearAdditive 命令軸組之工具中心點自最後一個指令位置進行直線插補運動至指定坐標系之添加位置。給定之距離會被添加到最後一個指令位置。
MoveLinearRelative 命令軸組之工具中心點自當前位置進行直線插補運動至指定坐標系之相對位置。給定之相對距離會被添加到當前設置位置。
MoveCircularAbsolute

命令軸組之工具中心點自當前位置進行圓軸插補運動。終點及輔助點為指定座標系中之絕對位置(此兩點意義取決於所選擇之 CircMode 模式)。

注意:KINGSTAR 4.5 中僅支援速度融合。

MoveCircularAdditive

命令軸組之工具中心點自當前位置進行圓軸插補運動。終點及輔助點為指定座標系中之相對位置(此兩點意義取決於所選擇之 CircMode 模式)。給定之相對距離會被添加到執行時之設置位置。指定的相對距離在執行時將被添加到所設定的位置。

注意:KINGSTAR 4.5 中僅支援速度融合。

MoveCircularRelative

命令軸組之工具中心點自當前位置進行圓軸插補運動。終點及輔助點為指定座標系中之相對位置(此兩點意義取決於所選擇之 CircMode 模式)。給定之相對距離為相對於起始點之距離。

注意:KINGSTAR 4.5 中僅支援速度融合。

MoveCircular 使用案例

由於 MoveCircular 函式僅支援速度融合,建議僅在圓形路徑與另一條路徑相切時才使用融合模式。以下表格說明循環路徑的兩種使用案例:

使用案例一 使用案例二

路徑一:MoveLinearAbsolute

路徑二:MoveCircularAbsolute

S1:起始點 1

S2:起始點 2

E1:終點 1

E2:終點 2

路徑一:MoveCircularAbsolute

路徑二:MoveLinearAbsolute

S1:起始點 1

S2:起始點 2

E1:終點 1

E2:終點 2

使用融合與轉換模式

欲使用融合與轉換模式,請使用融合模式其中之一值填寫 BufferMode ;使用 mcCornerDistance 填寫 TransitionMode。例如:

PositionArray[0] = 1000;
PositionArray[1] = 0;
PositionArray[2] = 0;
MoveLinearAbsolute(1, 3, PositionArray, 5000, 5000 * 10, 5000 * 10, 5000 * 1000,
   mcAxisCoordSystem, mcAborting, mcNone, NULL);

PositionArray[0] = 1000;
PositionArray[1] = 1000;
PositionArray[2] = 0;
TransitionParam = 200;
MoveLinearAbsolute(1, 3, PositionArray, 3000, 5000 * 10, 5000 * 10, 5000 * 1000,
   mcAxisCoordSystem, mcBlendingLow, mcCornerDistance, &TransitionParam);

第一個 MoveLinearAbsolute:請注意 BufferMode mcAborting。因其為第一個指令,所設定的 BufferMode 值不會影響指令本身。可將此值設定為 mcAborting, mcBuffered, mcCancel, mcBlendingNext 或其他在 McBufferMode 類型的值。TransitionMode 運作方式相同。TransitionParameter 可以是任何值。

第二個 MoveLinearAbsoluteBufferModemcBlendingLowTransitionModemcCornerDistance,其 TransitionParameter 為 200。當第一個 MoveLinearAbsolute 轉換到第二個 MoveLinearAbsolute 時,融合速度為 3000。轉換路徑的長度為 200。

欲了解如何使用融合與轉換模式的更多詳細資訊,請看 MoveLinearAbsolute 中的範例。

參見

RT 與 Win32-KINGSTAR 運動 - 軸 PTP 運動

MoveAxisAbsolute

MoveAxisAdditive

MoveAxisRelative

RT 與 Win32-KINGSTAR 運動 - 軸組運動

MoveLinearAbsolute

MoveLinearAdditive

MoveLinearRelative

MoveCircularAbsolute

MoveCircularAdditive

MoveCircularRelative

MoveHelicalAbsolute

MoveHelicalAdditive

MoveHelicalRelative

.NET API-運動類別 - 軸 PTP 運動

MoveAxisAbsolute

MoveAxisAdditive

MoveAxisRelative

.NET API-運動類別 - 軸組運動

MoveLinearAbsolute

MoveLinearAdditive

MoveLinearRelative

MoveCircularAbsolute

MoveCircularAdditive

MoveCircularRelative

MoveHelicalAbsolute

MoveHelicalAdditive

MoveHelicalRelative

.NET Class-IAxis 介面 - 方法

IAxis.MoveAbsolute

IAxis.MoveAdditive

IAxis.MoveRelative

.NET Class-IGroup 介面 - 方法

IGroup.MoveLinearAbsolute

IGroup.MoveLinearAdditive

IGroup.MoveLinearRelative

IGroup.MoveCircularAbsolute

IGroup.MoveCircularAdditive

IGroup.MoveCircularRelative

IGroup.MoveHelicalAbsolute

IGroup.MoveHelicalAdditive

IGroup.MoveHelicalRelative

PLC 功能塊 – 單軸 – 單軸運動

MC_MoveAbsolute

MC_MoveAdditive

MC_MoveRelative

PLC 功能塊 – 多軸 – 軸組運動

MC_MoveLinearAbsolute

MC_MoveLinearAdditive

MC_MoveLinearRelative

MC_MoveCircularAbsolute

MC_MoveCircularAdditive

MC_MoveCircularRelative