今回の記事ではHMSのAB7689-F CC-Link Slave/EtherCAT Slave Gatewayの立ち上げを紹介します。CC-LINK MasterではIQ-RのRJ61BT11で、EtherCAT MasterではBeckhoff TwinCAT3になります。
さ、はじめよう。
Reference Link
AB7689-F?
AB7689-Fは、EtherCATシステムとCC-Link システムを接続することができるGatewayです。Anybusゲートウェイは、異なる産業用ネットワーク間の信頼性、安全性、高速データ転送を保証します。
CC-Link Slave Interface
X-gateway用CC-Linkスレーブ・インターフェースは、電気的に絶縁されたCC-Linkインターフェースを実装しています。このインターフェースはスレーブ・デバイスとして動作するため、CC-Linkマスターからのアクセスは可能だが、自ら通信を開始することはない。
データは以下のように2つのバッファを介してやり取りされる:
- Input Buffer
このバッファは、他のネットワークから転送されたデータ、つまりCC-Linkマスターが読むことのできるデータを保持する。 - Output Buffer
このバッファはもう一方のネットワーク、つまりCC-Linkマスターが書き込み可能なデータに転送される。
Features
CC-Link Slave側に下図の機能があります。
- オンボード・コンフィギュレーション・スイッチ
- CC-Link v1およびv2をサポート
- 最大8回のextension cycles
- 各方向最大128I/O点(ビット)、16I/Oワード(16ビット)(CC-Link v1)
- 各方向最大896I/O点(ビット)、128I/Oワード(16ビット)(CC-Link v2)
- 156kbpsから10Mbpsまでのボーレートをサポート
- トランスペアレントCC-Link通信(標準モード)
- PLCプロファイル準拠通信(PLCプロファイルモード)
Status LED
こちらはCC-Link Slave側のLED状態です。
Connectors & Switches
こちらはCC-Link Slaveの設定スイッチとConnector図です。
Station No.
Stationは1-64まで設定できます。
Baud Rate
ボーレートには下記のように、スイッチ経由で設定できます。
CC-Link Connector
こちらはCC-Link Connectorの配置です。
EtherCAT Slave
Anybus X-gateway用EtherCATスレーブインターフェースはEtherCAT上でCANopenを実装し、各方向で最大512バイトのデータを交換します。
インターフェースはスレーブノードとして動作します。つまり、EtherCATマスタからアクセスすることができますが、自ら通信を開始することはありません。
インターフェイスは、以下のように2つのバッファを通してデータをやり取りする:
- Input Buffer
このバッファは他のネットワークから転送されたデータ、つまりEther-CATマスタが読み出すことができるデータを保持します。 - Output Buffer
このバッファは他のネットワークに転送され、EtherCATマスタで書き込み可能なデータであります。
Features
EtherCAT Slave側に下図の機能があります。
- CANopen over EtherCAT
- 各方向に最大512バイトのサイクリック・データ(PDO)
- 各方向に最大512バイトのアサイクリック・データ(SDO)
Status LED
こちらはEtherCAT Slave側のLED状態です。
Connectors and Switches
こちらはEtherCAT SlaveのPort です。
Mapping
Implementation
CC-Link Map
こちらはCC-Link V1.10とV2,0の仕様です。
https://www.mgco.jp/magazine/plan/mame/b_network/0502/
Anybus Side
HMS Gateway側から構築します。
Install Tools
下記のLinkからAnybus Configurator ManagerとAnybus Transport ProviderをDownloadしてください。
Tool-Installation Anybus Transport Provider
Anybus Configuratorをインストールする前に、こちらのAnybus Transport Providerをインストールしましょう。
Next>で進みます。
ライセンスに同意し、Next>で進みます。
インストールするLocationを設定し、Next>で進みます。
インストールを始めます。
少々お待ち下さい。
USB Driverもインストールしておいてください。
Done!
Tool- Installation Any bus Configuration Manager
次はHMSのAny bus Configuration Managerをインストールしましょう。
Next>で進みます。
ライセンスに同意し、Next>で進みます。
インストールするLocationを設定し、Next>で進みます。
Next>で進みます。
Shortcutを作成、Next>で進みます。
インストールを始めます。
Done!
Configuration
Anybus Gatewayを起動し、Gatewayを設定します。
こちらはAny bus Configuration Managerの画面です。
Select Connection
Online>Select ConnectionでPCとモジュールの接続インタフェースを設定します。
USB接続を選び>Okで確定します。
Connect
モジュール本体にあるUSB PortとPCを接続します。
Online>ConnectでPCとモジュールを接続しましょう。
Done!
Upload Configuration
Online>Upload Configurationでモジュールの設定をアップロードしましょう。
少々お待ち下さい…
Done!
Any bus Configuration ManagerにはCC-Link SlaveとEtherCAT Slaveが表示されます。
Configure-CC-Link Side
CC-Link側を設定します。
今回は4局・Version1・Standard System Modeの設定で行います。
Configure-EtherCAT Side
次はEtherCAT Slave側を設定します。Input PDOとOutput PDOを最大の512 Bytesの設定にします。
Download Configuration
最後はOnline>Download Configurationで設定をモジュールにDownloadしましょう。
少々お待ち下さい…
Done!
GXWorks3 Side
New Project
GXWorks3 を起動し、Project>Newで新規プロジェクトを起動します。
今回記事で使用するRCPUを選び、Okで進みます。
Done!新規プロジェクトが作成されました。
Check Connection
次はPCとCPUの接続設定を行います。
Connectionをクリックします。
Connection TestでUSB接続を確認します。
Done!
Module Configuration
次はModule ConfigurationでHardware Configurationを設定します。
Default上でRCPUしかありません。
R35B
R35B Slots Moduleを追加します。
Done!
Install CPU
次はR00CPUをCPUに移動します。
Done!CPU Slotが設定されました。
R61P
次は電源モジュールR61Pを追加します。
Done!
Add RJ61BT11
最後は今回の記事で使用するCC-Link モジュール RJ61BT11を追加します。
Done!
Check Parameter
Tools>Check ParameterでモジュールのパラメータをCheckします。
Configure RJ61BT11
今度はRJ61BT11を開きます、モジュール設定を行います。
こちらはRJ61BT11の設定画面です。
Network Configuration
Basic Setup>Network Configuration Setup>CC-Link Configurationを開きます。
CC-Link Configuration画面が表示されます。
General CC-Link Module>General Remote Device Stationをネットワークに追加します。
Done!
Versionを1に設定し、STA Occupiedを4に設定しましょう。
Mode SettingをVer.1 Modeで、Tx Speedを10Mbpsに設定しましょう。
CC-Link Configuration>Close with Reflecting the Settingで設定を保存します。
Checkボタンでパラメータを確認し、Applyで設定を保存しましょう。
Reflesh Setting
次はIOデータの更新設定を行うため、Link Reflesh Settingsをクリックしましょう。
下図のように4局の設定に合わせて設定します。
Module IO
次はRJ61BT11のモジュールIOを確認します。Module Information>0040:RJ61BT11が表示され、RJ61BT11のモジュールIOはXY40から始まります。
Program
最後は簡単なプログラムを作成します。
Downlaod to PLC
Write to PLCでプロジェクトをCPUにDownloadしましょう。
ExecuteでプロジェクトをDownload始まりましょう。
少々お待ち下さい…
TwinCAT3 Side
最後はTwinCAT3側を設定します。
New Project
File>New>Projectで新規TwinCAT3プロジェクトを作成します。
TwinCAT XAE Projectを選び>OKで進みます。
Install ESI
下記のLinkでESI FileをDonwloadしてください。
ESI Fileを下記のPathで格納しましょう。
C:\TwinCAT\3.1\Config\Io\EtherCAT
TwinCAT>EtherCAT Devices>Reload Device DescriptionでEtherCAT Slave Fileを再ロードします。
Add EtherCAT Master
EtherCAT Masterを追加するため、I/O>Devices>Add New Itemをクリックします。
EtherCAT>EtherCAT Masterを追加します。
Done!
IPCで使用するEtherCAT Driverを設定します。
Scan Network
TwinCAT3の自動Scan機能を使ってEtherCAT Slaveを検索します。
Done!Anybus Gatewayが見つかりました。
先ほどAny bus Configuration Managerで512Bytesの入出力データを設定しましたので、Process DataのTabにも同じように反映されます。
TxPDOにRxPDOにも反映されました。
Add PLC
PLCを追加するため、PLC>Add New Itemします。
Standard PLC Projectを追加します。
Add GVL
Anybus GatewayとMappingするIOを定義するため、GVLs>Add>Global Variable Listを追加します。
GVLを追加します。
下図のようにProcess IOデータを定義します。
Function Block
次は簡単なFBを作成します。
FB_ONOFF
こちらはqONをiSetTime値によって繰り返しON/OFFします。
FUNCTION_BLOCK FB_ONOFF VAR_INPUT iTrigger:BOOL; iSetTime:REAL; END_VAR VAR_OUTPUT qON:BOOL; END_VAR VAR TON:TON; TON1:TON; _iSetTime:DINT; END_VAR TON.PT:=DINT_TO_TIME(REAL_TO_DINT(iSetTime)*1000); TON1.PT:=DINT_TO_TIME(REAL_TO_DINT(iSetTime)*1000); TON.IN:=iTrigger AND NOT TON1.Q; TON1.in:=iTrigger AND TON.Q; TON(); TON1(); qON:=TON.Q; |
MAIN
最後は通信領域にデータを書き込み、通信確認を行います。
PROGRAM MAIN VAR FB_ONOFFs:ARRAY[0..1]OF FB_ONOFF; RY_First,RY_Last:BOOL; _temp:INT; Ww_First,Ww_Last:INT; _temp2:INT; END_VAR //RX First Input //D0.0 in IQ-R Side FB_ONOFFs[0](iTrigger:=TRUE ,iSetTime:=1.1 ); GVL.OutputData[0][0].0:=FB_ONOFFs[0].qON; //RX Last Input //D7.F in IQ-R Side FB_ONOFFs[1](iTrigger:=TRUE ,iSetTime:=2.2 ); GVL.OutputData[0][15].7:=FB_ONOFFs[1].qON; //RX First DM //D20, no need to swap GVL.OutputData[0][16]:=16#12; GVL.OutputData[0][17]:=16#34; //RX Last DM //D35, no need to swap GVL.OutputData[0][46]:=16#AB; GVL.OutputData[0][47]:=16#CD; //RY,First Coil //D10.0, no need to swap RY_First:=GVL.inputData[0][0].0;//RY,First Coil //D17.F, no need to swap RY_Last:=GVL.inputData[0][15].7; //RX First DM //D40, no need to swap _temp:=GVL.inputData[0][16]; _temp2:=SHL(_temp,8); Ww_First:=GVL.inputData[0][17]+_temp2; //RX Last DM //D55, no need to swap _temp:=GVL.inputData[0][46]; _temp2:=SHL(_temp,8); Ww_Last:=GVL.inputData[0][47]+_temp2; |
Build Solution
Build>Build Solutionでプロジェクトをコンパイルします。
Link Input
Process InputデータとMappingするために、Box1>TxPDOをクリックします。
すべて選択し>右クリック>Change Mulit Linkをクリックします。
先ほど定義したProcess Inputを選びましょう。他のProcess Inputも同じ操作でMappingしてください。
Link Output
Process OutputデータとMappingするために、Box1>RxPDOをクリックします。
すべて選択し>右クリック>Change Mulit Linkをクリックします。
先ほど定義したProcess Outputを選びましょう。他のProcess Outputも同じ操作でMappingしてください。
Activate Configuration
Activate ConfigurationをクリックしHardware ConfigurationをTwinCAT RuntimeにDownloadします。
Okで進みます。
OKでTwinCAT RuntimeをRun Modeに設定します。
Login
LoginでプログラムをDownloadします。
Yesで進みます。
Start
StartでRuntimeを起動します。
Result
最後は通信確認しましょう。
現在Anybus GatewayのOperation StateはOPです。
次はWcState変数からデータの有効性を確認します。
現在は0なので、データは有効です。
GXWORKS3側にもエラーないんです。
Diagnostics>CC-Link Diagnosticsをクリックします。
現在RJ61BT11とAnybus Gatewayの間は通信正常です。
TwinCAT側にの出力データもRXなどに受信できました。
TwinCAT側にの入力データもRYなどに受信できました。
CC-LinkモジュールとAnybus モジュールにもエラーはないです。