トルク制限機能

トルク制限機能は、衝突検出機能と同様に、衝突時のダメージを低減させることができます。

衝突検出機能 (ロボット動作の異常の検出機能)

プログラム動作で使用しているトルク上限値に対して、誤動作しないようマージンを加え、トルク制限機能値とします。トルク制限を行うことにより、押しつけ力を低減します。

例えば、トルクを30%に制限すると、押しつけ力も30%に低減します。さらに、トルクが上限値に達したときに、すぐにロボットを緊急停止します。ロボットを即停止することにより、さらに2~3割程度の低減効果が得られます。

トルク制限を30%とし、かつロボットを即停止した場合、計25%以下相当の低減効果が得られます。

スカラロボットでは、伸ばしたシャフトの先端を引っかけて、シャフトが曲がる場合があります。このようなシャフト曲げを低減したい場合は、本機能により、押しつけ力を最大限低減することを推奨します。

誤動作が発生する場合は、誤動作が発生した軸に対して、以下のいずれかの対策を取ります。

  • LimitTorqueStop、またはLimitTorqueStopLpをオフに設定する
  • LimitTorque、またはLimitTorqueLpの閾値を上げる

トルク制限機能をジョグ動作で使う場合は、以下の手順にしたがってください。

  1. コマンドウィンドウで、PTCLRを実行し、トルク測定を開始する
  2. ジョグ動作を実行する
  3. PTRQにより最大トルク値を測定し、マージンを加える
  4. 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