今回の記事ではTwinCAT3がTF6271を使用しProfinet Controllerを立ち上げ、WagoのPFC200(7520-8215)とProfinet 通信を0から説明します。よろしくお願いします。
Video
English Version
Japanese Version
Interface
Wago 750-8215 CPUでは4つのPortがあります。それはX1,X2,X11,X12で内部には5 Port のスイッチが繋がっています。CPU本体は4つのPortですが、5番目のPortはCPUと繋がっています。このX1,X2,X11,X11 4つのInterfaceは以下の設定ができます。
- 1つのNetworkで4つのPortを同じIP を共有する
- 2つのNetworkで2つのPortことに1つのIP を共有する
- 2つのNetworkで1つのPortが1つのIP 、他の3つのPortは1つのIP共有する
- 4つのNetworkで各Portは自分のIPがある
それらの設定はCPUのWeb serverから構築できます。
LED
PROFINET通信状態を示すのはBFとDIA2つのLEDです。BF=Bus Faultの意味で、DIAはProfinet診断情報ありの意味になっています。
Technical Data
Interface Configuration
Wago 750-8215 CPUでは4つのPortがあります。それはX1,X2,X11,X12で内部には5 Port のスイッチが繋がっています。CPU本体は4つのPortですが、5番目のPortはCPUと繋がっています。このX1,X2,X11,X11 4つのInterfaceは以下の設定ができます。
- 1つのNetworkで4つのPortを同じIP を共有する
- 2つのNetworkで2つのPortことに1つのIP を共有する
- 2つのNetworkで1つのPortが1つのIP 、他の3つのPortは1つのIP共有する
- 4つのNetworkで各Portは自分のIPがある
それらの設定はCPUのWeb serverから構築できます。
Network Structure
以下はCPU Portの構造です。注意するのはCommissioningとProfinet Networkを分けるほうが便利です。X1,X2はEthernet interfaceとしてエンジニアリングツールとつながるとか、X11,X12はProfinet通信専用にわけたほうがよいと思います。
MAC ID And IP Assignment
これからInterfaceとIPの設定を行います。Web Serverにアクセスします。
Ethernet Configuration
Networking>Ethernet Configuration>Configurationをクリックします。
この画面は各PortはのBridge設定を行うことでき、設定完了したらSubmitボタンでOKです。
Configuration1
X1,X2,X11,X12の4つPortもBridge1に緑が設定されます。つまり4つのPortも同じIPを共有します。
Configuration2
X1,X2はBridge1に設定し、X11,X12はBridge2に設定します。
つまりX1,X2は一つのIPでX11,X12はまた別のIPを共有します。
Configuration3<Using in this Profinet>
X1はBridge1、X2はBridge2、、X11,X12はBridge3に設定します。
つまりX1,X2は別のIPで、X11,X12は同じIPを共有しています。
こちらは今回の設定です。
Configuration4
各のPortm自分だけのIPあるの設定できます。
TCP/IP Configuration
次はIPを設定します。Networking>TCP/IP Configuraton>Configurationをクリックします。
TCP/IP ConfigurationのFieldで三角ボタンで設定画面を展開します。
設定したBridge数によりbr0,br1,br2などを別々に設定できます。
Profinet Interfaceだと設定されたBridgeはIPなどもProfinet上位Controllerに上書きされるので気をつけてください。
Implementation
Configuration
こちらは今回の構成です。Beckhoff TwinCAT3がTF6271を使用しProfinet Controllerを立ち上げ、そしてWago Controllerの750-8215がProfinet Devicsを構築しProfinet Real-Time通信します。
Wago Side
まずWago側から始めます。
Interface
X1/X2は別のIPで、X11,X12のProfinetは同じIPを持つようにします。
E!COCKPIT からProjectをDownloadなどするときはX1,X2を使ってください。
Configure The PN-Controller
E!COCKPITをNetworkに切り替えます。
右側のProduct CatalogからProfinetを検索し>Generic_PROFINET_Controllerを選び、Networkに引っばり追加します。
PROFINET Controllerが追加されました。
Profinet ControllerをWago CPUに接続します。
いまProfinet Networkが立ち上がりました。
下図のような操作です。
Create the Mapping
Profinet Networkが構築OKになったら次はI/O Mapping を設定します。CPUをダブルクリックし、PROFINET I device Tabを開きます。
右クリックし>Add+ボタンで新しい変数を追加します。
Input/Outputも自動的に追加されました。この変数は実際Profinet通信でデータ交換する変数になります。
Data Typeの列に変数のData Typeを変更できます。
配列を設定します。隣にLength(arrary)の列も入力できるようになります。今回のTutorialでは長さ40に設定します。
Variableのところにあるのは実際プログラムで使用するPN IOの変数名です。
Export GSDML
Profinet通信はGSDML FileをController側にImportする必要があります。
NETWORK FUNCTIONS>PROFINET I DEVICEのTabをクリックします。
Exportボタンをクリックします。
Export先を設定しGSDMLを生成します。
Program
Exportも終わり、次はテスト用のプログラムを作成します。
Program Structureをクリックします。
Default にあるPLC_RPGをクリックします。
以下のようにBytesの配列を作成し、User Programの中に使用します。前もいったかもしれませんが、Codesys は該当する変数をプログラム内で使わないと更新しないのです。
Download
最後はNETWORK FUNCTIONS>NETWORK>ConnectでProjectをCPUにDownloadします。
LED Status
いまの状態ではBFとDIAも赤くなっているはずです。
TwinCAT3 Side
Wago側が終わったところで次はTwinCAT3側です。
Add PN Controller
TwinCAT3起動し>新しいプロジェクト作成>I/O>Device>右クリック>Add New Itemします。
Profinet I/O Controller(RT)を選び>Okします。
Profinet ControllerにするEthernet Interfaceを選び>Okします。
そしてProfinet Controllerが追加されました。
Sync Task
Sync TaskのTab開き、Special Sync Taskを選び>Create new I/O Taskをクリックします。
Task名を入力しOKします。
TaskのCycle TimeをBase 2のように調整してください。
2,4,8,16…のよう。
自分はUSB>LANのAdapterを使用するのでサイクルを遅め128msに設定します。注意するのはProfinet通信のCycle TimeはControllerによって代わり、設定上では最速SendClockFactorは1msだと設定できます。
PN Controller IP
次はSettings Tabを開いてIP Configurationを設定し”Set IP settings”で確定します。注意するのはこのIPは自分のEthernet Interfaceとかぶらないように設定してください。
Adapter
最初にも設定しましたが、念のためにEthernet Interfaceの設定がOKかもう一回確認しましょう。
Add PN Devices
これからWagoのPN Devicesを追加します。
先ほど追加したPN Controllerを右クリック>Add New Itemします。
Miscellaneous>PROFINET IO Devices>Okします。
E!COCKPITからExportされたGSDMLを選び>Openします。
それでWagoのPN Devicesがついあk
Configure- Legacy config
もし使用するTwinCAT Runtime Version 4024以下ならこのCheckboxを入れてください。
y
Configure – IP
PN DevicesのIPです。ProfinetはController(今回はTwinCAT3)から各Devices(今回はWago 750-8215)に振り分けます。IPを実際のアプリケーションに合わせて設定してください。
Configure-Device name
ProfinetはController(今回はTwinCAT3)から各Devices(今回はWago 750-8215)に振り分けると言いました。その振り分けの基準はそのDevices Nameです。
Configure-Mapping
次はMappingですね。
Add PLC
PLC>右クリック>Add New Itemします。
MAIN
Wago側で定義したByte 配列をProcess IOとして定義し、プロジェクト内で使用します。
Build
Build>Build Solutionでコンパイルします。
Link the Variables
最後はUser Program内の変数とProfinet IOの変数と紐付けます。
Inputs
Inputsをクリックします。
Ctrl+AでProcess Inputを全選択>右クリック>Change MultiLinkします。
User Programで定義したProcess Inputを選び>OKします。
[X]の列にXがついておけばOKです。
Outputs
次はOuputsです。Outputsをクリックします。
Ctrl+AでProcess Outputを全選択>右クリック>Change MultiLinkします。
User Programで定義したProcess Outputを選び>OKします。
[X]の列にXがついておけばOKです。
Download
Configurationが終わったらActivate ConfigurationでHardware configurationをRuntimeにDownloadします。
OKします。
TwinCAT RuntimeをRunにしますか?OKします。
LoginでProgramをDownloadします。
YESします。
StartでRuntimeをRunにかけます。
Summary
ここからは簡単なまとめになります。
GSD
まずはGSDML Fileです。ProfinetネットワークでPN DevicesにするのはWagoの750-8215 CPUなので、E!COCKPIT からGSDMLをExportし、TwinCAT3側にImportします。
Device Name
Profinetで一番大事なDevice NameではE!COCKPIT側はStation Nameの項目で設定できます。TwinCAT3側のI/O>Devices>PN Controller>あなたがGSDML Fileを使用しImportしたDevicesになります。
Mapping
Mappingでは、E!COCKPIT側のPROFINET i-Device Tabで設定します。ExportしたGSDML がTwinCAT3側にImportしたらSubTermとして反映します。
IP
最後にTwinCAT3側はIP addressの項目でIPをDevice Nameに沿って各Deviceに振り分けます。
Result
では実際の通信結果を見てみましょう。まずTwinCAT3のProfinet Controllerをクリックします。
Scan PNIO Devicesをクリックします。
しばらくします…
ネットワーク上のProfinet機器を全部検索し、なおかつDevice Name・IPを設定する機能もあります。いまの結果はplc200-xxxはWagoのCPUでIPもPN Controller(TwinCAT3)から勝手に振り分けています。
Turn it to Run
最後はRunボタンでWago CPUをRunにかけます。
通信正常であれば、BFが緑になり、DIAはOFFになります。
Check in Wago Side
ではWago側をCheckしましょう。E!COCKPITを開くとPROFINET がいまRunning中で、緑がついてます。
Check in TwinCAT3 Side
TwinCAT3側ではPN Controller>Inputs>の3つの変数があり、PN Controllerの状態を示しています。いま3つとも0なんでエラーなしです。
さらにPN Devices>Inputsを開くと、各PN Devicesの細かい状態も確認できます。
いまはPnioBoxState=0,PnioBoxDiag=2になっています。
2=IOCC-AR is establishedの意味で、接続OKです!
Variables Check
最後にTwinCAT3側とWago側も現在値を書き込んでみて、データがちゃんと送信されたかをCheckしましょう。
まずはWagoからデータが来ていますね。
次はTwinCAT3からデータが来たかを見てみましょう。
よし、TwinCAT3からもきましたね!
最後に、WiresharkにもPNIOのPackageがあります。
お疲れ様でした!
If the connection is not Established..
もしどうしもつながらないであれば、
- GSDML が正しいか
- そのGSDMLは実機のPN DevicesとVersionあっているか
- I/O>Devices>Add New Itemの画面正しいProfinet I/O Controller選んでたか
- PN ControllermのTask設定大丈夫か
- Cycle Timeは2-Baseなのか?1,2,4,8,16…