この記事ではPLCNEXTがEthernet/IPのAdapterとして働き、Codesys・TwinCATからConnectionを作成し通信します。TwinCATもCodesysもEDSからの構築とGeneric Deviceからの構築を説明しますので、よろしくお願いします。
PLCNEXT Side
Reference Link
PLCNEXT側はAdapterなので、特に設定がありません。でもいくつか大事な変数があります。注意するのは書き込み不可のSystem変数とTarget自身Outputする変数があり、IEC61131-3 Codeからアプリケーションを組むことができます。
PLANT View>Project>PLCをクリックします。
Data ListのTabを開きますと、EIPから始まる変数がいくつかあります。
Variables
Variable Name | Type | Usage |
EIPD_INPUTS | EIPD_IO_ARRAY(ARRAY[0..127] OF WORD) | EIP ScannerからのInput dataを処理するメモリ領域です。 <consumed data>PLCNEXTのINPUTだと思ってください。 |
EIPD_OUTPUTS | EIPD_IO_ARRAY(ARRAY[0..127] OF WORD) | EIP ScannerにOutputするDataのメモリ領域です。<produced data>PLCNEXTのOutputだと思ってください。 |
EIPD_INPUTS_LENGTH | WORD | EIP Network Input dataサイズです。256Byteで固定。 |
EIPD_OUTPUTS_LENGTH | WORD | EIP Network Output dataサイズです。256Byteで固定。 |
EIPD_VALID_DATA_CYCLE | BOOL | 通信状態を示しています。True=Scannerと接続しデータ交換してる |
EIPD_PEER_RUN | BOOL | Scannerの状態を示しています。True=Scannerと接続しなおかつRunningしてる。 |
EIPD_PEER_IDLE | BOOL | Scannerの状態を示しています。True=Scannerと接続しなおかつStopしてる。 |
Terms
Ethernet/IP通信を確立させるObject(master)PLCやHigh Levelのアプリケーション。今回はCodesysとTwinCATになります。 | Ethernet/IP通信のConnection endpoint(Slave)PLCNEXTになります。 |
originatorscannercontrollerservermaster (deprecated) | targetadapterdeviceclienthostslave (deprecated) |
Testing Program
Point!
Incoming connections使用 port:44818
Outgoing connection使用 port:2222
もしEIPがPLCNEXT Runtimeでうまく動かない場合、Firewall ルールをCheckしてください。Web serverからFirewallを有効にすると、EIPは使用できません。
EDS Download
下記のLinkをアクセスします。
Downloadのところクリックします。
Device DescriptionのところにEDS Fileをダウンロードしましょう。
Analyse
ODVAからEZ-EDSツールをダウンロードします。
そしてEZ-EDSツールを起動し、先にダウンロードしたEDS Fileを開いてください。
Assembly
まずOutput DatatとInput DataのAssem番号をメモしてください。
Output=100、Input=110ですね。
Connection Manager
次はConnection Managerをクリックします。
今回はExlusive Ownerを使用しますので、Connection1 – Class1 Exclusive Ownerをクリックします。
まず上から見ますとTrigger ModeはCyclicだけですね。メモします。
次はConnection Parametersのところに行きます。
O->Tはoriginator->Targetの意味、Master->Slaveです。
- Fixed size support>メモします。
- Real time transfer formatは32Bit run/idle header>メモします。
- Connection TypeはPoint2Point>メモします。
- PrionityはScheduledとHigh>メモします。
T->OはTarget->originatorの意味、Slave->Masterです。
- Fixed size support>メモします。
- Real time transfer formatはConnection is pre data and is modeless>メモします。
- Connection TypeはPoint2PointとMulticast>メモします。
- PrionityはScheduledとHigh>メモします。
Play with Codesys
では、最初はCodesysと接続してみます。CodesysはEDS File Importからの接続とGeneric Deviceの二種類の方法も説明します。
Reference Link
By EDS Files
Insert AXCF 2152
Add DeviceからAXCF 2152を插入します。
よし、AXC_F_2152がAdapterとしてEIPネットワーク内に構成されました。
IP Setup
PLCNEXTのIPに合わせて入力します。
今回は192.168.1.11です。
Connections Setup
次はConnectionの設定です。
Connectionsをクリックします。
DefaultにはExclusive OwnerのConnectionが入っています。
そのConnectionを選び>Edit Connectionします。
いまのConnection Parameterが一覧できます。
IO Mapping
Mappingも忘れずに。EtherNet/IP I/O Mappingsを開きます。
プログラムでBytesの配列を定義します。
最後は必要に応じて割り付けます。
Testing Program
0Byte目と255Byteに与えを書きます。
そしてPLCNEXTからもらったデータをByte反転し、BigとSmallに合わせます。
Vertification
CodesysのプロジェクトをDownloadしたら緑のぐるぐるIcon見えたらもOK。
StatusもAdapter runningが表示されています。
PLCNEXTからのInputデータも見えますね。
PLCNEXT側もみてます。
PLANT VIEW>Project>Your PLCをクリックします。
If Disconnect
もし接続してないときはEIPD_VALID_DATA_CYCLEとEIPD_PEER_RUNがFalseのままですね。
If Connect
CodesysのEIP Scannerと接続するとEIPD_VALID_DATA_CYCLEとEIPD_PEER_RUNがTrueに変わります。
Monitoring
つながりがわかった上で次はデータが正しいかどうかもCheckします。
OutputのほうがOKっぽいですが。
でもInput側が逆になっていますね。
Codesys側で少しプログラムを編集します。
それでByteの順番が合うよりなりました!
By Generic Device
EDS FileからのImportを説明し終わったら今度はGeneric Deviceでやります。
Disable
まず既存のAXC_F_2152をDisableします。
右クリック>Disale Deviceします。
AXC_F_2152が灰色になったらもうDisableされたんです。
Insert Generic Device
次は右クリック>Add Deviceします。
今度はGeneric Ethernet/IP deviceを追加します。
Generic_EtheNet_IP_deviceが追加されました。
Parameter Setup
General>IP AddressをPLCNEXTに合わせて設定してください。
Electrionic KeyingのCheck Match Checkboxを外します。
もしCheckしてるときPLCNEXTのEDS Fileに合わせてVendor IDなども設定する必要あるので、今回はそれをSKIPします。
Connection Setup
Generic Deviceなので、Connectionsのパラメタは自分で入力する必要があります。だから記事の最初にはEDS Fileを分析する部分がありますね。
Connections>Add Connectionsします。
以下のような画面が出てきます。
Connection Path Settingsのところに”Automtically generated path”を選択します。
Connection Path
まずはO>TとT>OのInstane IDを設定します。
Consuming assembly(O–>T)のCheckbox入れ、16#64=100を入力します。
Producing assembly(T–>O)のCheckbox入れ、16#6E=110を入力します。
General Path
次はGeneral Pathの方です。
RPIは実際のアプリケーションに合わせ調整しましょう。
O–>T Sizeは固定256 Bytesです。
T–>O Sizeは固定256 Bytesです。
両方のConnection PriorityもScheduledします。
Scanner to Target(Output)のTransform Formatは32 Bit run/idleします。
Target to Scanner(Input)のTransform FormatはPure dataします。
Result
Projectをダウンロードし、Codeysで緑のぐるぐるICONあればOKです。
Play with TwinCAT
Codesysが終わったところで次はTwinCATから接続してみます。
Reference Link
Point with IP Scanner
TwinCATでIP Scannerを構成するとき注意するいくつかのPOINTを説明します。
Task
Ethernet/IPのIO更新Taskを追加します。
Sync TaskのTabを開き>Special Sync Task>Create new I/O Taskします。
Taskの名前を入力し、OKします。
そのあとはCycle Ticksを調整してください。
IP
Virtual AdapterのIPとNetwork maskの設定は忘れずに。
By EDS Files
では、PLCNEXTのEDS FileをTwinCATにImportしEthernet/IP Connectionを構築してます。
Insert AXCF 2152
I/O>Devices>Device 1を選択します。
右クリック>Import EDS Fileをします。
PLCNEXT EnginnerからExportされたEDS Fileを選び、Importします。
Phoenix Contact>AXC F 2152が選べるようになります。
それでAXC F 2152のEIP Adapterが追加されました。
IP
次はIPを設定します。先追加したEIP Adpaterを右クリック>Change IP Address。
実機のIPアドレスを入れてください。
EIP AdapterのICONがわかります。これでOKです。
Add Connection
次はConnectionを作ります。先ほど作成したAdapterを右クリック>Append IO Connection>Class1 Exclusive Ownerします。
先ImportしたEDS Filesに沿ってConnectionを作成しますか?Yes。
それでConnectionを作成しました。
Link the input variables
Input変数をUser ProgramとLinkします。
Inputsをクリックします。
Ctrl+Aで全部を選んで>右クリック>Change Multi Link..します。
User Programで定義された変数を選び>OK。
Linkされた変数が[X]の列にXがついています。
Link the output variables
Output変数をUser ProgramとLinkします。
Outputsをクリックします。
Ctrl+Aで全部を選んで>右クリック>Change Multi Link..します。
User Programで定義された変数を選び>OK。
Linkされた変数が[X]の列にXがついています。
Test Program
テストプログラムは0番目と255番目に値を書き込むだけのプログラムです。
Result
PLCNEXT側と比較しましょう。
By Generic Device
EDS FileからのEthernet/IP Network構築は説明しましたが、今度はGeneric DeviceからConnectionを設定する方法を紹介します。
Disable
まず先に追加したAdapterを右クリック>Disableします。
小さな赤いマークがついています。それはDisableだと示しています。
Insert Generic Device
次はGeneric EtherNet/IP Slaveを追加します。
これにEtherNet/IP Slave (generic)が追加されました。
IP
同じくVirtual AdapterのIPを設定します。
右クリック>Change IP Addressします。
PLCNEXTの実機のIPに合わせてOKします。
それで設定Okです。
Add Connection
次はまたConnectionを追加します。
右クリック>Append IO Connection>Default(witout eds)します。
これでConnectionが追加されました。
Connection Setup
次はConnectionを設定します。
先に追加したConnectionをダブルクリックします。
Config Instanceなどを設定します。少しわかりにくいかもしれませんが、
Connection PointはInput/OutputのInstance番号になります。
PLCNEXTのCPUdえはInputs Instanceは110で
データ交換のサイズはまた別のところで設定できます。
Add input
Inputsで右クリック>Add New Itemします。
必要に応じてData Type設定します。連続定義の場合はMuitpleのFieldで定義数を入れてください。ここでは256にします。
Add Output
Ouputsも同じく、右クリック>Add New Itemします。
必要に応じてData Type設定します。連続定義の場合はMuitpleのFieldで定義数を入れてください。ここでは256にします。
Link Input variables
User Programの変数とLinkします。Ctrl+Aですべて選択し>Change Multi Link..します。
User Programで定義された変数とLinkします。
Link Output variables
Outputも同じくやってください。
Result
最後はPLCNEXTとTwinCAT両方も確認しましょう。
State
ここでEthernet/IP通信が確立してるかを確認する変数を説明します。
Your Ethernet/IP Adapter>Input>State。
If OK..
もし通信が確立されたら0になります。
If Disconnect..
もし通信が失敗してる状態なら0以外の値になります。