指定されたトリガー条件が満たされるまで、次のモーション指令の実行を遅らせる機能になります。具体的には、移動中の軸が指定の状態になった時に、別の軸を動かすことができます。 生産タクトを短縮する時などに力を発揮します。
トリガーモーションに指定するパラメータ
トリガータイプ
トリガーモーションが開始する条件のタイプを指定します。6種類あります。
- [Remaining Time]監視されるモーションの残り時間が指定値以下になったときに
- [Remaining Distance]監視されるモーションの残り距離が指定値以下になったときに
- [Completed Time]監視される軸が実行しているモーションの実行時間が、指定以上経過したとき
- [Completed Distance]監視される軸の距離が指定値以上進んだときに
- [Same Time Completion]監視されるモーションの完了タイミング一致するように、モーションを開始を遅延(移動時間を自動計算しています)
- [Staggered Time Completion]監視される軸の移動が完了してから、一定時間後に次モーションが完了するように調整
トリガー軸
条件を満たす必要がある軸を定義します。 0から始まる軸を指定してください。
トリガー値
トリガータイプによっては追加のパラメータ(距離や時間など)を指定します。
ある軸の残り距離が500になった時に、別の軸を動作させるモーション
この動作を実現するためのトリガータイプは[TriggerType.DistanceToTarget]を使用します。まず軸0を移動させます。移動中の残り距離が500になった時に、軸1のモーション動作を開始させています。
C#コード
※WMX3.6で検証したコード
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;
}
}
コメント