Berghof#INOVANCE SV680をCodesys,SoftMotionで制御しよう

今回の記事はBerghofのMC-PIコントローラーを使用しEtherCATを立ち上げ、INOVANCEのSV680NとEtherCAT通信とSoftMotionを使用し制御します。

さ、FAを楽しもう。

Reference Link

http://soup01.com/ja/category/inovance/

http://soup01.com/ja/category/berghof/

前書き

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

https://x.com/3threes2

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

MC_TP_REF?

このSTRUCTは、MC_PositionProfileによって実行される軌跡を記述します。

名前

初期値

コメント

Number_of_pairs

INT

0

この変数は使用されておらず、互換性のためにのみ存在します。代わりに MC_PositionProfile.ArraySize を使用してください。

IsAbsolute

BOOL

TRUE

TRUE: 位置は絶対値として解釈されます(相対ではありません)。

MC_TP_Array

ARRAY [1..100] OF SMC_TP

時間/位置

MC_PositionProfile?

このファンクションブロックは、時間位置ロックされたモーションプロファイルを指令するために設計されている。

注意するのは、この動作の後、Axis が停止状態にならず、Done が設定されている同じサイクルで後続の動作が指令されない場合、Axis はエラー停止状態に切り替わり、エラー SMC_MOVING_WITHOUT_ACTIVE_MOVEMENT を報告します。

また、このMC_PositionProfileは異なるプロファイル間のシフトを管理できます。MC_PositionProfile の代わりに、仮想マスターに結合されたカム機能ブロックを使用することもできます。

グラフ例

こちらは稼働のグラフ例です。

時間/速度および時間/加速度プロファイルは、速度または加速度ライン上にサンプリングポイントを持つ位置プロファイルと同様である。

deltaTime

absPos

dT1

Pos1

dT2

Pos2

dT3

Pos3

dT4

Pos4

VAR

スコープ

名前

コメント

Inout

Axis

AXIS_REF_SM3

軸への参照

TimePosition

MC_TP_REF

時間/位置記述への参照

Input

Execute

BOOL

立ち上がりエッジで関数ブロックの実行を開始

ArraySize

INT

配列のサイズ

PositionScale

LREAL

位置全体のスケーリング係数

Offset

LREAL

位置全体のオフセット([μ] 単位)

Output

Done

BOOL

TRUE:プロファイルが完了した

Busy

BOOL

TRUE:関数ブロックの実行がまだ終了していない

CommandAborted

BOOL

TRUE:他のコマンドによりコマンドが中断された

Error

BOOL

TRUE:関数ブロック内でエラーが発生した

ErrorID

SMC_ERROR

エラー識別

Implementation

ESIのインストール

Tools>Device RepositoryでInovanceのESI FileをCodesysに登録します。

Installボタンをクリックします。

InovanceのSV680N ESI Fileをインストールします。

Done!

EtherCATマスタの追加

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

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

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

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

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

イーサネットインターフェースを選択

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

オプション-オートリセット

Optionsの下にある”Automatically restart/slaves”をCheckBoxに入れ、EtherCATネットワークを自動復旧できるようにします。

デバイスのスキャン

先ほど追加したEtherCATマスターを右クリック>Scan for DevicesでEtherCATネットワーク上にあるEtherCAT slavesを検索します。

Done!InovanceのSV680Nを検索でき、Copy to projectをクリックし該当するSlaveをプロジェクトに追加します。

Done!

Add SoftMotion CiA402

SV680SにCiA402 Axisを追加するために、右クリック>Add SoftMoation CiA402 Axisを追加します。

OKで進みます。

Done!

Axis Type

General TabでAxis Typeを選択します。今回の記事ではModuloに選択し、Modulo valueを

360.0に設定します。

Scaling/Mapping

次はScaling/MappingにRotaryを設定し、16#4000000に設定します。今回使用するINOVANCEのモーターは26Bitのエンコーダなので。

また、Gear output turns <=> units in applicationを360に設定します。

つまり1回転は360度になります。

プログラム

次はプログラムを作成します。今回の記事もCFCを使用します。

VAR

こちらはプログラムに必要な変数を定義します。_MC_TP_REFテーブルは初期値を宣言します。

PROGRAM pInvoance
VAR
_MC_Power: SM3_Basic.MC_Power;
_MC_STOP: SM3_Basic.MC_Stop;
_MC_ReadActualPosition: SM3_Basic.MC_ReadActualPosition;
_MC_MoveAbsolute: SM3_Basic.MC_MoveAbsolute;
_MC_Reset: SM3_Basic.MC_Reset;
_MC_PositionProfile: SM3_Basic.MC_PositionProfile;

_MC_TP_REF: MC_TP_REF :=
(MC_TP_Array := [
(delta_time := TIME#0.2S, position := 10)
, (delta_time := TIME#0.2S, position := 50)
, (delta_time := TIME#0.2S, position := 90)
, (delta_time := TIME#0.2S, position := 180)
, (delta_time := TIME#0.2S, position := 270)
, (delta_time := TIME#0.2S, position := 359)
, (delta_time := TIME#0.2S,position:=250)
, (delta_time := TIME#0.2S,position:=200)
, (delta_time := TIME#0.2S,position:=130)
, (delta_time := TIME#0.2S,position:=50)
, (delta_time := TIME#0.2S,position:=1)
]);
END_VAR

CFC

こちらはCFCのプログラムで、SERVO ON・リセット・MC_PositionProfileなどのブロックを追加します。

画面

そしてCodesysに簡単な操作画面を作成します。

ダウンロード

プロジェクトをCPUにDownloadしてください。

Online Config Modeテスト

実際プログラムからSERVOを制御する前にOnine Config Modeを使用し、CodesysのIDEからSERVOの試運転を行います。

Yesで進みます。

Commissioning Tabを開くと、SERVOの試運転画面が表示されます。

この画面からPOWER ON/JOGの操作を可能です。

Commissioning完了したら下図のボタンでOnline Config Modeを無効にします。

結果

BerghofコントローラーとINOVANCEのServo ドライブのEtherCAT通信ができました。

下記のLinkで実際の動作を確認してください。

シェアする

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

フォローする