動きの中断と継続
軸グループの移動中は、移動を停止できます。これは意図的な停止である可能性があります(MC_GroupHalt
、 MC_GroupStop
)、またはパスの一時停止(MC_GroupInterrupt
)、またはエラーによる停止。すべての場合において、 CODESYS SoftMotion 軸グループを計画パスに戻し、それを続行するための機能ブロックを提供します。
一時停止して動作を停止する
あなたは使用することができます MC_GroupInterrupt
と MC_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 ブレンディングパスに投影されます。

指定された移動IDが不明な場合、機能ブロックはエラーを返します。走行動作は中断されません。
軸グループの現在の動的状態で、指定された割り込み位置の前に停止状態に達することができない場合は、
SMC_GroupInterruptAt
まったく同じように動作しますMC_GroupInterrupt
:割り込みはすぐに実行され、軸グループはコマンドされた割り込み位置の後ろのどこかで停止します。他のすべてのエラーは、MC_GroupInterruptの場合とまったく同じように処理されます
特定の位置での割り込みは、割り込み位置で停止するプロセスがまだ開始されていない限り、別の動作で中止できます。
特定の位置で同時に指令できる割り込みは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_GroupStop
、 SMC_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_GroupContinue
とSMC_GroupGetContinuePosition
新しいエラーIDを返しますSMC_AXIS_GROUP_CONTINUE_DATA_NOT_WRITTEN
。もし
MC_GroupStop
エラーが発生するとアクティブになり、その後MC_GroupStop
移動が続くと、も再アクティブ化されます。軸グループはすでに停止されており、MC_GroupStop
移動が発生しないように、保留中のすべての移動を削除しました。軸グループエラーが発生すると、アクティブな移動の機能ブロックインスタンスがエラーを発行します(出力
Active
とBusy
切り替えるFALSE
、および出力Error
に切り替えますTRUE
)。まだアクティブになっていない、バッファリングされたムーブメントまたはブレンドされたムーブメントのファンクションブロックインスタンスもエラーを発行します。再起動後、これらの機能ブロックインスタンスはすべて次のようにリセットされます。Busy
/Active
そしてそれらの出力はにリセットされますError
/CommandAborted
。