LJM函數
用於傳回對姿態旗標進行轉換的點資料,以確保最小的關節移動量(相對於指定點,從參照點來看的情況下)。
格式
LJM (點指定 [, 參照點指定 [, 選擇姿態旗標] ])
參數
- 點指定
- 指定作為對象的點數據。
- 參照點指定
- 指定作為基準的點數據。若省略參照點指定,則將目前位置(Here)作為參照點。
- 選擇姿態旗標
- 垂直六軸
-
- 1:以腕部姿態(Wrist旗標)、J4Flag、J6Flag以及J1Flag進行轉換,以便使J4軸形成最短移動量。是省略選擇姿態旗標時的預設值。
- 2:以J4Flag以及J6Flag進行轉換。
- 3:以腕部姿態(Wrist旗標)、J4Flag、J6Flag以及J1Flag進行轉換,以便使J5軸形成最短移動量。
- 4:以腕部姿態(Wrist旗標)、J4Flag、J6Flag以及J1Flag進行轉換,以便使J6軸形成最短移動量。
「選擇姿態旗標」 手腕姿態 臂肘姿態 腕部姿態 J1Flag J4Flag J6Flag 移動量最短的軸之優先順序 1 - - ○ ○ ○ ○ J4 2 - - - ○ ○ ○ - 3 - - ○ ○ ○ ○ J5 4 - - ○ ○ ○ ○ J6 - Note:「-」的姿態與以「參照點指定」指定的姿態相同。
- RS系列
1:以手腕姿態(Hand旗標)、J1Flag以及J2Flag進行轉換。是省略「選擇姿態旗標」時的預設值。
2:以手腕姿態(Hand旗標)、J1Flag以及J2Flag進行轉換。用於防止在轉換「選擇姿態旗標」時發生U軸不在動作範圍內的錯誤。
- N2系列
-
1:依照J1、J5軸的優先順序,轉換為減小關節移動量的姿態。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。臂肘姿態(Elbow旗標)務必為上肘姿態。是省略「選擇姿態旗標」時的預設值。
2:依照J1、J4軸的優先順序,轉換為減小關節移動量的姿態。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。臂肘姿態(Elbow旗標)務必為上肘姿態。
3:以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J4軸形成最短移動量。
4:以J4Flag以及J6Flag進行轉換。
5:變更為與以「參照點指定」指定之姿態不同的手腕姿態(Hand旗標),並以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J5軸形成最短移動量。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。此外,臂肘姿態(Elbow旗標)務必為上肘姿態。
6:變更為與以「參照點指定」指定之姿態不同的手腕姿態(Hand旗標),並以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J4軸形成最短移動量。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。此外,臂肘姿態(Elbow旗標)務必為上肘姿態。
7:將臂肘姿態(Elbow旗標)設為下肘姿態,並以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便依照J1、J5軸的優先順序形成最短移動量。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。
8:將臂肘姿態(Elbow旗標)設為下肘姿態,並以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便依照J1、J4軸的優先順序形成最短移動量。作為轉換對象的姿態為手腕姿態(Hand旗標)、臂肘姿態(Elbow旗標)、腕部姿態(Wrist旗標)、J4Flag以及J6Flag。
「選擇姿態旗標」 手腕姿態 臂肘姿態 腕部姿態 J4Flag J6Flag 移動量最短的軸之優先順序 1 〇 *1 〇 〇 〇 J1>J5 2 〇 *1 〇 〇 〇 J1>J4 3 - - ○ ○ ○ J4 4 - - - ○ ○ - 5 *2 *1 〇 〇 〇 J5 6 *2 *1 〇 〇 〇 J4 7 〇 *3 〇 〇 〇 J1>J5 8 〇 *3 〇 〇 〇 J1>J4 - Note:「-」的姿態與以「參照點指定」指定的姿態相同。
*1:上肘姿態
*2:以「參照點指定」指定的姿態和手腕姿態並不相同。
*3:下肘姿態
- N6系列
-
1:以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J4軸形成最短移動量。"是省略「選擇姿態旗標」時的預設值。
2:以J4Flag以及J6Flag進行轉換。
3:以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J5軸形成最短移動量。
4:以腕部姿態(Wrist旗標)、J4Flag以及J6Flag進行轉換,以便使J6軸形成最短移動量。
「選擇姿態旗標」 手腕姿態 臂肘姿態 腕部姿態 J1Flag J4Flag J6Flag 移動量最短的軸之優先順序 1 - - ○ ○ ○ ○ J4 2 - - - ○ ○ ○ - 3 - - ○ ○ ○ ○ J5 4 - - ○ ○ ○ ○ J6 - Note:「-」的姿態與以「點指定」指定的姿態相同。
說明
垂直6軸型機器人或N系列在向透過棧板或相對位移等點運算獲取的點進行動作時,腕部有可能朝非預期的方向轉動。其原因在於,上述點運算屬於不依賴於機器人機種的命令,因此在未進行所需姿態旗標的轉換之狀態下進行動作。
為了防止發生這種腕部的非預期轉動,LJM函數用於適當轉換點資料的姿態旗標。
此外,N系列還可透過變更手腕姿態旗標或臂肘姿態旗標,縮短經過時間或省去教導垂直六軸機器人所需的迴避點。
對於RS系列,在向透過棧板或相對位移等點運算獲取的點進行動作時,第1手臂有可能朝非預期的方向轉動。為了防止發生這種第1手臂的非預期轉動,LJM函數用於適當轉換點資料的姿態旗標。
此外,對於RS系列,若轉換姿態旗標,可能會發生U軸向動作範圍外進行動作的錯誤。為了防止發生這種U軸的動作範圍外錯誤,LJM函數用於將U軸的目標角度補償為動作範圍內的目標角度。將選擇姿態旗標設為2,則可使用此功能。
對於垂直6軸型、N系列、RS系列以外的機器人,直接傳回指定點。
注意
參照點的省略和平行處理
1個動作命令中不可同時存在參照點的省略和平行處理。
Go LJM(P10) ! D10; MemOn 1 !
不接受上述用法。
P999 = Here Go LJM(P10,P999) ! D10; MemOn 1 !
請變更為如上程式。
關於N2系列的選擇姿態旗標
選擇姿態旗標1、2:
欲縮短機器人的生產節拍時間時,請選擇姿態旗標1或2。
由於採取第1關節移動量最小的姿態,因此幾乎所有動作都可以說是生產節拍時間最短的動作。若要執行減小第5關節移動量的動作,請選擇姿態選擇旗標1;若要執行減小第4關節移動量的動作,請選擇姿態選擇旗標2。
選擇姿態旗標3、4:
若要和垂直6軸型一樣使用,請進行選擇。
姿態旗標3同於垂直6軸型的姿態旗標1。
姿態旗標4同於垂直6軸型的姿態旗標2。
選擇姿態旗標5、6:
在機器人動作時,若抓手會接觸機器人週邊的牆壁等,請選擇姿態旗標5或6。 抓手會通過機器人的原點附近,因此機器人可在不易接觸到周圍障礙物的狀態下進行動作。若要執行減小第5關節移動量的動作,請選擇姿態選擇旗標5;若要執行減小第4關節移動量的動作,請選擇姿態選擇旗標6。
選擇姿態旗標7、8:
若要採取下肘姿態,請選擇姿態旗標7或8。 有時機器人會進行通過原點附近的動作(如姿態選擇旗標5、6),因此當機器人周圍有障礙物時,可進行不易接觸到這些物品的動作。若要執行減小第5關節移動量的動作,請選擇姿態選擇旗標7;若要執行減小第4關節移動量的動作,請選擇姿態選擇旗標8。
本地編號
以LJM函數傳回的點的本地編號與「點指定」的本地編號相同。
參照
Pallet
LJM函數範例
Function main
Integer i, j
P0 = XY(300, 300, 300, 90, 0, 180)
P1 = XY(200, 280, 150, 90, 0, 180)
P2 = XY(200, 330, 150, 90, 0, 180)
P3 = XY(-200, 280, 150, 90, 0, 180)
Pallet 1, P1, P2, P3, 10, 10
Motor On
Power High
Speed 50; Accel 50, 50
SpeedS 1000; AccelS 5000
Go P0
P11 = P0 -TLZ(50)
For i = 1 To 10
For j = 1 To 10
'點指定
P10 = P11 '閃避點
P12 = Pallet(1, i, j) '目標點
P11 = P12 -TLZ(50) '接近起始點
'各點的LJM轉換
P10 = LJM(P10)
P11 = LJM(P11, P10)
P12 = LJM(P12, P11)
'執行動作
Jump3 P10, P11, P12 C0
Next
Next
Fend
Function main2
P0 = XY(300, 300, 300, 90, 0, 180)
P1 = XY(400, 0, 150, 90, 0, 180)
P2 = XY(400, 500, 150, 90, 0, 180)
P3 = XY(-400, 0, 150, 90, 0, 180)
Pallet 1, P1, P2, P3, 10, 10
Motor On
Power High
Speed 50; Accel 50, 50
SpeedS 1000; AccelS 5000
Go P0
Do
'點指定
P10 = Here -TLZ(50) '閃避點
P12 = Pallet(1, Int(Rnd(9)) + 1, Int(Rnd(9)) + 1) '目標點
P11 = P12 -TLZ(50) '接近起始點
If TargetOK(P11) And TargetOK(P12) Then '點的檢查
'各點的LJM轉換
P10 = LJM(P10)
P11 = LJM(P11, P10)
P12 = LJM(P12, P11)
'執行動作
Jump3 P10, P11, P12 C0
EndIf
Loop
Fend