このスタートガイドでは、 3軸パス描画コントローラ コントローラ を1台の QEC-M-070T。オペレータが7インチのタッチスクリーン上に指で線を描くと、コントローラが軌跡を平滑化してウェイポイントへ変換し、1台の QEC-R11MP3S の3軸へ送信してリアルタイムに動作させます。
タッチスクリーン、EtherCAT Mデバイス、軌跡計画、位置データの記録はすべて同一のコントローラ上で動作します。外部PC、PLC、専用モーションコントロールカードは必要ありません。

1. 概要
- フリーハンド軌跡生成 — キャンバス上に直接軌跡を描画できます。描画完了後、プログラムが自動的に軌跡を最大600点のウェイポイントへ変換するため、あらかじめ図形を用意する必要はありません。
- 3軸連続動作 — X、Y、Z軸が生成された軌跡に沿って連続的に動作します。すべてのモーションコマンドをミリメートル単位で指定できるため、ユーザーがパルス値へ変換する必要はありません。
- 滑らかな軌跡実行 — 次に実行するウェイポイントをモーションバッファへ事前に登録し、Motion86 が隣接する軌跡セグメントを連続的につなぐことで、軌跡全体を滑らかに実行します。
- リアルタイムリミットスイッチ保護 — 各制御周期でリミットスイッチを監視します。スイッチが作動すると直ちに緊急停止し、作動したスイッチが解除されるまで停止状態をラッチします。
- 3つの操作画面 — Draw は軌跡作成、 Jog は各軸の手動操作、 Data はウェイポイントおよびモーション状態の確認に使用します。
2. 必要な機器
| 項目 | 注記 |
| QEC-M-070T | EtherCAT MDevice with a built-in 7″ 800 × 480 touch panel |
| QEC-R11MP3S × 1 | メイン機構 : 軌跡を実行する3軸 CiA 402 モータ制御モジュール |
| QEC-R11MP3S × 2 | オプション mechanism : for the synchronisation check; doesn’t affect the draw path itself |
| 24 V 電源 | Vs:システム用、Vp:周辺機器用 |
| リミットスイッチ | Wired to a digital input on each axis of the primary mechanism |
| 開発環境 | 86Duino IDE |
3. 機能概要
3.1 Draw — 軌跡描画とリアルタイム位置表示

- 黄色の枠内 — 安全描画エリアです。この範囲外へのタッチ入力はウェイポイントへ変換される前に除外され、機構の衝突につながる軌跡の作成を防止します。
- 緑色のライ — 変換後の軌跡です。画面から指を離すと自動的に計算され、右下の
CONVERTボタンを押すことで再計算することもできます。 - 赤色の十字マー — 機構の実際の現在位置を示します。モータを有効化すると表示され、リアルタイムの位置確認に使用できます。
- 画面下部のステータスバ — ウェイポイント数、軌跡全長、M0 のリアルタイム XYZ 座標、および右側に現在の状態 (
OFF/ON/READY/RUN/JOG/LIMIT).
画面上部のメッセージバーには、オペレータが次に実行すべき操作が表示されます。また、システム状態に応じて表示色が変化します。 青色は装置がまだ準備状態ではないこと、緑色は描画を開始できる状態、黄色は軌跡実行中、赤色はリミットスイッチが作動し、モーションが停止状態にラッチされていることを示します。
3.2 Jog — 手動操作

操作するグループ(M0 / M1 / M2)を選択し、移動量(1 mm または 5 mm)を設定した後、以下のボタンで各軸を操作します。 X- X+ Y- Y+ Z- Z+画面右側には、選択したグループのリアルタイム位置と各軸の可動範囲が表示されます。
Jog 操作では、入力されたコマンドをそのままドライブへ送信するのではありません。まず目標位置を許可された可動範囲内に制限したうえで、絶対位置指令として実行します。 これにより、手動操作にもプログラム動作と同じソフトリミット保護が適用されます。
3.3 Data — ウェイポイント一覧と実行状況

この画面では軌跡全体の情報を確認できます。 表示項目には、ステップ番号、目標 X / Y / Z 座標、送り速度(Feedrate)、実行状態が含まれます。 各ステップの状態は次の順に変化します。 Wait → Running → Finish軌跡実行中は、現在実行しているステップに合わせて画面も自動的に追従します。
実際に描画された結果が想定と異なる場合、この画面を確認することで、問題が座標変換にあるのか、あるいは機構やモーションパラメータにあるのかを切り分けることができます。
4. 操作手順
| ステップ | ボタン | 動作 |
| 1 | SERVO ON | 1回目の操作で EtherCAT を起動してモジュールをスキャンし、2回目の操作でドライブを有効化します |
| 2 | HOME | M0 が原点スイッチを検出し、座標系を確立した後、スイッチから離れます |
| 3 | READY | M0 が作業原点へ移動し、M1 と M2 は現在位置をそれぞれの開始位置として設定します |
| 4 | RUN PATH | M0 が描画軌跡の実行を開始し、M1 と M2 が各移動量に同期して動作します |
| 5 | STOP | いつでもすべてのモータを停止できます |
5. Motion86 が行う処理
このサンプルで開発工数を大幅に削減できる理由は、一般的なモーション制御処理の多くを Motion86 がまとめて処理している点にあります。
- ミリメートル単位で指令可能 :
config_PPU()で「1 mm あたりのパルス数(Pulses Per Millimetre)」を一度設定すれば、それ以降のモーションコマンドはすべてミリメートル単位で指定できます。ギヤ比、ボールねじのリード、エンコーダ分解能を変更した場合も、この値を変更するだけで対応できます。 - ソフトリミットを自動処理 :
config_PosLimit()およびenableSoftLimit()を設定することで、可動範囲外の目標位置はパルスが出力される前にブロックされます。各モーションコマンドの前に個別の範囲チェックを記述する必要はありません。 - 原点復帰機能を内蔵し、スイッチ入力方法を自由に設定可能 : 原点復帰シーケンスは Motion86 が実行し、ユーザーは原点スイッチを読み取る Callback を用意します。特殊な I/O 配線を使用している場合でも、Motion86 のその他の機能をそのまま利用できます。
- 軌跡全体を1つの連続動作として実行 : 最大600点のウェイポイントをバッファ経由で連続的に入力し、Motion86 が隣接するセグメントを接続します。そのため、600回の「開始-停止」を繰り返す動作にはなりません。
- 1台のMデバイスで3つの機構を制御 : 3つの独立した座標系を同一の 500 µs 制御周期内で更新でき、絶対座標モードと相対座標モードを組み合わせて使用することもできます。
- G-code に対応 :
gcode()は任意のタイミングで呼び出すことができ、自由に組み合わせて使用できるコマンドはline().
Motion86 の設計思想を最も分かりやすく表しているのが、モータドライブとのインターフェースです。
ドライブとの接続は、 基本的に2つの Callback 関数によって構成されています。:
void setRemoteTargetPos0(int axis, long pos) {
if (servo[0][axis]) servo[0][axis]->setTargetPosition(pos);
}
long getRemoteTargetPos0(int axis) {
if (servo[0][axis]) return servo[0][axis]->getPositionActualValue();
return 0;
}
machine0.config_CustomActuators_CycleTime(ECAT_CYCLE_TIME);
machine0.config_CustomActuators_Callbacks(setRemoteTargetPos0, getRemoteTargetPos0);EtherCAT ライブラリ側ではエンコーダパルスを扱い、Motion86 側ではミリメートル、送り速度、G-code を扱います。この2つの Callback 関数が両者を接続します。 将来異なるモータへ変更する場合や、最初に仮想軸を使用してシステム全体をシミュレーションする場合でも、基本的にはこの2つの関数を変更するだけで対応できます。 軌跡計画、ソフトリミット、原点復帰、G-code などの処理を変更する必要はありません。
6. 安全設計
このサンプルでは、衝突防止を3つのレイヤーに分け、それぞれ異なる段階で異常を検出します。
| 保護レイヤー | 防止する内容 | 実装箇所 |
| 画面範囲制限 | 不適切な入力 | ui.cpp |
| ソフトリミット | 不適切なモーション指令 | .ino |
| ハードウェアリミット | 実際の機構衝突 | .ino |
最初の2つはソフトウェアによる判定であるため、設定値が実際の機構と一致していることが前提となります。 設定値と実際の機構が一致していない場合、最後の保護手段となるのが物理的なリミットスイッチです。 リミットスイッチが作動すると、モーションは 直ちに停止し、その状態がラッチされます。 これは意図的な安全設計です。リミットスイッチが押された状態では接点のチャタリングが発生する場合があります。「スイッチが解除された」という条件だけで自動復帰させると、オペレータが状況を確認する前に装置が再び動作を開始する可能性があるためです。
7. リソース
- 開発ガイド(PDF): Motion86_DrawPath_Guide_EN | Motion86_DrawPath_Guide_CN
- サンプルプログラム(ZIP): Motion86_DrawPath
- デモ動画: Motion86 Library: Draw Path to Control Axis | EP12 · Multi-axis Control
- 86Duino IDE と QEC ソフトウェアツール: ソフトウエア
私たちは、より賢く、より速いマシン統合のために、堅牢で革新的な EtherCAT 自動化プラットフォームを提供し続けます。詳細情報やサンプルのご請求は、 info@icop.com.tw最寄りの ICOP Branch、または当社までお問い合わせください 世界各国の正規代理店.