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