今回の記事ではFestoのCPX-API-EC-M12を使用しEtherCAT Networkを立ち上げ、IO-LINK Masterモジュール・DIDOモジュール・アナログ入力モジュールからデータを取得や制御します。EtherCAT MasterはBeckhoffのC6920 IPCとTwinCAT3で、IO Link SensorはContrinex社のものになります。どうぞよろしくおねがいします。
Thanks!
この記事が出来上がるのはベッコフ日本法人ベッコフオートメーション株式会社さま・フエスト株式会社・Contrinexジャパンさまから機材を貸してくださったおかけです。誠にありがとうございます。
ベッコフ日本法人ベッコフオートメーション株式会社
IPC6920-005はベッコフ日本法人ベッコフオートメーション株式会社さまが貸してくださったものです。Beckhoff Automationは1980 年会社設立、PCベースの制御技術をベースにしたオープンオートメーションシステム導入の先頭に立つドイツ企業です。
ベッコフ日本法人ベッコフオートメーション株式会社は、2011年に横浜に本社、2017年に名古屋オフィスを設立しました。
こちらはベッコフ日本法人ベッコフオートメーション株式会社様のホームページです。
どうぞよろしくお願いします。
https://www.beckhoff.com/ja-jp/
フエスト株式会社
CPX-AP-I Seriesはフエスト株式会社さまから貸していただいたものです。Festoはオートメーション技術における世界的リーダーであり、空気圧サーボアクチュエータ・リモートI/O・ソフトウェアなど、FA・PAに様々な信頼性の高い製品を提供しています。それ以外にも、技術教育機関として色んな企業向けのトレーニングなどにも力を注いでいます。
こちらはフエスト株式会社さまのホームページです。
よろしくおねがいします。
コントリネックス・ジャパン
IO-Link Sensorははコントリネックス・ジャパンさまが貸してくださったものです。Contrinex社はスイスの会社で、複雑な自動化およびスマートファクトリアプリケーション向けのスマート センサーのメーカーで、50年以上の技術から誘導および光電センサー、ならびに安全およびRFIDシステムの技術を常に提供し続けています。
こちらはコントリネックス・ジャパンさまのホームページです。
よろしくおねがいします。
https://www.contrinex.com/en-jp
CPX-AP-I-Series?
今回紹介するCPX-AP-IシリーズはFestoの新しいIP65/67 IOシステムであり、ホストシステムとして入出力モジュールや既存のバルブターミナルと統合できます。
CPX-AP-IはInterfaceモジュールとFunction Moduleに分かれており、Interfaceモジュールはいわゆる上位システム(PLCやPC)などと接続するモジュールです。なので、PLCやPCからみると、CPX-API−IはSlaveです。
一本、CPX-AP-IはMasterでもあり、FestoのAPC Comを使用しデジタル入力・IO LINK Masterモジュールなどからデータをまとめたりコマンド送信したりしています。なので、Function ModuleからみるとCPX-AP-IはMasterです。
Your Module Selections
- IO-Linkマスタ
- デジタルI/Oモジュール
- アナログインプットモジュール
- Interface to the valve terminal
- Bus Interface
Bus Interface
IO-Link Master
2,4,8,16,32 Bytesの領域を構築できるIO-LINK Masterで、今後の記事で使用するのはCPX-AP-I-4IOL-M12になります。
Digital IO Modules
基本的なデジタル入力・出力モジュールで、今後の記事ではCPX-AP-I-4DI4DOを使用します(PNP Type)。
Analog Input Modules
電流・電圧・温度などを計測できるアナログ入力モジュールで、今後の記事でCPX-AP-I-4AI-U-I-RTD-M12を使用します。
Interface to the valve terminal
Topology
現時点では1ラインまたは2ラインの配線になります。スタートとツリートは将来対応する予定になります。そして各モジュール間はのケーブル長最大50mまで、数は最大80個までになります(配線方式はM12/M8を選択可能)。
Address Space
CPX-API-IはEthernet/IP・Profinet・EtherCAT3種類のLine-upがあります。
CPX-AP-I-PN-M12
PN=Profinetで、最大Inputサイズ=1024Bytes・最大Outputサイズ=1024Bytesになります。
CPX-AP-I-EC-M12
EC=EtherCATで、最大Inputサイズ=2048Bytes・最大Outputサイズ=2048Bytesになります。
CPX-AP-I-EP-M12
EP=Profinetで、最大Inputサイズ=1024Bytes・最大Outputサイズ=1024Bytesになります。
CPX-AP-I-EC-M12
こちらは今回使用するEtherCAT Interfaceモジュールです。
LED
モジュールの各LEDの意味になります。
Rotary Switch
モジュールに3つのRotaryスイッチがあり、EtherCATのExplicit Device ID(HEX Format)を設定できます。(Factory Setting=0)
0=Explicit Device IDが設定しない
1-4095=Explicit Device ID
Configuration Example
こちらはCPX-AP-I Seriesを使用するときの構築例です。今回使用するのはCPX-AP-I-EC-M12(EtherCAT)ですが、Main ControllerがSupportするIndustrial Protocolに合わせていただければよいと思います。Main ControllerとCPX-AP-IのInterface モジュールはIP67のRJ45Connectorと接続し、電源供給は24vで型式NEBL-M8G4-E-5-N-LE4のCableを使用します。最後はInteface モジュールとIO モジュールなどの接続はNEBL-M8G4-E-0.5-N-M8G4(24v電源)とNEBC-D8G4-ES-2-NS-D8G4-ET(AP-COM)でLinear配線すればOKです。
Download ESI File
今回はEtherCAT CPX-AP-I-EC-M12を使用しますので、下記のLinkからESI FileをDownloadしてください。
このようなZipがDownloadされました。
Implement-TwinCAT
今回はBeckhoff のIPC 6920 とTwinCATをMain Controllerとして検証します。
Notes
CPX-AP-I-EC-M12
Wiring
こちらはCPX-AP-I-EC-M12各Portの配線です。
CPX-AP-I-4IOL-M12
Wiring
こちらはCPX-AP-I-4IOL-M12各Portの配線です。
Mappings
こちらは各Portn状態を確認できるByte PQIです。
CPX-AP-I-4AI-U-I-RTD-M12
Wiring
こちらはCPX-AP-I-4AI-U-I-RTD-M12各Portの配線です。
そして今回使用するのは0-10vの電圧入力なので2をプラス側に繋がり、3,4を短絡しマイナス側に繋がってください。1はSensorの電源供給24vになります。
Range
こちらはモジュールが0−10vの計測範囲に設定されたときのDigital値です。
CPX-AP-I-4DI4DO
Wiring
こちらはCPX-AP-I-4DI4DO 各Portの配線です。
IOLINK Sensor
今回使用するのはContrinexのSmart IO-Link Sensorになります。第1話ではまず配線やデータMappingなど簡単な説明を取り上げ、次回は詳しく設定などを説明します。
このIO-LINK Sensorは4BytesのInputと1ByteのOutputがあります。
Wiring
Bn=茶色、Bk=黒、Wh=白、Bu=青です。
Pin
こちらはPin配置です。
Input Data
4Bytes入力データMappingで、0Byte目はSensor状態・1Byte目はスケーリング値・2+3 Byte目は測定値になります。
Byte0 Mapping
0Byte目の各Bit割り当てです。
Output Data
Output Dataは1Byteになります。
DIS Mapping
0=Sensor無効・1=Sensor有効します。
Install the ESI File
FestoのHPからDownloadしたESI FileをTwinCAT/3.1/Config/io/EtherCAT Folderに格納します。
Add EtherCAT Master
I/O>Devices>Add New ItemでEtherCAT Masterを追加します。
EtherCAT>EtherCAT Masterを選び>OKします。
Beckhoff IPC で構築するEtherCAT Network のLAN Interfaceを選びます。
AdapterのTabからも選択されたNetwork Adapterを確認・再確認できます。
Try to Scan it
では一回Scan機能を使ってFesto CPX-AP-I-EC-M12をScanしてみます。
一応CPX-AP-I-EC-M12が見つかりました!
ですが、すべてのIO モジュールは検索できるわけではありませんので、手動でFesto CPX-AP-I-EC-M12を構築したほうが確実でしょう。
Configure your CPX-AP-I-EC
Add CPX-AP-I-EC
EtherCAT Masterを右クリック>Add New Itemします。
Festo>AP>CPX-AP-I-EC-M12を選び>Okします。
Festo CPX-AP-I-EC-M12が追加されました。
Configure the Slot
次は各Slotを追加します。
CPX-AP-I-EC-M12
まずCPX-AP-I-EC-M12をSlot1に插入します。Slots Tabを開き、Inteface Modules>CPX-AP-I-EC-M12を選び、”>”ボタンで插入します。
CPX-AP-I-4IOL-M12 Varian 32
IO-Link Masterを追加します。ちなみにVariant 32は32BytesのIn/Out IO-Linkデータの意味です。
CPX-AP-I-4DI4DO-M8-3P
次はCPX-AP-I-4DIDO-M8-3Pを選び、”<”ボタンで入出力モジュールを追加します
CPX-AP-I-4AI-U-I-RTD-M12
最後はアナログ入力モジュールCPX-AP-I-4AI-U-I-RTD-M12を插入します。
Finally
最終的に構成はこうになりますね。
Configure Startup
Startup Tabを開き、各Slotのモジュールのパラメータの設定を行います。(本当にいいますとEtherCAT Network がStartupするときにモジュールにパラメータを書き込むのイメージ)
Newで新たなパラメータを作成します。
Edit CANopen Startup Entryの画面が表示されます。
では試しにCPX-AP-I-4AI-U-I-RTD-M12 Channel0のUpper Scaling値を設定してみます。
2003:09を選択し>Edit Entryをクリックします。
Dec 32000を入力すればOKです。
Done!実際今回の記事で必要なパラメータは、
- 0x2003:09 CPX-AP-I-4AI-U-I-RTD-M12 Channel0のMax Scaling値
- 0x2003:0D CPX-AP-I-4AI-U-I-RTD-M12 Channel0のMin Scaling値
- 0x2003:05 CPX-AP-I-4AI-U-I-RTD-M12 Channel0のScaling 種類
- 0x2001:0A CPX-AP-I-4IOL-M12 Port0をIO-LINK Portとして使用します
Add PLC
PLC>Add New Itemで新しいPLCを追加します。
Standard PLC Projectを選び>Addで追加します。
Add GVL
GVLs>Add>Global Variable ListでGVLを追加します。
GVLの名前を入力しAddします。
Creare Data Type
TwinCATはいままでのTutorialでは一つずつ変数をMappingしますが、実際はIO Configuriationから直接構造体を作成、そのままUser Programの変数と紐つけることが可能です。今回のTutorialではそのやり方を紹介します。先程追加したFesto CPX-AP-I-EC-M12をクリックします。
PlcのTabを開いて、Create PLC Data TypeのCheckboxを入れます。
先程追加されたFesto CPX-AP-I-EC-M12の各Module制御情報が含まれた変数”MDP5001_0_4FC3A84B”になります。Copyボタンで構造体の名前をCopyします。
Define in GVL
次はGVL内で変数を定義します。
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Link To PLC
次はPlcのTabに戻り、”Link To PLC”のボタンをクリックします。
先程GVLで定義した変数と紐つけます。
Done!
DUT
DUT_SMART_IDWx_MxxMM_NMS_A0
こちらはContrinex社のSmart Sensor、Byte0のデータタイプになります。
TYPE DUT_SMART_IDWx_MxxMM_NMS_A0 : STRUCT OSS1 :BIT; //Output switching signal OSS2 :BIT; //Output switching signal TSS :BIT; //Timer Selected signal SSC1 :BIT; //Switching signal SSC2 :BIT; //Switching signal ALR1 :BIT; //Alarm ALR2 :BIT; //Alarm ALR3 :BIT; //Alarm END_STRUCT END_TYPE |
Program
Festo CPX-I-4IOL-M12モジュールのPort0に接続してるContrinexデータやCPX-I-4DI4DO-M8のPort4を出力やCPX-AP-I-4AI-U-I-RTD-M12のPort0アナログ入力データを取り組みます。
PROGRAM MAIN VAR TON :TON; TON2 :TON; ScalingValue :REAL; Process_Data_0 :DUT_SMART_IDWx_MxxMM_NMS_A0; Process_Data_1 :USINT; Process_Data_2 :INT; PQ,DevErr,DevCom :BOOL; END_VAR //Festo IOLINK Module Port1 Status PQ:=GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_4_IECCONF_IECCONF_PQI.7; DevErr:=GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_4_IECCONF_IECCONF_PQI.6; DevCom:=GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_4_IECCONF_IECCONF_PQI.5; //Reflesh Timer TON(IN:=NOT TON2.Q,PT:=T#1S); TON2(IN:=TON.Q,PT:=T#1S); //Scaling Value ScalingValue:=(INT_TO_REAL(GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Channel_0)/32000.0)*10.0; //DO Output GVL.Festo_Module1.MDP5001_0_Output.MDP5001_0_Outputs_Output_0:=TON.Q; //IO LInk Sensor MEMMOVE( destAddr:=ADR(Process_Data_0) ,srcAddr:=ADR(GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_0[0]) ,n:=SIZEOF(Process_Data_0) ); Process_Data_1:=GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_0[ Process_Data_2:=GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_0[3] +SHL(BYTE_TO_INT( GVL.Festo_Module1.MDP5001_0_Input.MDP5001_0_Inputs_Port_0[2]),8) |
Result
システムを正常に立ち上げました。
CPX-AP-I-4IOL-M12の正常状態はこちらです。
https://youtube.com/shorts/pa8ETzEVasg
CPX-AP-I-4IOL-M12のエラー状態はこちらです。
https://youtube.com/shorts/_h1rbWSqmuo
CPX-AP-I-4IOL-M12がエラーから復旧した状態はこちらです。
https://youtube.com/shorts/BetMhY04vyw
CPX-AP-I-4IOL-M12・TwinCAT3・Contrinex IOLINK Sensorと連携した状態です。
CPX-AP-I-4AI-UI-RTD-M12がアナログ信号を読み込んだ状態です。
CPX-AP-I-4DI4DO-M8-3PのOutput On/OFF繰り返しです。