この記事では、Beckhoff TwinCAT3のTF6281 Ethernet/IP ScannerとRockwell PLCのEthenret/IP Scanner間で非同期通信する方法の構築を1から説明します。
Rockwell側は古いPLCを使用していますが、新しいデバイスも同じ思想です。
今回はRockwell側で主導的に関数を実行し、非同期通信を行います。
さ、FAを楽しもう!
MSG Instruction?
MSG 命令は、非同期でデータ・ブロックをネットワーク上の別のモジュー ルに読み書きします。ラダー図では、命令が実行されるたびに rung-condition-in をクリアからセットに切り替えます。
Time chart
こちらはMSG関数のタイムチャートです。
Timer On Delay (TON)?
TON命令は非保持型タイマーであり、命令が有効(rung-condition-inがtrue)であるときに時間を蓄積します。タイマーは、現在の時刻から最後にスキャンした時刻を引くことで動作します:
ACC = ACC + (current_time – last_time_scanned)
Time Chart
こちらはTONのタイムチャートです。
Implementation1-CIP Read Table
Beckhoff Side
ConsumedタグやProducedタグと同様に、この機能は2つのEtherNet/IPコントローラ間の通信に使用されますが、非周期的な通信である点が異なります。これにより、パラメータ、レシピ、その他のデータなど、サイクリックに送信する必要のないデータを2つのコントローラ間で交換できます。
データは構造体、配列、またはその両方を組み合わせることができます。TwinCATでは、コントローラからデータを読み込んだり、コントローラに書き込んだりすることができ、リモートコントロールを使用してTwinCATからデータを読み書きすることも可能です。
注意点としては:
- このサービスで送受信されるデータは、TwinCATシステムで既知でなければなりません。
- このデータは、グローバル変数としてETHIPフォルダとフラグ領域に格納されなければならない。
- ライブラリTc2_EthernetIPも含める必要があり、DataTableの読み書き用のファンクション・ブロックが含まれています。
- データ型は両方の PLC で一致していなければならない。
Configure Etherent/IP Network
TwinCAT3側でEthenret/IP ネットワークを構築します。
Add Ethernet/IP Scanner
Ethernet/IP Scannerを追加するため、I/O>Devices>Add New Itemします。
Ethernet/IP>Ethernet/IP Scannerを選び>OKします。
Done!Ethernet/IP Scannerが追加されました。
Configure Ethernet Adapter
AdapterのTabを開き、Serachボタンをクリックし現在TwinCAT Runtime稼働してるPCに使用できるEthernet Adapterを検索します。
適切なInterfaceを設定し、OKで進みます。
Configure Task
次はEthernet/IPの同期Taskを設定するため、Sync TaskのTab開>Special Sync Task>Create New IO Taskをクリックします。
Task名を入力します。
Done!
Configure IP Address
TwinCATのEthenret/IP Scanner IPアドレスを設定します。Settings>IP AddressとNetwork Maskをアプリケーションに合わせて設定しましょう。
Done!
Add GVL
Global Variables Listを追加し、GVL名をETHIPに必ず設定してください。
すべての変数は固定アドレスを持ち、フラグ・エリア(%MBx, x アドレス)内に定義する必要があります。
Add Library
CIP Table通信用のライブラリを追加するため、References>Add Libraryします。
Tc2_EthernetIPを追加してください。
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Configure CIP Table
次はEthenret/IP ScannerのCIP Tableを確認するため、TC3 EIP Scannerをクリックします。
Explicit Message Listをクリックします。
先程ETHIPのGVLで定義した変数が表示されました。
Read/WriteのCheckboxをアプリケーションに合わせて必ず設定してください。
Activate Configuration
Activate CofigurationでHardware ConfigurationをTwinCAT RuntimeにDownloadします。
OKで進みます。
TwinCAT RuntimeをRun Modeに切り替えます。
Login
LoginでプログラムをDownloadします。
Yesで進みます。
Start
最後あhStartボタンでTwinCAT Runtimeを起動しましょう。
Rockwell Side
TwinCAT側が構築完了したら次はRockwell PLCを設定します。
Add New Module
Hardware ConfigurationにTwinCAT3の接続を作成するため、仮のRockwell Controllerを追加します。LocalENB>右クリック>New Moduleします。
RockwellのCPUを追加します。型式はなんでもよいので、今回の記事では1756‐EN2Tを設置します。
Done!
CPU Name
先ほど追加したCPUがわかりやすいように、CPU名をTC3(TwinCAT3)に設定します。
IP Address
IPアドレスをTwinCAT3側に合わせて設定してください。
Module Definition
次はModuleの設定を行うため、Changeをクリックしてください。
今回の記事はあくまでもTwinCAT Ethernet/IP Scannerを”Rockell”のPLCとして見せかけますので、Electronic KeyingをDisable Keyingし、Rack Connection とTime Sysnc ConnectionをNoneにしていきましょう。
Add New Local PLC
先程追加した”Rockwell PLC”を右クリック>New Moduleで新しいモジュールを追加します。
ここも適当なRockwell PLCでよいので、今回の記事では”1756‐L61”に設定します。
CPU Name/Slot
Module 名を設定し、Slotを1にします。
Add Power Tags
Controller>Controller Tag>New tagで新規Tagを定義します。
Tagの定義画面が表示されます。
Nameで変数名を定義し、Data Typeを”MESSAGE”を指定してください。
MESSAGE変数が定義されました。
ADD MSG
ラダーに空きのRungを右クリック>Add Ladder Elementでラダー部品を追加します。
Input/Output>MSGを選んでください。
Done!MSG関数が追加されました。
Configure MSG
MSG関数で使用するMSG変数を入力してください。
先ほど定義したMSG変数を使用します。
次はMSG関数を設定するため、MSG関数内の…ボタンをクリックします。
こちらはMSG関数の設定画面になります。
Message Type
Message TypeをCP Data Table Readに設定します。それによってTwinCATのENTIP内の変数を読むことができます。
これでOKです。
Source Element
Soruce ElementはTwinCAT側のETHIP内の変数名と一致する必要があります。
Destination Element
New Tagをクリックし、CIP Table Readサービス経由で取ったデータを格納するTagを定義します。
いつも通りのTag設定画面です。
Tag名・またデータ・タイプを設定してください。
Communication
次は通信設定を行うためCommunication Tabを開きましょう。
Connected・Cache ConnectionsのCheckboxを入れ、Browseボタンをクリックし接続先を設定します。
先ほど追加した、Rockwell PLCに見せかけたTwinCAT PLCを選択します。
Connection Pathは設定Okです。
Add a Reflesh Timer
タイマーを追加するため、ラダーの空きRungに右クリック>Add Ladder Elementで新しいラダー部品を挿入します。
Timer/Counter>TONで遅延ONタイマーを追加します。
Done!
Download
最後はRockwell側のプログラムをDownloadするため、Communication>Downloadします。
Downloadで進みます。
少々お待ち下さい…
Yesで進みます。
Result
Doneのランプが青になり、またError Codeが空なので、MSG関数の実行がエラーなく終了しました。
TwinCATのETHIP.Var1の現在値がRockwell側に反映されました。
Implementation2-CIP Write Table
次はRockwell PLC側からTwinCATの変数を書き込んでみます。
Rockwell Side
Add Power Tags
先ほどと同じ操作でMESSAGE変数を追加します。
ADD MSG
MSG関数を先程と同じ操作で追加・定義します。
Message Type
MSG関数のMessage TypeをCIP Data Table Writeに設定しましょう。
Done!
Source Element/Destination Element
SouruceはRockwell PLCの変数に設定し、DestinationはTwinCAT側のETHIP.Var2に合わせて設定してください。
Communication
Communcation Tabを開き、PathをRockwell PLCに見せかけたTwinCAT PLCにします。
Download
最後はRockwell側のプログラムをDownloadするため、Communication>Downloadします。
Downloadで進みます。
少々お待ち下さい…
Yesで進みます。
Result
Doneのランプが青になり、またError Codeが空なので、MSG関数の実行がエラーなく終了しました。
TwinCATのETHIP.Var2の現在値がRockwell側で変更されました。