LJM関数
指定ポイントに対して参照ポイントから見て最も関節移動量が少なくなるように姿勢フラグを変換したポイントデータを返します。
書式
LJM (ポイント指定 [, 参照ポイント指定 [, 姿勢フラグ選択] ])
パラメーター
- ポイント指定
- 対象とするポイントデータを指定します。
- 参照ポイント指定
- 基準にするポイントデータを指定します。参照ポイント指定を省略した場合は現在位置 (Here)を参照ポイントとします。
- 姿勢フラグ選択
- 垂直6軸型
-
- 1: J4軸が最短移動量となるように、手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flag、J1Flagによって変換します。姿勢フラグ選択を省略したときのデフォルトです。
- 2: J4FlagおよびJ6Flagによって変換します。
- 3: J5軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flag、J1Flagによって変換します。
- 4: J6軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flag、J1Flagによって変換します。
"姿勢フラグ選択" 腕姿勢 肘姿勢 手首姿勢 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: J4軸が最短移動量となるように、手首姿勢 (Wristフラグ), J4FlagおよびJ6Flagによって変換します。
4: J4FlagおよびJ6Flagによって変換します。
5: "参照ポイント指定"で指定した姿勢と異なる腕姿勢 (Handフラグ)に変更し、J5軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。変換対象となる姿勢は、腕姿勢 (Handフラグ), 肘姿勢 (Elbowフラグ), 手首姿勢 (Wristフラグ), J4FlagおよびJ6Flagです。また、肘姿勢 (Elbowフラグ)は、必ず上肘姿勢になります。
6: "参照ポイント指定"で指定した姿勢と異なる腕姿勢 (Handフラグ)に変更し、J4軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。変換対象となる姿勢は、腕姿勢 (Handフラグ), 肘姿勢 (Elbowフラグ), 手首姿勢 (Wristフラグ), J4FlagおよびJ6Flagです。また、肘姿勢 (Elbowフラグ)は、必ず上肘姿勢になります。
7: 肘姿勢 (Elbowフラグ)を下肘姿勢にし、J1, J5軸の優先順で最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。変換対象となる姿勢は、腕姿勢 (Handフラグ), 肘姿勢 (Elbowフラグ), 手首姿勢 (Wristフラグ), J4FlagおよびJ6Flagです。
8: 肘姿勢 (Elbowフラグ)を下肘姿勢にし、J1, J4軸の優先順で最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。変換対象となる姿勢は、腕姿勢 (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: J4軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。"姿勢フラグ選択"を省略したときのデフォルトです。
2: J4FlagおよびJ6Flagによって変換します。
3: J5軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。
4: J6軸が最短移動量となるように手首姿勢 (Wristフラグ)、J4FlagおよびJ6Flagによって変換します。
"姿勢フラグ選択" 腕姿勢 肘姿勢 手首姿勢 J1Flag J4Flag J6Flag 移動量が最短となる軸の優先順 1 - - 〇 〇 〇 〇 J4 2 - - - 〇 〇 〇 - 3 - - 〇 〇 〇 〇 J5 4 - - 〇 〇 〇 〇 J6 - Note: "-" は、"ポイント指定"で指定した姿勢と同じ姿勢です。
解説
垂直6軸型ロボットやNシリーズでは、パレットや相対オフセットなどのポイント演算で得られたポイントに動作するとき、手首部が意図しない方向へ回転することがあります。これは上記ポイント演算がロボットの機種に依存しない命令であるため、必要な姿勢フラグの変換を行わずに動作してしまうことが原因です。
LJM関数はこのような手首部の意図しない回転を防止するためにポイントデータの姿勢フラグを適切に変換します。
また、Nシリーズでは、腕姿勢フラグや肘姿勢フラグを変更することで、タクトタイムの短縮や垂直6軸型ロボットで必要な回避ポイントのティーチングを省くことも可能です。
RSシリーズでは、パレットや相対オフセットなどのポイント演算で得られたポイントに動作するとき、第1アームが意図しない方向へ回転することがあります。LJM関数はこのような第1アームの意図しない回転を防止するために、ポイントデータの姿勢フラグを適切に変換します。
また、RSシリーズでは、姿勢フラグが変換されたときにU軸が動作範囲外に動作しようとしてエラーが発生することがあります。LJM関数はこのようなU軸の動作範囲外エラーを防止するために、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