こちらの記事では、前回に引き続き、CODESYS SoftMotionでCMZ製コントローラ「FCT641」とOMRON製サーボドライバ(R88D-1SN01L-ECT)を用いた2軸制御を深掘りしていきます。今回は MC_GearIn / MC_GearOut を使って、マスター軸とスレーブ軸の同期動作(ギア制御)を紹介します。モーション制御でよく使われる「速度比追従」や「連結・解除のタイミング制御」について、HMIからの操作も含めて実践的に解説します。
さ、FAを楽しもう!
Reference Link
MC_GearIn (FB)
MC_GearIn は、マスター軸(主軸)に対してスレーブ軸(従軸)を連動させ、両軸間に一定の速度比率を適用するファンクションブロックです。
このブロックが開始されると、スレーブ軸は指定された比率の速度に徐々に加速され、目標の速度比に到達するとマスター軸との連結(カップリング)が完了します。
この時に連結が確立するまでの間に移動した距離は補償されません(ズレた距離はそのまま残ります)。
注意事項
- MC_GearInは、マスター軸を制御するモーション系のファンクションブロック(例:MC_MoveVelocity, MC_MoveAbsoluteなど)が呼び出された後に実行する必要があります。そうしないと、スレーブ軸はマスター軸に遅れて動作することになります。
- MC_GearIn動作中に速度比率を変更したい場合は、再度MC_GearInを呼び出すことで変更可能です。この際に事前のMC_GearOut呼び出しは不要です。
- 指定した速度比率に達すると、出力フラグ InGear がセットされます。InGear がセットされた後の連結の仕組みは、軸の現在の制御モードによって異なります。
インタフェース
入出力(Inout)
名称 | 型 | 初期値 | 説明 |
Master | AXIS_REF_SM3 | – | マスター軸(主軸)の軸参照。マスター軸は必ずしも停止している必要はありません。 |
Slave | AXIS_REF_SM3 | – | スレーブ軸(従軸)の軸参照です。 |
入力(Input)
名称 | 型 | 初期値 | 説明 |
Execute | BOOL | – | 立ち上がりエッジ(0→1)で、GearIn機能の実行を開始します。 |
RatioNumerator(分子) | DINT | 1 | マスター軸とスレーブ軸の目標速度比を分数形式で指定する際の分子です。 |
RatioDenominator(分母) | UDINT | 1 | 目標速度比の分母です。例えば分子が「1」、分母が「2」ならスレーブ軸はマスター軸の半分の速度になります。 |
Acceleration | LREAL | – | スレーブ軸を目標速度比に到達させるための最大加速度です。[単位:u/s²] |
Deceleration | LREAL | – | スレーブ軸を目標速度比に到達させるための最大減速度です。[単位:u/s²] |
Jerk | LREAL | – | スレーブ軸が加減速する際の最大ジャーク(加速度の変化率)です。[単位:u/s³] |
BufferMode | MC_BUFFER_MODE | – | このFBの動作を、直前の動作との時系列順序を指定するモードです。サポートされるのは以下の3つのモードのみです。- Aborting(中止して即座に実行)- Buffered(前の動作が終了後に実行)- BlendingPrevious(前の動作の速度をそのまま受け継ぎ滑らかに接続)なお、本ファンクションブロックがBusy(処理中)の場合は、BufferModeは Aborting のみ設定可能です。 |
出力(Output)
名称 | 型 | 初期値 | 説明 |
InGear | BOOL | – | TRUEの場合、スレーブ軸が設定した速度比に達して連結(カップリング)が成立しています。 |
Busy | BOOL | – | TRUEの場合、このファンクションブロックが現在実行中(処理中)であることを示します。 |
Active | BOOL | – | このファンクションブロックがスレーブ軸の制御権を持っていることを示します。 |
CommandAborted | BOOL | FALSE | TRUEの場合、このファンクションブロックの動作が、他のFBによる割り込みなどで中断されたことを示します。 |
Error | BOOL | – | TRUEの場合、このFBの処理中にエラーが発生したことを示します。 |
ErrorID | SMC_ERROR | – | エラーが発生した際、そのエラーの詳細な種類を示す識別コードです。 |
使用例
この図は MC_GearIn ファンクションブロックを2回連続で実行したときの、各信号と軸速度の推移を示しています。
FB設定
こちらはGearIn FBの使用例です。
1回目のGearIn
1回目のGearInはRatio: 比率は「1」で、つまり、スレーブ軸はマスター軸と同じ速度で動作します。
2回目のGearIn
2回目のGearInはRatio: 比率は「2」で、つまり、スレーブ軸はマスタ軸の速度の2倍で動作します。
タイムチャート
全体の流れとしては、
- 最初のGearInが実行され、スレーブ軸がマスター軸と同じ速度になるまで加速。
- 設定速度(比率「1」)に到達すると、InGearがセットされます。
- 一旦ExecuteがOFFになり、連結解除状態にします。
- 2回目のGearInが実行されると、スレーブ軸はさらに加速され、マスター軸の2倍の速度に到達します。
- 再びInGearがセットされ、新たな比率(比率「2」)での連結状態となります
First.Execute(1回目の実行指令)
最初にON(1)にセットすると、GearIn動作が始まります。OFF(0)になると、GearIn動作が終了します(停止)。
First.InGear(1回目の速度比達成信号)
スレーブ軸が設定された比率(ここでは「1」)に到達するとONになります。一度ONになると、ExecuteがOFFになるまでは保持されます。
Second.Execute(2回目の実行指令)
1回目のExecuteがOFFになったあと、再度ONになることで、次のGearIn動作が始まります。
Second.InGear(2回目の速度比達成信号)
次に設定された比率(ここでは「2」)に到達するとONになります。
MySlave.Velocity(スレーブ軸の速度)
最後はSlaveの速度を見てみましょう。1回目の実行により、マスター軸の速度に追従して速度が徐々に上昇し、比率「1」を達成します。そして比率達成後、ExecuteがOFFになると速度が一旦変化します。
また、次に2回目のExecuteがONになると、さらに速度が上昇し、最終的にマスター軸速度の2倍の比率に到達します。
MC_GearOut
MC_GearOut は、スレーブ軸(従軸)をマスター軸(主軸)から切り離す(連結を解除する)ファンクションブロックです。このブロックを実行すると、スレーブ軸はそれまで連結していたマスター軸から切り離されます。
注意事項
- 通常、このブロックの後には何らかの別の動作指令(例えば MC_Stop や MC_GearIn など)を実行することを前提としています。
- 仮に MC_GearOut の後に何の動作指令も指定しなかった場合、スレーブ軸は「直前の速度を維持する」という動作がデフォルトとして採用されます。つまり、連結解除後、スレーブ軸は速度を保持して動き続けますので、意図しない動作を防ぐためにも、必ず後続する処理を明示的に指定することが推奨されます。
インタフェース
入出力(Inout)
名称 | 型 | 説明 |
Slave | AXIS_REF_SM3 | スレーブ軸(従軸)の軸参照です。 |
入力(Input)
名称 | 型 | 説明 |
Execute | BOOL | 立ち上がりエッジ(0→1)で、GearOut(連結解除)動作の実行を開始します。 |
出力(Output)
名称 | 型 | 説明 |
Done | BOOL | TRUEの場合、軸の連結解除が正常に完了したことを示します。 |
Busy | BOOL | TRUEの場合、このファンクションブロックの処理がまだ完了していない(処理中である)ことを示します。 |
Error | BOOL | TRUEの場合、このFBの実行中にエラーが発生したことを示します。 |
ErrorID | SMC_ERROR | エラー発生時、そのエラーの種類を示すエラーコードです。 |
Implementation
変数宣言
こちらは、2つの軸(_Axis1、_Axis2)を制御し、さらに 軸間のギア連結(MC_GearIn)と連結解除(MC_GearOut) を行うためのインスタを宣言しました。
PROGRAM pAxis VAR _Axis1: fbAxis; _Axis2: fbAxis; _AxisGear :SM3_Basic.MC_GearIn; _AxisGearOut:SM3_Basic.MC_GearOut; END_VAR |
プログラム
こちらは前回のプログラムの追加になります。MC_GearInを使って、スレーブ軸 _Axis2 をマスター軸 _Axis1 に速度比付きで連結し、スレーブは RatioNumerator : RatioDenominator の速度で追従します。また、必要に応じて MC_GearOut を使い、連結を解除する。
画面追加
今度はSMC3_BasicからGearOutとGearInのTemplate画面を使用します。
この画像は、HMI画面上で MC_GearIn と MC_GearOut を操作・監視するためのデバッグ用画面を追加します。
デバイスへログイン
メニューから: Online > Loginし、デバイスとCODESYS IDEが接続され、アプリケーションをダウンロードします。
実行開始
再生ボタン(F5)をクリックしてPLCアプリケーションをスタートします。
結果
実機の動作確認は、YouTube上にアップロードしたデモ動画にてご確認いただけます。