トルク制限機能
トルク制限機能は、衝突検出機能と同様に、衝突時のダメージを低減させることができます。
プログラム動作で使用しているトルク上限値に対して、誤動作しないようマージンを加え、トルク制限機能値とします。トルク制限を行うことにより、押しつけ力を低減します。
例えば、トルクを30%に制限すると、押しつけ力も30%に低減します。さらに、トルクが上限値に達したときに、すぐにロボットを緊急停止します。ロボットを即停止することにより、さらに2~3割程度の低減効果が得られます。
トルク制限を30%とし、かつロボットを即停止した場合、計25%以下相当の低減効果が得られます。
スカラロボットでは、伸ばしたシャフトの先端を引っかけて、シャフトが曲がる場合があります。このようなシャフト曲げを低減したい場合は、本機能により、押しつけ力を最大限低減することを推奨します。
誤動作が発生する場合は、誤動作が発生した軸に対して、以下のいずれかの対策を取ります。
- LimitTorqueStop、またはLimitTorqueStopLpをオフに設定する
- LimitTorque、またはLimitTorqueLpの閾値を上げる
トルク制限機能をジョグ動作で使う場合は、以下の手順にしたがってください。
- コマンドウィンドウで、PTCLRを実行し、トルク測定を開始する
- ジョグ動作を実行する
- PTRQにより最大トルク値を測定し、マージンを加える
- LimitTorqeLPとLimitTorqeLPStopを設定する
ローパワー動作で一時停止を使うと、通常のプログラム動作やジョグ動作より大きい値が出る場合があります。PTRQ測定中に一時停止を実施し、測定に含めるようにしてください。
コマンドや関数の詳細は、次のマニュアルを参照してください。
"SPEL+ランゲージリファレンス"
- LimitTorque, LimitTorque関数
- LimitTorqueLP, LimitTorqueLP関数
- LimitTorqueStop, LimitTorqueStop関数
- LimitTorqueStopLP, LimitTorqueStopLP関数
以下は、衝突検出機能とトルク制限機能を自動設定するサンプルプログラムです。
このプログラムでは、"all_ax_move"という動作を繰り返します。
衝突検出機能を有効にし、最初の5回の動作で最大トルクを測定、計測した値にマージン (HighPowerで1.2倍、LowPowerで1.4倍) を加えてトルク上限値を設定し、トルク上限値で即停止する設定を行います。
6回目以降は、上記の設定で動作を継続するという自動設定の例です。
トルク上限値を変更すると、その値がその後のPTRQ測定での1.0になります。1.2倍のマージンで設定すると、PTRQは0.8強、1.4倍のマージンで設定すると、0.7弱となります。
設定例:
Function main
Integer icnt
Real rtrq(6)
Motor On
Power High
' Power Low
Weight 2
Speed 50
Accel 80, 80
icnt = 0
PTCLR
LimitTorque 100 'init HighPower limit torque
LimitTorqueLP 100 'init LowPower limit torque
CollisionDetect On
Do
Call all_ax_move
Print PTRQ(1), PTRQ(2), PTRQ(3), PTRQ(4), PTRQ(5), PTRQ(6)
icnt = icnt + 1
If icnt = 5 Then
If Power = 1 Then 'High power case
Print "LimitTorque set"
rtrq(1) = PTRQ(1) * 1.2 * LimitTorque(1) + 1.0
rtrq(2) = PTRQ(2) * 1.2 * LimitTorque(2) + 1.0
rtrq(3) = PTRQ(3) * 1.2 * LimitTorque(3) + 1.0
rtrq(4) = PTRQ(4) * 1.2 * LimitTorque(4) + 1.0
rtrq(5) = PTRQ(5) * 1.2 * LimitTorque(5) + 1.0
rtrq(6) = PTRQ(6) * 1.2 * LimitTorque(6) + 1.0
Print LimitTorque(1), LimitTorque(2), LimitTorque(3), LimitTorque(4), LimitTorque(5), LimitTorque(6)
LimitTorque rtrq(1), rtrq(2), rtrq(3), rtrq(4), rtrq(5), rtrq(6)
Print LimitTorque(1), LimitTorque(2), LimitTorque(3), LimitTorque(4), LimitTorque(5), LimitTorque(6)
LimitTorqueStop On
Else 'Low poser case
Print "LimitTorqueLP set"
rtrq(1) = PTRQ(1) * 1.4 * LimitTorqueLP(1) + 1.0
rtrq(2) = PTRQ(2) * 1.4 * LimitTorqueLP(2) + 1.0
rtrq(3) = PTRQ(3) * 1.4 * LimitTorqueLP(3) + 1.0
rtrq(4) = PTRQ(4) * 1.4 * LimitTorqueLP(4) + 1.0
rtrq(5) = PTRQ(5) * 1.4 * LimitTorqueLP(5) + 1.0
rtrq(6) = PTRQ(6) * 1.4 * LimitTorqueLP(6) + 1.0
Print LimitTorqueLP(1), LimitTorqueLP(2), LimitTorqueLP(3), LimitTorqueLP(4), LimitTorqueLP(5), LimitTorqueLP(6)
LimitTorqueLP rtrq(1), rtrq(2), rtrq(3), rtrq(4), rtrq(5), rtrq(6)
Print LimitTorqueLP(1), LimitTorqueLP(2), LimitTorqueLP(3), LimitTorqueLP(4), LimitTorqueLP(5), LimitTorqueLP(6)
LimitTorqueStopLP On
EndIf
EndIf
If icnt > 5 Then
icnt = 6
Endif
Loop While icnt > 0
Fend
Function all_ax_move
Go JA(10, 10, 10, 10, 10, 10)
Go JA(-10, -10, -10, -10, -10, -10)
Fend