Codesys# CMZ FCT641とOMRONサーボをつないで2軸制御してみよう

こちらの記事はCMZ製モーションコントローラ「FCT641」にCODESYSを使用し、EtherCAT経由でOMRON製サーボドライバ(R88D-1SN01L-ECT)を2軸接続しています。CODESYS SoftMotionを用いることで、モーション制御・可視化・オンライン操作をすべて一環で実現しています。

さ、FAを楽しもう。

Reference Link

OMRON# R88D-1SN_Part01_サーボシステムを立ち上げよう
CMZ#FC641_Part01_コントローラーを立ち上げよう
Codesys#SoftMotionを使ってみよう

前書き

いつも私の技術ブログと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

Palpay

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

使用機材と環境

こちらは今回記事で使用した機材と環境などです。

  • CMZ FCT641 Motion Controller(CODESYS SoftMotion対応)
  • EtherCATサーボ(OMRON R88D-1SN01L-ECT)

SoftMotion CiA402 Axisの役割

CiA402(CANopen Device Profile for Drives and Motion Control) は、サーボドライブやモーションデバイスの共通プロファイル規格です。CODESYSではこのプロファイルに準拠したEtherCATスレーブドライブに対して、SoftMotion機能を持たせる「仮想軸オブジェクト」を追加することで、制御が可能になります。

主な機能

SoftMotion CiA402には以下の機能を実装できます。

  • 位置制御(Position control)
  • 速度制御(Velocity control)
  • トルク制御(Torque control)
  • 原点復帰(Homing)
  • 状態管理(Enable、Fault resetなど)

どんなときに使う?

SoftMotion CiA402 Axisは以下のようなケースで使用されます:

  • EtherCATドライブがCiA402準拠したSERVO、例えばOMRON R88DやYaskawa、Beckhoffなど
  • PLC側でSoftMotion制御を行いたい場合
  • 標準Motion FBで柔軟な制御ロジックを組みたい場合

Implementation

EDS FILEインストール

CODESYS上で未対応だったデバイスやフィールドバススレーブが新たに使えるようになります。特に、ベンダー提供のEDSファイルを使って正しく設定を読み込むことで、I/Oマッピングや設定パラメータが自動生成されます。

CODESYS上部メニューの「Tools」から「Device Repository…」を選択します。

ここでは現在CODESYSに登録されているデバイス一覧が表示されており、フィールドバスやPLC、SoftMotionドライブなどが分類されています。画面右には「Install」ボタンがあり、新しいデバイスファイルをここから追加できます。

「Install」を押すことでデバイス定義ファイルを選択するダイアログが表示されます。

Windowsのファイル選択画面が開いており、複数のEDSファイルが選択しましょう。

ファイルのインストールが完了すると、OMRON Corporation のデバイスがリストに追加され、バージョンや識別名が確認できるようになります。

デバイス構成とEtherCATセットアップ

最初にEtherCATをセットアップします。

EtherCATマスタの追加

EtherCATマスタを追加するため、まずは既存のデバイスを右クリックして、メニューから「Add Device…」を選択します。この操作で、CODESYSに登録されているマスタデバイスを追加するためのウィンドウが開きます。

「Add Device」ダイアログで、Fieldbuses > EtherCAT > Master の中から EtherCAT Master SoftMotion を選択し、「Add Device」をクリックします。このマスタは、SoftMotion機能をサポートしており、各種サーボ軸の制御が可能になります。

Device配下に EtherCAT_Master(EtherCAT Master SoftMotion)が追加されたことが確認できます。このあと、スレーブデバイスをスキャンして自動構成する、または手動でデバイスを追加することができます。

EtherCAT通信のNIC設定

EtherCAT Masterを選択し、プロパティタブ内の「General」設定に進みます。

ここでは「Source address(MACアドレス)」に使用するネットワークアダプターを指定します。MACアドレスを直接入力するのではなく、右側の「Select…」ボタンを押すことで、使用可能なネットワークアダプタを一覧から選択できます

表示された「Select Network Adapter」ウィンドウから、使用したい物理ポート(例:ETH_1)を選択します。MACアドレスとインターフェース名(ETH_0 / ETH_1など)を確認して間違いのないようにします。

選択後、EtherCAT Masterの「Source address(MAC)」欄に、選んだインターフェースのアドレスが自動で反映されます。この状態でEtherCAT通信の初期化が行えるようになります。

スレーブデバイスの登録(OMRON Servo)

EtherCAT_Masterを右クリックし、「Add Device…」を選択します。スレーブ機器を手動で追加するための準備ステップです。自動スキャンで検出されない場合や、特定の構成を手動で構築したいときに用います。

ベンダー選択

「Add Device」画面で、「Vendor」を OMRON Corporation に設定することで、OMRON製のEtherCATスレーブ機器(ドライブやI/Oなど)が絞り込まれて表示されます。

OMRON R88Dサーボドライブの選択

OMRON Corporation > Servo Drives 配下にある R88D-1SN01L-ECT 100V/100W ServoDrive を選択します。このデバイスは、CODESYSに事前にEDS(EtherCAT Slave Description)ファイルがインポートされている必要があります。

サーボドライブの構成完了

EtherCAT_Masterの下に、R88Dサーボドライブが2台追加されました。これで、物理的なドライブとCODESYS上の構成が一致する状態になります。

各ドライブを右クリックし、「Add SoftMotion CiA402 Axis」を選択して、対応するSoftMotion軸(Generic DSP402)を追加します。この操作で、ドライブがモーション制御対象として認識されるようになります。

完成した構成ツリー

構成ツリー内に、2台のR88Dドライブにそれぞれ SM_Drive_GenericDSP402_Axis1 / Axis2 が接続されているのが確認できます。この状態で、軸のパラメータ設定・モーションプログラミングに進む準備が整います。

SoftMotion 軸構成とプログラム設計

EtherCAT配下にある各ドライブに、SoftMotion軸(SM_Drive_GenericDSP402_Axis1 など)が正しく追加されているか確認します。ここが起点となり、以降の制御プログラムと接続されます。

スケーリングとマッピング設定

各軸の「Scaling/Mapping」設定では、モーターのインクリメント分解能(例: 10#8388608)を設定。これはエンコーダのパルス数やギア比に応じて調整します。

軸制御ファンクションブロック(fbAxis)

Application配下に fbAxis というFB(Function Block)を作成します。これは各種MC(Motion Control)ブロックをまとめて処理するための軸制御用テンプレートFBです。

fbAxis のST(Structured Text)宣言部

VAR_IN_OUT に AXIS_REF_SM3 型の軸参照を宣言(これで実軸とリンク)、VAR 内で Motion Control 標準FB(MC_Power, MC_Jog, MC_Home など)を定義します。これにより、fbAxisをインスタンス化するだけで標準的なモーション制御機能をすぐに使えるようになります。

FUNCTION_BLOCK fbAxis
VAR_IN_OUT
AXIS_REF_SM3: AXIS_REF_SM3;
END_VAR
VAR_OUTPUT
END_VAR
VAR
_mc_power:SM3_Basic.MC_Power;
_mc_jog: SM3_Basic.MC_Jog;
_mc_Reset:SM3_Basic.MC_Reset;
_mc_halt:SM3_Basic.MC_Halt;
_mc_Stop:SM3_Basic.MC_Stop;
_mc_readStatus:SM3_Basic.MC_ReadStatus;
_mc_moveRel: SM3_Basic.MC_MoveRelative;
_MC_HOME: SM3_Basic.MC_Home;
_mc_Readpos: SM3_Basic.MC_ReadActualPosition;
_mc_readVel: SM3_Basic.MC_ReadActualVelocity;
_mc_readAxisError: SM3_Basic.MC_ReadAxisError;
END_VAR

軸制御FB内部

fbAxis内に、MC_Power / MC_MoveVelocity / MC_Jog / MC_Home などの標準モーションFBが配置されています。これらはPLCopen準拠のMotion Control命令であり、AXIS_REF_SM3 で各軸とリンクされます。

プログラム(pAxis)による軸インスタンス制御

pAxis (PRG) は、各軸のインスタンスを呼び出すためのプログラム(POU)です。ここで fbAxis を各軸ごとにインスタンス化して、パラメータや軸番号を渡します。また、複数軸制御のためのインスタンスを管理し、タスクスケジューラへの登録で周期制御します。

軸インスタンスの生成

PROGRAM pAxis
VAR

_Axis1: fbAxis;
_Axis2: fbAxis;
END_VAR

軸インスタンスとリンク

pAxis 内で fbAxis が SM_Drive_GenericDSP402_Axis1 や Axis2 に接続されている様子です。各軸オブジェクトと制御ブロックを論理的に接続することで、実行時の制御が有効になります。

タスク構成とpAxisの紐づけ

Task Configuration で、EtherCAT軸を制御する pAxis プログラムを、EtherCAT_Task にバインドします。これにより、周期タスク内で軸制御が実行されるようになります。

EtherCAT_Task の設定画面。周期(例:4ms)で実行されるタスクに pAxis を登録することで、リアルタイムに近いモーション制御が可能になります。優先度や監視設定もここで調整可能です。

Visualization(可視化)画面構築

テンプレート構造の導入

次は「Template」 という共通ビジュアライゼーション画面を設定します。主に以下のような利点があります:

  • 各軸に共通のモーション制御パネル(Power, Jog, Moveなど)を一括管理
  • コンポーネントのコピー・再利用による設計効率の向上
  • デザイン統一による視認性向上

Template画面内には、以下の主要ブロックが配置されています:

ブロック名機能概要
MC_Powerサーボ電源ON/OFF制御
MC_Resetエラー解除
MC_Jog手動移動(前進/後退)
MC_MoveRelative相対移動命令
MC_ReadStatus軸の状態監視(停止中・原点復帰中など)
MC_ReadAxisErrorエラーコードの確認
MC_ReadActualPosition現在位置の取得

Visualization Toolbox「SM3_Basic」タブ

ここにあるのはSoftMotion専用のビジュアライズ部品テンプレートです。用途ごとに分かれており、ドラッグ&ドロップで簡単に画面に追加できます。

  • MC_Power:軸の電源ON/OFF
  • MC_Reset:エラーリセット
  • MC_Jog:手動JOG操作(前後)
  • MC_MoveRelative:相対位置移動
  • MC_ReadStatus:ステータス監視
  • MC_ReadActualPosition / Velocity / AxisError:現在値の可視化

テンプレート活用構造

次は軸ごとの操作画面(例:Axis-1) に対して、上位レイアウト(Template)と下部フッター(Template_Footer)をドラッグ&ドロップで追加します。

次は、Visualization画面上で、Template を右クリック → Properties>References セクション内の fbRefAxis に対し、… ボタンをクリックします。

プログラム pAxis 配下の _Axis1(型:fbAxis)を選択します。

bRefAxis に pAxis._Axis1 が正しく設定されているのを確認できました。

WebVisuの設定と公開

Visualization Manager > WebVisuでStart visualization項目もWebブラウザで最初に表示するビジュアル画面(例:Axis1)を設定してください。

Axis1 / Axis2 可視化画面

画面の下部には位置グラフも設けられ、時間変化とともに軸位置の推移を視覚的に確認できます。また、AXIS1・AXIS2の切り替えボタンで軸画面を切り替えられる構成です。

通信設定画面の表示

デバイスをダブルクリック>左メニューの「Communication Settings」を選択します。

「Scan Network」ボタンをクリックし>接続可能なFCT641デバイスが検出されます。

選択肢からFCT641を選び、「Enter」でActive化します。

デバイスへログイン

メニューから: Online > Loginし、デバイスとCODESYS IDEが接続され、アプリケーションをダウンロードします。

実行開始

再生ボタン(F5)をクリックしてPLCアプリケーションをスタートします。

結果

CODESYS上でCMZ FCT641モーションコントローラに接続され、アプリケーションが正常に実行(Application [run])されている状態になりました。また、配下に2台のOMRON R88D-1SN01L-ECT サーボドライブが接続され、正常に通信しています。

実機の動作確認は、YouTube上にアップロードしたデモ動画にてご確認いただけます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする