本記事では、Inovance Easy PLC環境において、MC_GearIn Function Block を活用し、2軸をマスター・スレーブ構成で同期させる方法を紹介します。モーターの回転にもう一軸を追従させる動作は、生産設備や搬送装置などで広く使われる重要な技術です。
さ、FAを楽しもう!

Reference Link
http://soup01.com/ja/category/inovance/
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
MC_GearIn
MC_GearIn は、マスター軸とスレーブ軸を電子的に歯車(ギア)連結するための命令です。ギア比(分子/分母)を指定することで、スレーブ軸がマスター軸の動きに追従するようになります。
VAR_INPUT
項目名 | 意味 | データ型 | 補足 |
Master | マスター軸 | _sMCAXIS_INFO など | 必須 |
Slave | スレーブ軸 | _sMCAXIS_INFO | 必須 |
RatioNumerator | ギア比の分子 | DINT | 例:1 |
RatioDenominator | ギア比の分母 | DINT | 例:1 |
ReferenceType | 同期基準位置の選択 | INT(0〜2) | 0=前サイクル, 1=当サイクル, 2=フィードバック※1を選ぶと軸番号制限あり(Master < Slave) |
Acceleration / Deceleration | 加減速 | REAL | 0指定で即同期(遷移なし) |
CurveType | 曲線種別 | BOOL | 0=標準直線, 1=T字曲線 |
Execute | 実行信号 | BOOL | 立ち上がりで同期開始 |
VAR_OUTPUT
出力名 | 内容 |
InGear | 同期完了(ギアが噛み合った状態) |
Busy | 同期中または追従準備中 |
CommandAborted | 実行中にキャンセルされた |
Error | エラー発生 |
ErrorID | エラーコード |
同期動作のフェーズ
MC_GearInは同期動作できるまでいくつかのフェーズがあります。
Catching phase(追従中)
こちらはスレーブ軸が加減速して、マスター軸と速度を合わせに行きます。
InGear phase(同期中)
こちらはギア比に基づいて完全に同期し続けるフェーズになります。そしてスレーブの移動量は、下記になります。
スレーブの移動量 = マスターの移動量 ×(分子 ÷ 分母) |
逆回転も可能
ギア比を 負の値 にすると、スレーブ軸はマスター軸と逆方向に回転します!
例:RatioNumerator = -1, RatioDenominator = 1 → 逆回転同期!
同期完了前のスレーブ軸挙動
同期(InGear)に到達する前、スレーブ軸は設定された加速度/減速度に従って加減速運動を行い、スレーブ軸の速度が「マスター軸の速度 × ギア比」に達したとき、ギアがかみ合った状態(InGear)とみなされ、完全にマスター軸の変化に追従するようになります。
【ケース1】マスター軸が一定速度で運転中の場合
スレーブ軸は、あらかじめ設定された加速度/減速度でマスターの速度に追いつき、同期完了後(InGear出力ON)、マスターの速度が変化した場合でも、スレーブはそのまま追従を維持します。
このフェーズを「Catching phase(追従中)→ InGear phase(同期中)」になります。
【ケース2】マスター軸が同期前に加減速を行う場合
スレーブ軸は、同期指令発行以降のマスターの速度変化をそのままリアルタイムで追いかけます(1:1ギア比想定)。これは「事前にマスター軸が一定速度ではない」場合の同期で、
スレーブは常にギア比に従って追従状態を維持します。
注意
Busy中に再実行すると再同期が発生(歯車再連結)し、また複数のGearIn指令を同時に発行すると最初の指令が中断され、後の指令で再同期されます。
Implementation
Add Sub ST Program
AutoShopにSTプログラムを追加するにはProgramming>Program Block>右クリック>Insert Subprogramします。
Sub プログラムの追加画面が表示されます。
LanguageをSTに設定してください。
そしてSubプログラム名を入力し、OKでプログラムを作成しましょう。
Done!ST Subプログラムが追加されました。
Add Gear-IN
Gear-IN関数を追加するにはInstruction Set> MC_GearINから可能です。
STプログラムにプログラム追加したい場所を選び>Gear_INをクリックしプログラムを追加しましょう。
Done!AutoShopはTempate付きの形で関数が追加されまうs。
AutoShop直接にEditorに変数を追加することも可能で、右クリック>Auto Variable Definitionします。
変数の定義画面が表示され、変数名やデータ・タイプを設定しましょう。
先程と同じ操作でMC_GearOut関数を追加します。
Done!
Call Sub Program From MAIN
次は先程追加したSubプログラムをMAINプログラムから呼び出しましょう。ToolboxからCALL関数をラダー回路に追加します。
Call SubProgramのWindowsが表示されます。
Drop-listから先作成したSubプログラムを設定します。
最後はOKボタンで設定を保存します。
Done!最後はA設定に常時ONや条件を追加しましょう。
ダウンロード
最後はPLC>DownloadでプロジェクトをCPUにDownloadしましょう。
OKで進みます。
OKでCPUをストップします。
そしてDownloadが終わったら、またOKをクリックしCPUをRUNにしましょう。
Result
xGearInExeをTRUEにし、2軸の同期を開始します。また、変数をMonitior Windowsに追加したい場合は、右クリック>Add to monitoring tableします。
Done!
では実際xGearInExeをTRUEにします。
Done!2軸が同期動作になりました。
こちらの動画で動作確認できます。