WMX トリガーモーションによる軸制御

コーディング

 指定されたトリガー条件が満たされるまで、次のモーション指令の実行を遅らせる機能になります。具体的には、移動中の軸が指定の状態になった時に、別の軸を動かすことができます。 生産タクトを短縮する時などに力を発揮します。

トリガーモーションに指定するパラメータ

トリガータイプ

トリガーモーションが開始する条件のタイプを指定します。6種類あります。

  1. [Remaining Time]監視されるモーションの残り時間が指定値以下になったときに
  2. [Remaining Distance]監視されるモーションの残り距離が指定値以下になったときに
  3. [Completed Time]監視される軸が実行しているモーションの実行時間が、指定以上経過したとき
  4. [Completed Distance]監視される軸の距離が指定値以上進んだときに
  5. [Same Time Completion]監視されるモーションの完了タイミング一致するように、モーションを開始を遅延(移動時間を自動計算しています)
  6. [Staggered Time Completion]監視される軸の移動が完了してから、一定時間後に次モーションが完了するように調整

トリガー軸

条件を満たす必要がある軸を定義します。 0から始まる軸を指定してください。

トリガー値

トリガータイプによっては追加のパラメータ(距離や時間など)を指定します。

ある軸の残り距離が500になった時に、別の軸を動作させるモーション

この動作を実現するためのトリガータイプは[TriggerType.DistanceToTarget]を使用します。まず軸0を移動させます。移動中の残り距離が500になった時に、軸1のモーション動作を開始させています。

C#コード

private void Moveトリガーモーション目標までの距離()
{
    // 軸移動の目標までの距離が500になった時に別の軸をスタートさせる
    var CMotion = new CoreMotion(API);


    //軸0に対して通常のモーション指令を実行する
    var pos = new Motion.PosCommand();
    pos.Axis = 0;                                           // 制御軸
    pos.Profile.Type = ProfileType.Trapezoidal;
    pos.Profile.Velocity = 7000;
    pos.Profile.Acc = 3000;
    pos.Profile.Dec = 3000;
    pos.Target = 2000;                                      // 目的座標
    var IsErr = CMotion.Motion.StartMov(pos);               // 移動開始


    //軸1のトリガーモーション指令を実行する
    var trigPos = new Motion.TriggerPosCommand();
    trigPos.Axis = 1;                                       // 制御軸
    trigPos.Profile.Type = ProfileType.Trapezoidal;
    trigPos.Profile.Velocity = 5000;
    trigPos.Profile.Acc = 9000;
    trigPos.Profile.Dec = 9000;
    trigPos.Target = 500;                                   // 目的座標
    trigPos.Trigger.TriggerType = TriggerType.DistanceToTarget;     // 目標までの距離
    trigPos.Trigger.TriggerAxis = 0;                        // トリガー監視軸番号
    trigPos.Trigger.TriggerValue = 500;                     // トリガー監視の座標

    IsErr = CMotion.Motion.StartMov(trigPos);               // 移動開始
    switch (IsErr)
    {
        case CoreMotionErrorCode.NotServoOn:
            Console.WriteLine("1つ以上の軸がサーボオン状態ではありません");
            return;
    }
}

コメント

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