この記事ではTF6280を使用しTwinCAT上でEthernet/IPのAdapterを立ち上げ、そして三菱のIQ-RモジュールRJ71EIP91と通信させます。TF6280は multicast とbroadcast もSupportしております。
TF6280は最大8個までのAdapterを構成することが可能です。
TwinCAT Side
Insert the Adapter
I/O>Devices>Add New Itemします。
Ethernet/IP>Ethernet/IP Adapter(Slave)を選び>OKします。
EIP Adapterが追加されました。
次は追加されたEIP Adapterをクリックし>AdapterのTabを開いて、ScannerとつながってるNetwork Cardを設定します。
Wiresharkも使用しますので、Promiscuous ModeをEnableします。
If Blue Screen..
もしRT Driverインストールするとき青い画面が出たら以下のLinkを参考にしてください。
Configure the Virtual Slave
次はVirtual Slaveを構成します。
EIP Adapterを選び>右クリック>Add New Itemします。
TC EthernetNet/IP Salveを選び、Okします。
それでVirtual Slaveが追加されました。
IP Setup
各Virtual SlaveにもIPの設定が必要です。先ほど追加したVirtual Slaveをクリックします。
Settings>Index8000:0のところで8000:21のIPと8000:22のNetowrk Maskを設定してください。
Insert IO Assembly
次はAssemblyを追加します。Virtual Slaveを右クリック>Append IO Assemblyします。
Assembly 1が追加されました。
Insert the Instance
今度はInput/OutputのInstanceを追加します。
まずはInputからです。Assemblyで右クリック>Add New Itemします。
Name:Variable名
Data Type:変数のデータ・タイプを設定する
Multipe:何個データを追加するか。
最後はOKで確定します。
Input変数が追加されました。
Outputも同じく。Outputs右クリック>Add New Itemします。
Name:Variable名
Data Type:変数のデータ・タイプを設定する
Multipe:何個データを追加するか。
最後はOKで確定します。
Link the variables
TwinCATではIOをプログラムの変数と接続しないと更新しませんので、
変数を右クリックでChange Linkしプログラム変数とLinkしてください。
\
一気に選択し右クリックして、Change Mulit Linkします。
選択した変数のデータサイズとプログラムが一致すれば、設定できます。
Outputも同じくChange Mulit Linkしプログラム変数と接続してください。
Instance Information
SettingsのところでInstanceの細かい設定が一覧可能です。
EDS File Export
次はEDS fileをExportします。Virtual Slaveを右クリック>Export EDS Fileします。
EDS Fileを作成しますか?
YesならこのVirtual Slave専用のEDS Fileにします。
Noなら一般汎用のEDS Fileにします。
ちなみに今回はYesとします。
そして保存先を設定します。
Mitsubishi Side
IQ-R CPUのEIPモジュールは詳しくこの記事をみてください。
そして今回EIPのAdapterを構成するには2つの方法があり、直接のEDS読み込みとGeneric EDS構成方法です。
Method1 use the EDS Files
Install the EDS File
EIP Toolsを起動し、EDSをインストールします。
Next>します。
Browseします。
EDS Fileを選択し、Openします。
Nextします。
これでOKです。
LibraryではBeckhoffのAdapterが追加されました。
Config the Scanner
そのあとはEIPモジュールにそのAdapterをぶら下げ、ConfigurationをダウンロードすればOKです!
Method2 Directly Enter the Instances
次は直接Instance番号をManualで入力しAdapterを構成します。
Method2.1 Configure the Generic EDS
右にあるGeneric EDSをDropします。
IPをVirtual SlaveのIPに設定します。
ConnectionsのTab開きます。
Mitsubishi Side | Beckhoff Side |
Input Size | Input Size(T->O)=32 |
Intput Instance | Input Instance(T->O)=129 |
Output Size | Output Size(T->O)=32 |
Output Instance | Output Instance(T->O)=130 |
Configuration Instance | Configuration Instance=128 |
But?
でも繋がりません。繋がりません。なんで?
仕方なくWiresharkを開いてみたらConnection Failureが見えてきました。
このPackages見ますと、Invaild O->T Priorityのエラーメッセージが見えましたね。
Download EZ-EDS Tools
一回EDS Fileをばらして見てみましょう。
ODVAにはEDS FileをDecodeするツール無料Downloadできます。
https://www.odva.org/subscriptions-services/software/ez-eds-download/
Check EDS
TwinCATからExportしたEDS Fileを開いてConnection1 – Assembly 1:Input and Outputs(Exclusive Owner)を見てみます。O->Tなので。
O->TとT->O両方もSCHEDULEDだけですね。Generic EDSではむりかもしれませんね。
Method2.2 Configure the Advanced Generic EDS
では、Advnaced Generic EDSします。
同じくVirtual SlaveのIPを設定します。
ConnectionのTabを開きますと、GeneralのところにT->OのPriority設定できます。
ここでScheduledにします。
Configuration SettingsのところにもInstanceに合わせて設定します。
Program
今回はWriteもしますので、両方のFunction BlockもProjectに追加してください。
VAR
VAR fbClass1GetInputData M+RJ71EIP91_Class1GetInputData_00A fbClass1SetOutputData M+RJ71EIP91_Class1SetOutputData_00A END_VAR |
Code
//Start the EIP Request IF NOT EIP_0010_StartReq THEN EIP_0010_StartReq:=TRUE; END_IF; //Read CIPIO From Conneciton1 fbClass1GetInputData( i_bEN:= TRUE ,i_stModule:= EIP91_1 ,i_uConnectionNo:= 1 ,o_bENO=> M0 ,o_bOK=> M1 , o_bErr=> M2 ,o_uErrId=> D0 ,o_uStatusId=>D2 ,o_uInputData=> D10 ); //Write CIPIO to Connection1 fbClass1SetOutputData( i_bEN:= TRUE ,i_stModule:= EIP91_1 ,i_uConnectionNo:= 1 ,i_uOutputData:=D100 ,o_bENO=> M3 ,o_bOK=> M4 ,o_bErr=> M5 ,o_uErrId=> D4 ,o_uStatusId=> D6 ); |
Result
AssemblyのConnStateが0になれば、接続成功です。
CIP I/OのPackageが見えました!
プログラムにもエラーなし。
データ交換もできました。
Finally
もしInvalid produced or consumed application Pathにエラーがでれば、もう1度Instance番号など確認してください。