PLCNEXT#Communicate with TwinCAT/Codesys By Ethernet/IP

この記事ではPLCNEXTがEthernet/IPのAdapterとして働き、Codesys・TwinCATからConnectionを作成し通信します。TwinCATもCodesysもEDSからの構築とGeneric Deviceからの構築を説明しますので、よろしくお願いします。

PLCNEXT Side

Reference Link

PLCNext#PLCNEXT Engineer Download/Installation
PLCNEXT#First Project with Local variables
PLCNEXT#Communicate with Beckhoff TwinCAT PN Devices
PLCNEXT#Programming with Extermal IOs
PLCNEXT#Communicate with Beckhoff OPCUA Client

PLCNEXT側はAdapterなので、特に設定がありません。でもいくつか大事な変数があります。注意するのは書き込み不可のSystem変数とTarget自身Outputする変数があり、IEC61131-3 Codeからアプリケーションを組むことができます。

PLANT View>Project>PLCをクリックします。

Data ListのTabを開きますと、EIPから始まる変数がいくつかあります。

Variables

Variable NameTypeUsage
EIPD_INPUTSEIPD_IO_ARRAY(ARRAY[0..127] OF WORD)EIP ScannerからのInput dataを処理するメモリ領域です。
<consumed data>PLCNEXTのINPUTだと思ってください。
EIPD_OUTPUTSEIPD_IO_ARRAY(ARRAY[0..127] OF WORD)EIP ScannerにOutputするDataのメモリ領域です。<produced data>PLCNEXTのOutputだと思ってください。
EIPD_INPUTS_LENGTHWORDEIP Network Input dataサイズです。256Byteで固定。
EIPD_OUTPUTS_LENGTHWORDEIP Network Output dataサイズです。256Byteで固定。
EIPD_VALID_DATA_CYCLEBOOL通信状態を示しています。True=Scannerと接続しデータ交換してる
EIPD_PEER_RUNBOOLScannerの状態を示しています。True=Scannerと接続しなおかつRunningしてる。
EIPD_PEER_IDLEBOOLScannerの状態を示しています。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をアクセスします。

https://www.phoenixcontact.com/ja-jp/products/controller-axc-f-2152-2404267

Downloadのところクリックします。

Device DescriptionのところにEDS Fileをダウンロードしましょう。

Analyse

ODVAからEZ-EDSツールをダウンロードします。

そしてEZ-EDSツールを起動し、先にダウンロードしたEDS Fileを開いてください。

https://www.odva.org/subscriptions-services/software/ez-eds-download/

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

Codesys#EtherNet/IP IP Scannerとして使う
Codesys#EtherNet/IP Adapterとして使う

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以外の値になります。

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

シェアする

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

フォローする