Skip to main content

カムの切り替え

基本的に、いつでも異なるカムを切り替えることができます。ただし、いくつかの点を考慮する必要があります。

  • カムエディタでは、スレーブの位置はカム関数の関数値として一意に定義されます。この関数はマスター値の範囲で定義され、次のように表すことができます。

    SlavePosition = CAM( MasterPosition )

  • マスタードライブの現在の位置は通常、マスター値の範囲から外れているため、有効な引数を表すには、カム関数の定義範囲でマスター位置をスケーリングする必要があります。

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • 同様に、モードでカムが開始した場合は、機能値(スレーブ位置)をスケーリングする必要があります Absolute ジャンプにつながるでしょう:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • 両方のスケーリング値を適用する必要がある場合があります。その結果、次のようになります。

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • スケーリングおよびオフセットパラメータの適切な値は、期間ごとに異なります。

  • カムの切り替えは、次の 3 つの方法で行うことができます。

    1. 2番目のインスタンスを介して2番目のカメラを起動します MC_CamInBufferMode = MC_BUFFER_MODE.BufferedStartMode = relativeMasterAbsolute = FALSE、 そして SlaveAbsolute = FALSE

      重要

      現在 CODESYS SoftMotion バージョン 4.17.0.0

    2. 割り当てて新しいカムを開始します MC_CamIn.CamTableID 新しいカムに(再起動なし MC_CamIn 機能ブロックが必要です)。

      次の点がユースケースに当てはまる場合は、このバリアントをお勧めします。

      • 以下のすべてのカムは、 MasterAbsolute = FALSE また SlaveAbsolute = FALSE

      • 新しいカムは、前のカムの最後から正確に開始する必要があります。

      • 他のパラメーターは変更されません(例: SlaveOffset)。

        重要

        • 定期的なカムと次の例で説明されているジャンプ SlaveAbsolute = FALSE、します いいえ 次のカムは前のカムの終了位置に正確に配置されるため、このバリアントに適用されます。

        • 新しいカムは、前のカムが報告したときと同じサイクルで新しいカムへの切り替えが行われた場合にのみ、前のカムの最後に正確に配置されます EndOfProfile = TRUE

    3. 再起動して新しいカムを開始します MC_CamIn ファンクションブロック。

      新しいカムの正しい機能のためにパラメータを変更する必要がある場合は、このバリアントをお勧めします(たとえば、 SlaveOffset 次の例から)。次の例の制限が適用されます。

9.

次の例では、 CAM1CAM2

CAM1 5次多項式とそれに続く2つの線分で構成されます。

_sm_img_cam_switching_1.png

CAM2 2つの線分とそれに続く1つの5次多項式で構成されます。

_sm_img_cam_switching_2.png

両方のカムを切り替えるときは、次のことを考慮する必要があります。

  • ジャンプを防ぐために、最初のカムの終点での速度と加速度の値は、2番目のカムの始点での値と一致する必要があります。この例では、同じ速度(= 1)と加速度(= 0)がの終点に割り当てられているため、この条件が満たされます。 CAM1 との出発点 CAM2

  • 2番目のカムを開始できます Relative スレーブの開始位置を0として定義した場合は、モードになります。ただし、最初のカムはで実行されている必要があります。 non-periodic モード。それ以外の場合、 CAM1 定期的だった、そして Relative 設定するとジャンプします。

_sm_img_cam_switching_3.png

倍率はからの移行を示しています CAM1CAM2。青い線は、マスター位置でのカム機能の評価を示しています x1x2

今、私たちはの不利なケースを見ていきます periodic

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

呼び出しは、マスター位置でカムの評価を開始します x1、のマスターの終了位置よりも小さい CAM1。それで CAM1 デフォルトで評価され、ポイントを生成します 1 奴隷の位置として。

CAM(x2, CAM1, PERIODIC:=TRUE);

モジュールの次の呼び出しでは、マスターの位置 x2 マスター値の範囲外です CAM1、その限界は緑の破線で示され、点の水平軸と一致している。 3pしたがって、 EndOfProfile 設定されています。 CAM1 で始まった periodic モードでは、値の範囲の終わりで再開され、最終的にポイントが生成されます。 2p モジュール呼び出しの結果として。

CAM(EXECUTE:=FALSE);

新しいカムに切り替えます

CAM(x2, CAM2, PERIODIC:=TRUE);

修士課程での2回目の評価 x2。今回は、新しい CAM2 評価されます。後 CAM2 で開始されます Relative モード、現在のスレーブ位置(2p)のカム機能の画像にオフセットとして追加されます CAM2。これにより、グラフの開始点がその点に移動します 3p マスターポジションでの評価 x2 ポイントを生成します 4p、したがって、好ましくないジャンプ。

を選択 non-periodic ジャンプを防ぐためのモード:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

呼び出しは、マスター位置でカムの評価を開始します x1、のマスターの終了位置よりも小さい CAM1。それで CAM1 デフォルトで評価され、スレーブの位置としてポイント1が生成されます。

CAM(x2, CAM1, PERIODIC:=FALSE);

モジュールの次の呼び出しでは、マスターの位置 x2 マスター値の範囲外です CAM1、その限界は緑の破線で示され、点の水平軸と一致している。 3nしたがって、 EndOfProfile 設定されています。 CAM1 で始まった non-periodic モード、スレーブ位置(2n)マスターポジションに任命 x2 スレーブが値の範囲の終わりに到達したときの位置と同一である。 CAM13n)。

CAM(EXECUTE:=FALSE);

新しいカムに切り替えます。

CAM(x2, CAM2, PERIODIC:=FALSE);

修士課程での2回目の評価 x2。今回は、新しい CAM2 評価されます。後 CAM2 で開始されます Relative モード、現在のスレーブ位置(2n)のカム機能の画像にオフセットとして追加されます CAM2。これにより、グラフの開始点がその点に移動します 3n マスターポジションでの評価 x2 ポイントを生成します 4n、ポイントを通る特定の線上にあります 13n

カムを開始するには Absolute モードでは、スレーブが適切な開始位置にあることを確認する必要があります。マスターの値の範囲がスレーブの周期と一致する場合、カムが周期的であるかどうかに関係なく、カム間の切り替えに問題はありません。

上記の例では、開始できます CAM2Absolute マスターとスレーブの周期がマスター値の範囲と一致する場合のモード CAM2 (それぞれ360°です)。

そうでない場合、たとえば、スレーブの期間が 270° (水色の線で示されています)、次に Absolute オプションは、追加のアクションを実行せずに許可されていません。

_sm_img_cam_switching_4.png

この場合、から切り替えるときにスレーブは90°になります CAM1CAM2。起動 CAM2Absolute モードでは、0°にジャンプします(灰色の線で示されます)。

ただし、スレーブオフセットを適切な値の90°に設定することにより、ジャンプを防ぐことができます。