モーションのブレンド 軸を止めない動作

コーディング

ある位置を経由するモーション動作を行う場合は、ブレンド補間機能を使用します。

 コーディングの注意点は、中継させる移動命令もStartLinearIntplPos関数で移動させる必要があります。 Motion.StartPos関数の移動中にブレンドすることはできません。

Blending補間によるオーバーライドの検証

経由位置に移動するかを確認するために、行って帰ってくるモーションで動作確認を行いました。

C#コード

TriggerValue = 50;にしているので、経由位置の手前50で引き換えす動作になります。

void MoveBlending補間オーバーライド()
{
    var CMotion = new CoreMotion(API);                      // おまじない

    // 最初の目的位置を減速せず経由し、次の位置へ移動する機能です
    const int AxisNo = 0;

    // 【最初の目的位置へ移動】
    var lic = new Motion.LinearIntplCommand();
    lic.AxisCount = 1;
    lic.Axis[0] = AxisNo;                                   // 対象軸
    lic.Target[0] = 2000;                                   // 目的座標
    lic.Profile.Velocity = 3600;
    lic.Profile.Acc = 3000;
    lic.Profile.Dec = 1000;
    var IsErr = CMotion.Motion.StartLinearIntplPos(lic);
    if (IsErr != ErrorCode.None)
    {
        Console.WriteLine("エラー" + IsErr);
    }
    // この時点で軸が移動しています


    // 【新しい目的座標の変更】
    lic.Target[0] = -1000;                                   // 目的座標
    lic.Profile.Velocity = 50000;
    lic.Profile.Acc = 2000;
    lic.Profile.Dec = 2000;

    // ブレンドタイミング
    var tri = new Trigger();
    tri.TriggerAxis = AxisNo;
    tri.TriggerType = TriggerType.RemainingDistance;        // 別のモーションの残り距離が特定の値に達すると
    tri.TriggerValue = 50;                                  // 目的位置までの距離

    // 現在の目的位置を経由とし、新しい目的位置を設定します
    IsErr = CMotion.Motion.StartLinearIntplPos(lic, tri);
    if (IsErr != ErrorCode.None)
    {
        Console.WriteLine("エラー" + IsErr);
    }

    CMotion.Motion.Wait(0);                                 // 軸の停止待ち
}

コメント

タイトルとURLをコピーしました