今回の記事ではBeckhoff TwinCAT3上で安川電機のSERVOPACKシリーズSGDXS-2R8AA0AとEtherCAT経由で制御します。
倉庫にあるSERVOPACKで、Motion ライブラリが標準化されたTwinCAT3を試していきましょう。
さ、FAを楽しもう。
Reference Link
Reference Video
Download Tools
下記のLinkでSigmaWin+ツールをDownloadしてください。
https://www.e-mechatronics.com/download/tool/servo/sgmwinplsver7/download.html
Install the Tools
先ほどDownloadしたSigmaWin+セットアップFileを起動します。
Next>で進みます。
ライセンスに同意し、Next>で進みます。
Next>で進みます。
Installを開始します。
少々お待ち下さい…
USB Driverをインストールしましょう。
Done!
先ほどインストールしたツールを起動しましょう。
Done!
最初の一回目の起動は少々時間がかかります。
EtherCAT?
CANopen over EtherCAT通信リファレンスサーボパックには、EtherCAT通信(リアルタイムイーサネット通信)用のCiA 402 CANopenドライブプロファイルが実装されています。
それにより、基本的な位置、速度、トルク制御は、同期位置、速度、トルク制御とともにサポートされています。
また、EtherCAT通信を使用して、ハイレベルなサーボ制御性能、高度な旋回機能、Σ-Xシリーズの多くのアクチュエータを制御することができます。
CANopen over EtherCAT OSI Model?
SERVOPACKが実装するOSIモデルは、アプリケーション層(CANopen)、データリンク層(EtherCAT)、物理層(Ethernet)の3層から構成され、アプリケーション層、データリンク層、物理層以外の4層は使用されていません。 データリンク層はEtherCAT通信で実装され、アプリケーション層はDS402 CANopenドライブプロファイルで実装されます。
アプリケーション層のオブジェクト・ディクショナリには、パラメータ、アプリケーション・データ、マスターとスレーブ間のPDOマッピング情報が含まれ、プロセス・データ・オブジェクト(PDO)は、オブジェクト・ディクショナリ内のオブジェクトで構成され、PDOマッピングにマッピングすることができる。PDOマッピングは、プロセス・データの構造と内容を定義します。
Sending and Receiving Data in EtherCAT Communications
オブジェクトはEtherCAT通信でデータの送受信に使用され、オブジェクトデータの読み書きは、サイクリックにデータを転送するプロセスデータ通信(PDOサービス)と、非サイクリックにデータを転送するメールボックス通信(SDOサービス)で行われる。
プロセスデータ通信はPDOの読み書きに使用される。メールボックス通信(SDO)は、オブジェクト・ディクショナリ・データ・エントリを読み書きするために使用されます。
Implementation1
最初はSERVOPACKを立ち上げ、SigmaWin+のツールからエラーなくJOGできるようにしましょう。
Wiring
今回記事で使用する安川電機のServoはSGDXS-2R8AA0Aの単相タイプなので、下図のように配線していきましょう。
Connect to your Drive
先ほどPCにインストールしたSigmaWin+を起動し、Start>Connect the SERVOPACKをクリックします。
今回はUSB経由でServoアンプと繋がりますので、USB Connectionを選び>Search for SERVOPACKをクリックします。
Done!安川電機のSERVOPACKが見つかりましたので、ConnectでツールとServo Driveを接続しましょう。
少々お待ち下さい…
Done!
Parameter Screen
下図の枠で示したICONをクリック、操作画面を開きます。
こちらはSERVOPACKの操作画面になります。
Display Alarm
SERVOPACKのアラームを確認したい場合は、Troubleshooting>Display Alarmをクリックします。
現在SERVOPACKのアラームもしくはアラーム履歴を確認できます。
Reset Absolute Encoder
今回記事で使用する安川電機のServo Motorもそうですが、基本的にはAbsolute Encoderとして稼働もできます。またIncrementalエンコーダとして使用することもできます。
今回はAbsolute Encoderとして使用したいので、Encoder Setting>Reset Absolute Encoderでエンコーダをリセットする必要があります。
Continueで進めば、エンコーダのリセットが完了です。
SigmaLink Settings
次はServoPackのSigmaLink設定を行います。Basic Function>SigmaLink II Settingsをクリックします。
Executeで自動設定し、Save to Flash Memoryをクリックし設定を保存します。
Encoder AllocationにもNode Addressを選択し、Write/Software Resetで設定を書き込みます。
Parameter
次はServoPackのパラメータを変更するには、Basic Functions>Edit Parametersを開きます。
こちらはServoPackのパラメータ設定画面になります。
Reset your Parameters
ServoPackを一旦出荷設定に戻すため、Initializeをクリックしパラメータなどを初期化します。
Upload Parameters
また、Read From Devices>All ParametersをクリックしServoPackのパラメータを読み込むことが可能です。
Change Display Mode
Display SettingにはHierarchyのON/OFF切り替えボタンがあり、その設定をONにするとパラメータの表示を機能に分けて表示することが可能です。
パラメータはよりわかりやすく表示されます。
Position(Pn2xx-)
最初に設定するのはPosition関連のパラメータです。
Pn21D-1
今回使用するSERVOPACKは26Bitのエンコーダなので、Pn21D-1のEncoder ResolutionをA(26 Bit)に設定しましょう。
Function Selection(Pn0xx-)
次は本体の機能設定を行います。
Pn000-0
こちらはSERVOPACKが正回転する、もしくは逆回転するときがForwardになる設定になります。
Pn000-3
こちらはSERVOPACKが実際に接続する機構がRotaryかLinearかを設定するパラメータです。
Pn001-2
SGDXS-2R8AA0Aは単相・三相にも対応できますが、自分が自宅でテストするので基本は単相しかありません。SGDXS-2R8AA0Aを単相で使用する場合、Pn001-2の設定を1に設定する必要があります。
Download Parameters
すべてのパラメータを設定完了したら、Write to Servo>All ParametersでパラメータをSERVOPACKに書き込みましょう。
Jog
SERVOPACKがPOWER ONやFieldbusと繋ぐ前の試運転はOperation>JogをクリックしJog操作することができます。
OKで進みます。
Servo ONでSERVOPACKの電源をONやし、Forward・Reverseボタンでモーターを回してみてください。
Tuning
最後はSigmaWin+ツールでSERVOPACKのAuto-Tuningを行います。
Tuning>Tuningをクリックします。
Executeで進みます。
OKで進みます。
こちらはSERVOPACKのTuning画面です。
Ratio identification
最初にAutoTuningかける前Ratio Identificationを行います。
それらの設定でSERVOを動かすときに機構に影響ないのかを確認し、Next>で進みます。
Startで作業を開始します。
Next>で進みます。
Servo ONでSERVOPACKの電源をONにします。
ForwardでSERVOPACKを前進させます。
BackwardでSERVOPACKを後退させます。そのあとNext>で進みます。
ServoをOFFにします。
最後はWriting Resultsで結果をSERVO アンプに転送します。
少々お待ち下さい…
Autotuning
今度はAutotuningを行います。
Next>で進みます。
こちらはAutoTuningの作業画面です。
Servo ONボタンをクリックしSERVOPACKを電源ONにします。
Done!SERVOPACKの電源がONになりました。
次は”Start Tuning”ボタンでTuningを開始しましょう。
Yesで進みます。
少々お待ち下さい…
Done!最後は”Finish”ボタンをクリックし作業を完了しましょう。
OKで進みます。
少々お待ち下さい…
Erros
Tuningの作業中にはOverTravelアラームが発生した場合、Pn50A-3とPn50B-0のパラメータを8に設定しOverTravel検知を無効するか、もしくはJogでSERVOを適切な位置に移動してください。
Implementation2
先ほどの章でSERVOPACKをSigmaWin+上で立ち上げたと思いますので、次はBeckhoffのTwinCAT3と連携していきます。
YASKAWA Side
上位のControllerから制御したい場合は、まずSERVO MOTORが制御したい機構に沿ってPositionのパラメータを設定しましょう。
Position Setup
今回の記事はSGDXS-2R8AA0Aの取説に沿って設定にしていきます。では、仮にBall Screwの機構がSERVOPACKと接続してるとしましょう。
Pn20E・Pn210のパラメータは671088と6000に設定します。
- 67108864に設定するのはSGDXS-2R8AA0Aと接続されているMOTORにあるエンコーダは26Bitなんです。
- 今回の機構のReference Unitは0.001mmだとします。
- Ball Screwは1回転は6mmで設計されています。
- なので、シャフト1回転あたりの移動距離6 mm/0.001 mm=6000です。
- ここまでわかれば、最後は電子ギア比をアプリケーションに合わせて設定していきます。
- 今回の記事では1:100に設定したいので、電子ギア比=67108864 / 100 = 671088になります。
- Pn20E・Pn210は(Numerator)671088と(Denominator)6000になります。
EtherCAT
次はEtherCAT側の設定を変更するため、EtherCATカタログを開きます。
Pn806/Pn80Aは10000設定します。つまりEtherCAT経由で交換する位置データと速度データを10000倍にScaling します。
Download ESI File
EtherCATスレーブ情報ファイル (XML) を使用してEtherCATマスタを設定することができます。XMLファイルには、サーボパックの設定に関連するEtherCAT通信設定に関する一般的な情報が含まれています。
下記のLinkでSERVOPACKのESI FileをDownloadしてください。
https://www.e-mechatronics.com/download/files/servo/sgmx_coe/
Explicit Device Identification
IDセレクタ(S1、S2)の設定により、サーボパックを識別することができます。IDセレクタ(S1、S2)によるサーボパックの識別方法については、下図を参考にしてください。
Download Parameters
すべてのパラメータを設定完了したら、Write to Servo>All ParametersでパラメータをSERVOPACKに書き込みましょう。
Beckhoff Side
SERVOPACKの設定が完了したら、今度はTwinCAT側を構築します。
Install ESI File
先ほど安川電機HPからDownloadしたESI Fileを下記のPathに格納してください。
C:\TwinCAT\3.1\Config\Io\EtherCAT
Configure EtherCAT Master
EtherCAT Masterを追加するため、I/O>Devices>Add New Itemします。
EtherCAT>EtherCAT Masterを選び、Okで進みます。
こちらはEtherCAT Maseterとして使用したいEthernet Adapterを設定する画面ですが、一旦Noneを選択し、Okで進みます。
Done!EtherCAT Masterが追加されました。
Configure the PCI Bus/Slot
次はEthernet Adapterを設定するため、Compatible Devicesをクリックします。
もし該当するTwinCAT XAEに下図のような画面が表示されれば、TwinCAT RT-ET Ethernet Adaptersをインストールする必要があります。
EtherCAT Masterとして使用したいEthernet Adapterを選び>Installをクリックします。
Installで進みます。
Done!
次はSearchボタンをクリックします。
先程インストールしたEthernet RT Driverを使えるようになりました!
Done!
Scan Network
TwinCATのAuto Scan機能を使用し、ネットワーク内のEtherCAT Slaveを検索します。
NC- Configurationを選択し、OKで進みましょう。
Done!安川電機のSGDXS-2R8AA0A SERVOPACKが追加されました。
MOTION項目にも軸が追加されました。
Configure NC
安川電機のSGDXS-2R8AA0A SERVOPACKを使用するには、先程SigmaWin+で設定したパラメータと合わせる必要があります。
Enc
Encoder設定を行います。
Pn806/Pn80Aは10000設定したので、EtherCAT経由で交換する位置データと速度データを10000倍にScaling されたんですね。
なので、こちらはEtherCATのデータを10000倍にScaling 戻します。
Reference Systemは”ABSOUTE”に設定します。
Drive
次はDriveの設定を行います。
Reference VeloctyはSigmaWin+に合わせて設定します。
Output Scaling はServoPack側で行いますので、TwinCAT3側1.0のままでよいです。
Add PLC Project
PLC>右クリック>Add New ItemでPLCプロジェクトを追加します。
Standard PLC Projectを選び>Addでプロジェクトを追加しましょう。
Done!PLCプロジェクトが追加されました。
Add Library
次はMotion制御のライブラリTc2_MC2を追加するため、References>Add libraryします。
Tc2_MC2ライブラリを追加します。
Add GVL
Global Variables Listを追加するため、右クリック>Add>Global Variable Listします。
Global Variables List名を設定します。
AXIS_REF変数をGVL内で定義しましょう。
Add POU
安川電機のSERVOPACKを制御するためのプログラムを作成します。
今回の記事ではFBD言語を使用します。
Add Empty Box
実際プログラムを説明するまえに、簡単にFBDの操作を紹介します。
基本FBDすべての部品がボックスです。なので、NetworkにInsert Empty BoxもしくはInsert Empty BOX EN/ENOで新しい関数をします。
下図のようなボックスが追加されました。
Function Blockを使用する場合、ボックス内に使用したいFunction Block名を入力してください。
Done!
そしてボックス上には入力項目は該当するFunction BlockのInstanceになります。
Local Variables
こちらはプログラム内のローカル変数になります。
PROGRAM p VAR _MC_Power:MC_Power; _MC_Home:MC_Home; _MC_ReadActualPosition:MC_ReadActualPosition; _MC_ReadStatus:MC_ReadStatus; _MC_ReadActualVelocity:MC_ReadActualVelocity; _MC_MoveRelative:MC_MoveRelative; _MC_MoveAbsolute:MC_MoveAbsolute; _MC_Reset:MC_Reset; _MC_ReadAxisError:MC_ReadAxisError; _MC_ReadParameter:MC_ReadParameter; _MC_ReadAxisComponents:MC_ReadAxisComponents; END_VAR VAR bMCDataOK:BOOL; bReset:BOOL; bMCEnable:BOOL; bMCisEnabled:BOOL; bHome:BOOL; bRel:BOOL; rRelDistance:LREAL:=6.0; rRelVelocity:LREAL:=6.0; rRelAcc,rRelDec:LREAL:=6.0; bAbs:BOOL; rAbsPosition:LREAL:=6.0; rAbsVelocity:LREAL:=6.0; rAbsAcc,rAbsDec:LREAL:=6.0; bReadParameters:BOOL; AxisComponents:ST_AxisComponents; bReadComponents:BOOL; END_VAR |
Network1
こちらはSERVOPACKと通信状態を確認するプログラムです。
Network2
こちらはSERVOPACKの電源ON/OFFを制御するプログラムです。
Network3
こちらはSERVOPACKの電源ON/OFF状態を確認するプログラムです。
Network4
こちらはSERVOPACKの現在速度・現在位置・現在状態を取得するプログラムです。
Network5
こちらは軸のエラー状態と情報を取得するプログラムです。
Network6
こちらは軸の部品情報を取得するプログラムです。
Network7
こちらはSERVOPACKをリセットするプログラムです。
Network8
こちらはSERVOPACKをHomeするプログラムです。
Network9
こちらはSERVOPACKを相対位置決めするプログラムです。
Network10
こちらは相対位置決めの実行コマンドをリセットするプログラムです。
Network11
こちらはSERVOPACKを絶対位置決めするプログラムです。
Network12
こちらは絶対位置決めの実行コマンドをリセットするプログラムです。
Network13
こちらは軸のパラメータを取得するプログラムです。
Link to PLC
次はGVL内で定義したAXIS_REFと軸をLinkするため、Axes>Axisをクリックします。
Settings Tabに”Link to PLC”をクリックします。
プログラム内で使用してるAXIS_REF変数を選び>Okで進みます。
Done!
Active Configuration
Active Configurationをクリックし、一回プロジェクトをRuntimeにDownloadします。
OKで進みます。
OKでTwinCAT RuntimeをRun Modeにソフトします。
Login
LoginでプログラムをDownloadします。
Yesで進みましょう。
Start
最後はStartボタンでRuntimeのプログラムを実行します。
Result
EtherCATでSERVOPACKの電源をONにした場合、SVONが赤色になります。
Beckhoff TwinCAT3のControl PanelからSERVOPACKを動かしたい場合、Axes>Axis 1をクリックします。
ここでSERVOPACKを操作し、TwinCAT3から動作できるかを確認しましょう。
次はプログラムをみると、MC_PowerのFunction BlockがエラーなくSERVOPACKを電源入れました。
現在の位置・速度・状態も確認できます。
軸が正常の場合はErrorIDが0になります。
エラーが発生した場合、軸のErrorIDを確認できます。
軸のパラメータもFunction Block経由で取得できました!
こちらの動画で実際TwinCAT3️とSERVOPACKの制御を確認できます。
Download
こちらのLinkで今回の記事のプロジェクトをDownloadしましょう。