Skip to main content

動きの中断と継続

軸グループの移動中は、移動を停止できます。これは意図的な停止である可能性があります(MC_GroupHaltMC_GroupStop)、またはパスの一時停止(MC_GroupInterrupt)、またはエラーによる停止。すべての場合において、 CODESYS SoftMotion 軸グループを計画パスに戻し、それを続行するための機能ブロックを提供します。

一時停止して動作を停止する

あなたは使用することができます MC_GroupInterruptMC_GroupInterruptAt 命令された動きの実行を中断する機能ブロック。にとって MC_GroupInterrupt、即時停止が実行されます。にとって MC_GroupInterruptAt、特定の位置で停止します。その後、動きを後で続けることができます MC_GroupContinue

機能ブロック MC_GroupInterruptAt 入力を提供します SMC_GroupInterruptPositionMvtRel。これは、動きに対する割り込み位置を指定します。動きはそのによって参照されます SMC_Movement_Id。ムーブメント内の位置は、0から1までの値(実数)で定義されます。ここで、0はムーブメントの開始、1は終了です。ポイントBとポイントAの間の位置は、ブレンドがなかったかのように正確に解釈されます。 P間の位置始める およびBまたはAとPの間dest ブレンディングパスに投影されます。

_sm_img_movement_interrupt_position.png
. MC_GroupInterruptAtのエラー処理
  • 指定された移動IDが不明な場合、機能ブロックはエラーを返します。走行動作は中断されません。

  • 軸グループの現在の動的状態で、指定された割り込み位置の前に停止状態に達することができない場合は、 SMC_GroupInterruptAt まったく同じように動作します MC_GroupInterrupt:割り込みはすぐに実行され、軸グループはコマンドされた割り込み位置の後ろのどこかで停止します。

  • 他のすべてのエラーは、MC_GroupInterruptの場合とまったく同じように処理されます

. MC_GroupInterruptAtの制限
  • 特定の位置での割り込みは、割り込み位置で停止するプロセスがまだ開始されていない限り、別の動作で中止できます。

  • 特定の位置で同時に指令できる割り込みは1つだけです。割り込みが命令された場合、別の割り込みを受け入れることができるように、割り込みを完了するか中止する必要があります。

実行するとき MC_GroupInterrupt また MC_GroupInterruptAt、パス不変の停止が最初に実行されます。 MC_GroupHalt。次に、軸グループの状態(「データの継続」)が、ユーザーによって転送された変数(タイプ SMC_AXIS_GROUP_CONTINUE_DATA)。これで、軸グループは状態になります GroupStandby 正常に使用できます。典型的な例は、軸グループがジョグされていることです。

後で使用できます MC_GroupContinue 中断された実行を続行します。これを行うには、保存された「継続データ」を転送します。これがエラーなしで機能するためには、軸グループの位置が実行後の位置と一致している必要があります。 MC_GroupInterrupt。 (見る SMC_GroupGetContinuePosition。)

追跡動作が中断された場合(動的座標系に対して命令された動作を意味します)、 MC_GroupInterrupt 絶対に止まらない( MC_GroupHalt)、ただし動的座標系と比較して。たとえば、ワークピースが回転台で追跡されている場合、 MC_GroupInterrupt ワークに対して停止します。軸グループは引き続きワークピースを追跡します。継続データは次のように更新する必要があります SMC_GroupUpdateContinueData キネマティックに複数の周期を持つ回転軸がある場合。その後、動きを続けることができます MC_GroupContinue

重要

タイプの変数 SMC_AXIS_GROUP_CONTINUE_DATA 永続的に保存したり、オンライン変更中に変更したりしないでください。

ヒント

機能ブロックの使用 SMC_GroupWait、プログラム可能な時間、2つの動きの間のパスを待つことができます。

MC_GroupHaltまたはMC_GroupStopを介した移動停止

によって引き起こされた動きの停止後 MC_GroupHalt また MC_GroupStop、軸グループの移動は、情報を失うことなく次のように再開できます。機能ブロックを呼び出します。 SMC_GroupSaveContinueData 電話する前に MC_GroupHalt また MC_GroupStop。このPOUは、停止または停止コマンドが呼び出された時点での現在のステータス、現在の位置、およびすべてのコマンドされた動きを保存します。これにより、後で正確にこの位置から移動を続けることができます。注:これは、軸グループが停止位置に達した後に持っていた位置ではありません。

バージョン4.12.0.0より前の動作: SMC_GroupSaveContinueData 関数ブロックは、同じサイクルで呼び出す必要があります。 MC_GroupHalt また MC_GroupStop と呼ばれます。このとき、次のことを確認する必要があります SMC_GroupSaveContinueData 前に呼び出されます MC_GroupHalt また MC_GroupStop。それ以外の場合、中止された移動はキューから削除されます。

バージョン4.12.0.0以降の動作: SMC_GroupSaveContinueData 機能ブロックは、呼び出し後の最初の移動までいつでも呼び出すことができます MC_GroupHalt また MC_GroupStop。継続位置は、機能ブロックの最初の呼び出し時の現在の軸グループ位置です。保存されたパスは、停止/停止コマンドの前に受け入れられたすべての動きで構成されます。

軸グループが停止した位置でパスを継続できるようにする MC_GroupHalt また MC_GroupStopSMC_GroupSaveContinueData 次のサイクルで呼び出す必要があります MC_GroupHalt また MC_GroupStop を設定します Done 信号。

の1つのインスタンスのみ SMC_GroupSaveContinueData 軸グループごとに呼び出すことができます。

ヒント

停止/停止コマンドの前に現在のステータスを保存するには数サイクルかかる場合がありますが、最初のサイクルのステータス情報は、移動が中断される前に保存されることが保証されています。

ヒント

SMC_GroupSaveContinueData 呼び出しに関連するだけでなく、現在の状態を保存するためにいつでも呼び出すことができます MC_GroupHalt また MC_GroupStop

エラーによる動作停止

エラーにより動作が停止した場合、軸グループの個々の軸が個別に停止し、エラー状態に切り替わります。その過程で、TCPは計画されたパスを離れます。これで、エラーを確認し、軸グループをリセットして、エラーが検出された位置に移動できます。その後、以前に計画された移動を続行するように軸グループに指示できます。

あなたは SMC_GroupEnableResumeAfterError エラー後にプログラムされた動作を再開できるようにする機能ブロック。ファンクションブロックは、バスサイクルタスクで周期的に呼び出す必要があります。この機能ブロックのインスタンスは、軸グループごとに1つだけ呼び出すことができます。

軸グループがエラーを検出し、状態に切り替わった場合 Errorstop、次に、すでに受け入れられている動きと必要なステータス情報をタイプの変数に保存します SMC_AXIS_GROUP_CONTINUE_DATA。次に、この変数には「継続データ」が含まれ、の入力として渡されます。 SMC_GroupEnableResumeAfterError

これにより、後で使用して移動を再開できます。 MC_GroupContinue。エラーがコマンドされた移動(たとえば、ワークスペース違反または無効な円弧半径)によって引き起こされた場合、この方法でエラーを解決することはできません。これらのエラーは、移動が続行された後に再び発生します。このメカニズムは、単軸エラーや、軸グループを強制的にエラー停止させるその他の外部イベントを対象としています。

MC_GroupContinue 移動を継続するときは、軸グループが特定の位置にある必要があります。エラー後に再開する場合、この位置はエラーが検出されたときの現在の位置です。あなたは使用することができます SMC_GroupGetContinuePosition この位置を取得するための機能ブロック。

重要

  • 軸グループエラーが移動の継続を許可しない場合(継続データの書き込み時の内部エラーなど)、 MC_GroupContinueSMC_GroupGetContinuePosition 新しいエラーIDを返します SMC_AXIS_GROUP_CONTINUE_DATA_NOT_WRITTEN

  • もし MC_GroupStop エラーが発生するとアクティブになり、その後 MC_GroupStop 移動が続くと、も再アクティブ化されます。軸グループはすでに停止されており、 MC_GroupStop 移動が発生しないように、保留中のすべての移動を削除しました。

  • 軸グループエラーが発生すると、アクティブな移動の機能ブロックインスタンスがエラーを発行します(出力 ActiveBusy 切り替える FALSE、および出力 Error に切り替えます TRUE)。まだアクティブになっていない、バッファリングされたムーブメントまたはブレンドされたムーブメントのファンクションブロックインスタンスもエラーを発行します。再起動後、これらの機能ブロックインスタンスはすべて次のようにリセットされます。 Busy/Active そしてそれらの出力はにリセットされます Error/CommandAborted