Festo#CMMT-ST Servo Drive_Part2_Beckhoff TwinCAT3と連携しよう

こちらはFestoのCMMT-ST SeriesのServo Drive Tutorial第2話です。今回はCMMT-AS DriveとBeckhoff TwinCAT3連携するときの注意点やプログラムを説明します。

さ、はじめよう!

Video

こちらは自分が作った、Festo Automation suiteを使用しCMMT-ST Servo Driveを試運転する日本語動画です。

Festo.CMMT-ST Sero Drive Tutorial_Part1_Commissioning with Automation suite_JP

こちらは自分が作った、Beckhoff TwinCAT3とCMMT-ST Servo Driveを使用するときのプログラム説明動画です。

Festo.CMMT-ST Sero Drive Tutorial_Part2_ How to control from Beckhoff Twincat3_JP

Reference Link

こちらはFestoのCMMT-ST SeriesのServo Drive Tutorial Part1で、Automation Sutieの操作方法やCMMT-ST の試運転を紹介します。

Festo#CMMT-ST Servo Drive_Part1_動かしてみよう

FestoはCPX Seriesの製品もありまして、EIP/Profinet/Ethercatにも対応できる総合的なFieldbus Solutionを提供しています。よかったら下記のLinkを参考にしてください。

自分がFesto CPX モジュールとBeckhoff TwinCAT・Keyence・IQRと接続したStep by Stepガイドラインを書いています。

Festo#CPX-AP-I-EC EtherCAT Moduleを使ってみよう
Festo#CPX-AP-I-EP EtherNet/IP ModuleとKV8000連携してみよう
Festo#CPX-AP-I-EPとIQ-RをModbus TCPで連携してみよう

EtherCAT

IN

Port1 XF1はEtherCAT IN PortでPort XF2はEtherCAT Output Portになります。

Distributed clocks DC (Distributed Clocks)

EtherCATネットワークの全てのDC対応のEtherCATスレーブコントローラESC内の全てのReal-Time-Clockは、分散ClockDCのメカニズムによって同期させることができます。

Defaultでは、EtherCATネットワーク内の最初のDC対応スレーブが基準クロック (Ref Clock) を持ってClock Masterを制御します。

周期の間隔で、マスターは同期データグラムを送信し、その中でClock Masterは現在の基準時刻(Ref Time)をreference clockに書き込む。

後続の全てのSlaveはこの値を読み出し、EtherCATスレーブコントローラASCは基準時間 (Ref Time) から時間を計算し、コントローラによって計算された実行時間 (Offset) からDC時間を計算します。そのDC分散クロックは、後続の同期データグラムごとに継続的に同期され、周期的な同期処理は、DCを介して実行することができます(例えば、複数の軸を周期的に同期して動作させるとか)。

Cyclical process data の送信と処理は、Sync Managerに制御されます。

Cyclical process data の送信と処理は、synchronisationに指定され、そのsynchronisationは。DC(Distributed Clocks DC)によって制御されます。

CMMTは以下の同期モードを対応します:

  • Free run (同期なし)
  • Process data (SM2イベントへの同期)
  • Sync (DC Sync 0イベントとの同期)

Process data communication

Process data communicationでは、CMMTとControllerなどの間で、プロセスデータ(設定値や現在値など)がサイクリックに交換されます。

process data frameが実行されるたびに、Process data outputがフレームから読み出され、Process data inputがフレームに書き込まれる。

CMMTでは、コントローラがprocess data 通信用データをSync Managers 2 と3にMappingされます。そして最大のRxPDO/TxPDOには、それぞれ64バイトのユーザ・データを持つ16個の出力/入力オブジェクト(Sub:0x01 … …0x10)を割り当てることができます。

注意するのはprocess data通信は、”Safe Operational” ステータスから始めることになります。CMMT は、このステータスからTxPDOをコントローラに送信します。”Operational”ステータスに達した後、RxPDOがCMMTによって処理され、実行されます。CMMTの同期は、DC (Distributed Clocks)によって制御される。

こちらはRxPDO01のMappingになります。

こちらはTxPDO01のMappingになります。

こちらはTxPDO03のMappingになります。

Download ESI File

FestoのHPからCMMT-STのESI FileをDownloadしましょう。

https://www.festo.com/tw/en/support-portal-specific/?query=8084005&groupId=4&productName=Servo+drive&documentId=659205

Implementation

Festo Side

Festo 側ではAutomation Sutieを使用し、リミットなどの設定を行います。

Monitor Limit 

Axis>Monitoring Functionを開きます。

Limit VelocityでServoのMax Speed値を変更できます。

Axis Limit

Axis1>Axisを開き、Driveの位置リミットなどに関する設定を行います。

中にVelocityのLower/Higher リミット・Homingする方法などのパラメータを変更できます。

Beckhoff Side

Install ESI File

先程Festo HPからDownloadされたFileを解凍するとXML Fileが格納されています。

このXML Fileを下記のPathに格納してください。

C:\TwinCAT\3.1\Config\Io\EtherCAT

Create New Project

TwinCATを起動し、File>New>Projectで新規プロジェクトを作成します。

TwinCAT XAE Projectを選び>OKです進みます。

Done!新しいTwinCTAプロジェクトが追加されました。

Add EtherCAT Master

TwinCAT MasterにEtherCAT Masterを追加するため、I/O>Device>Add New Itemします。

EtherCAT>EtherCAT Masterを選び>Okします。

Done!EtherCAT Masterが追加されました。

Adapter

EtherCAT Masterをダブルクリックし、AdpaterのTabを開きます。

このTabからSearchボタンをクリックし、IPCが対応できるNetwork Adapterを検索します。

その中にEtherCAT Masterとして稼働したいNetwork Adapterを設定しましょう。

Update ESI File

先程ImportしたESI FileをTwinCAT SystemにUpdateすつため、TwinCAT>EtherCAT Devices>Reload Device Descriptionsをクリックします。

Add CMMT-ST

Festo CMMT-STをEtherCAT Networkに追加します。EtherCAT Masterを右クリック>Add New Itemします。

Festo>CMMT>CMMT-STを選び、Okで進みましょう。

TwinCATから自動的にNC Axisを追加するか?のPopupが表示され、NC-Configurationを選択し、Okで進みます。

Done!CMMT-ST DriveとNC 軸も追加されました。

Configure DC

CMMT-STのはDefaultでDC同期がEnableされていますが、念のためにもう一度確認しましょう。CMMT-STをクリックし、DC Tabを開き、OperationmodeがDC For Synchronziationに設定されたかを確認しましょう。

Advanced SettingsをクリックするとDC同期に関する詳しい設定もありますが、今回はDefaultのままで行きます。

PLC

Add PLC Item

次はプロジェクトにPLCを追加するため、PLC>右クリック>Add New Itemします。

Standard PLC Projectを選び、Addで進みます。

Done!PLCが追加されました。

Add GVL

Global Variables Listを追加するため、Add>Global Variable Listします。

Global Variables List名を入力しOkで進みます。

GVLの中に以下の変数を定義します。

{attribute ‘qualified_only’}
VAR_GLOBAL
iMsiMode AT %I*:SINT;
qMsiMode AT %Q*:SINT:=8;
FestoAxis :AXIS_REF;
END_VAR

Add Library

AXIS_REFを使用するためには、ライブラリの追加が必要です。

References>Add Libraryします。

Tc2_MC2を検索しOkでライブラリを追加しましょう。

Done!

Build

Build>Build Solutionでプロジェクトを一度コンパイルします。

Change Mapping

Festo CMMT-STのDriveのMappingを変更します。

CMMT-ST>Inputs>Modes of operation displayを右クリック>Change Linkします。

先程GVLで定義したGVL.iMsiModeと紐つけましょう。

Outputs>Mode of operation も同じく右クリック>Change Linkします。

先程GVLで定義したGVL.qMsiModeと紐つけましょう。

Program

最後はProgramです。FestoのCMMT-STの現在状態・速度・位置を読み込んで、そしてServo ON・Jog Operationなどのコマンドも発行します。

PROGRAM MAIN
VAR
//MC_Power
mc_Power:MC_Power;
MC_Power_Enable:BOOL;
//MC_Jog
mc_jog:MC_Jog;
mc_Jog_Velocity:REAL;
MC_Jog_Forward,MC_Jog_Backword:BOOL;
//MC_Home
mc_home:MC_Home;
mc_home_execute:BOOL;
//MC_Halt
mc_halt:MC_Halt;
mc_halt_exe:BOOL;
//MC_MoveAbsolute
MC_MoveAbsolute:MC_MoveAbsolute;
MC_MoveAbsolute_Exe:BOOL;
MC_MoveAbsolute_Position:LREAL;
MC_MoveAbsolute_Velocity:LREAL;
//MC_MoveRelative
MC_MoveRelative:MC_MoveRelative;
MC_MoveRelative_Exe:BOOL;
MC_MoveRelative_Distance:LREAL;
MC_MoveRelative_Velocity:LREAL;
//MC_Reset
mc_reset:MC_Reset;
MC_Reset_Exe:BOOL;
//MC_ReadActualPosition
mc_ReadActualPosition:MC_ReadActualPosition;
mc_ReadActualPosition_Enable:BOOL:=TRUE;
MC_ActualPosition:LREAL;
//MC_ReadActualVelocity
MC_ReadActualVelocity:MC_ReadActualVelocity;
MC_ReadActualVelocity_Enable:BOOL:=TRUE;
MC_ActualVelocity :LREAL;
//MC_ReadStatus
MC_ReadStatus:MC_ReadStatus;
MC_ReadStatus_Enable:BOOL:=TRUE;
MC_Status :ST_AxisStatus;


END_VAR




//Read the ActualPosition of Axis
mc_ReadActualPosition(
Axis:=GVL.FestoAxis
,Enable:=mc_ReadActualPosition_Enable
,Position=>MC_ActualPosition
);
IF mc_ReadActualPosition.Error THEN
mc_ReadActualPosition_Enable:=FALSE;
MC_ActualPosition:=0.0;
END_IF

//Read the ActualVelocity of Axis
MC_ReadActualVelocity(
Axis:=GVL.FestoAxis
,Enable:=MC_ReadActualVelocity_Enable
,ActualVelocity=>MC_ActualVelocity
);
IF MC_ReadActualVelocity.Error THEN
MC_ReadActualVelocity_Enable:=FALSE;
MC_ActualVelocity:=0.0;
END_IF

//Read the Status of Axis
MC_ReadStatus(
Axis:=GVL.FestoAxis
,Enable:=mc_Power.Active
,Status=>MC_Status
);


//MC_Power
mc_Power.Enable_Positive:=TRUE;
mc_Power.Enable_Negative:=TRUE;
mc_Power(
Axis:=GVL.FestoAxis
,Enable:=MC_Power_Enable
);
IF mc_Power.Error THEN
MC_Power_Enable:=FALSE;
END_IF

//MC_Reset
mc_reset(
Axis:=GVL.FestoAxis
,Execute:=MC_Reset_Exe
);
IF mc_reset.Busy OR mc_reset.Busy THEN
MC_Reset_Exe:=False;
END_IF

//MC_Halt
mc_halt(
Axis:=GVL.FestoAxis
,Execute:=mc_halt_exe
);
IF mc_halt.Busy OR mc_halt.Error THEN
mc_halt_exe:=FALSE;
END_IF

//MC_Jog
mc_jog.Mode:=E_JogMode.MC_JOGMODE_CONTINOUS;
mc_jog(
Axis:=GVL.FestoAxis
,JogBackwards:=MC_Jog_Backword
AND MC_Status.Operational
AND NOT MC_Jog_Forward
,JogForward:=MC_Jog_Forward
AND MC_Status.Operational
AND NOT MC_Jog_Backword
,Velocity:=mc_Jog_Velocity
);

//MC_Home
mc_home.HomingMode:=MC_HomingMode.MC_Direct;
mc_home(
Axis:=GVL.FestoAxis
,Execute:=mc_home_execute
);
IF mc_home.Busy OR mc_home.Error THEN
mc_home_execute:=FALSE;
END_IF



//MC_MoveAbsolute
MC_MoveAbsolute(
Axis:=GVL.FestoAxis
,Execute:=MC_MoveAbsolute_Exe
AND MC_Status.Operational
AND MC_Status.Homed
AND NOT MC_Status.HasJob
,Position:=MC_MoveAbsolute_Position
,Velocity:=MC_MoveAbsolute_Velocity
);
IF MC_MoveAbsolute.Busy OR MC_MoveAbsolute.Error THEN
MC_MoveAbsolute_Exe:=FALSE;
END_IF
//
MC_MoveRelative(
Axis:=GVL.FestoAxis
,Execute:=MC_MoveRelative_Exe
AND MC_Status.Operational
AND MC_Status.Homed
AND NOT MC_Status.HasJob
,Distance:=MC_MoveRelative_Distance
,Velocity:=MC_MoveRelative_Velocity
);
IF MC_MoveRelative.Busy OR MC_MoveRelative.Error THEN
MC_MoveRelative_Exe:=FALSE;
END_IF

Confiugure Parameters

最後はNC軸のパラメータを変更します。ここでいくつかのパラメータはFesto Automation Suiteに設定されたものと合わせる必要があります。

Enc

まずFestoのDriveと合わせる必要があるのはEnc 設定です。

ParametersにはScaling Factor Numbertorというパラメータがあります。

Festo Automation Sutie>Field busからPosition項目の設定に合わせて設定してください。

下図では-6なので0.000001になります。

Axis Setting

次に必要なのはAxis本体の設定になります・

Reference Velocityなども実際のモータデータに合わせましょう。

Link to PLC

TwinCATのAXIS_REFをAxisを接続するため、Axes>Axis1を開きます。

Parameters TabにあるLink to PLCボタンをクリックします。

GVLで定義されたAXIS_REFと紐つけましょう。

Activate

Hardware ConfigurationをRuntimeにDownloadします。

Okで進みます。

Login

最後はプログラムをRuntimeにDownloadしましょう。

Result

MC_Power to turn on the Drive

こちらの動画でTwinCAT3からFesto のServo DriveをPower Onする操作になります。https://youtu.be/sHPzWWUIfwY

MC_Reset to reset the Drive

こちらの動画でTwinCAT3からFesto のServo Driveをリセットする操作になります。

MC_MoveRelative 

こちらの動画でTwinCAT3からFesto のServo Driveを相対位置決めする操作になります。

MC_MoveAbsolute 

こちらの動画でTwinCAT3からFesto のServo Driveを絶対位置決めする操作になります。

MC_Jog

こちらの動画でTwinCAT3からFesto のServo DriveをJOG操作になります。

Download

こちらのLinkからプロジェクトをDownloadしてください。

https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT_SampleProject_WithFestoSMMT%20Servo.tnzip

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

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

フォローする