EtherCATとは?ソフトウェアPLCを用いた計測制御

目次

EtherCATとは

2016年にトヨタ自動車が全面採用したことで注目されているEtherCAT(Ethernet for Control Automation Technology)は, ベッコフオートメーションが開発したリアルタイム性のあるオープンフィールドネットワーク(Open Field Network)です。現在は2003年に設立されたEtherCAT Technology Groupによって機能要件や認証手順などが規定・管理されています。

フィールドネットワークとは

フィールドネットワークとは、工場内での制御機器とセンサなどの計測機器を通信するためのネットワークのことです。このフィールドネットワークのうち、イーサネットワークを用いるものを産業用イーサネットと呼びます。産業用イーサネットには、Profinet, Ethernet/IP, CC-LINK/IE Field, Modbus/TCPなどがあり、EtherCATも産業用イーサネットにあたります。

EtherCATの通信イメージ

EtherCAT は、マスター、スレーブに分かれており、ひとつのマスターに一つあるいは複数のスレーブコントローラが接続している形になります。ディジーチェーン型やスター型で接続することができます。

ディジーチェーン型の接続例

通信方法としては、すべてのスレーブに対するデータを1パケットにまとめて送出します。上記の例の場合、下記のようなパケットデータになります。

プロセスデータ
EtherCAT
ヘッダ
スレーブ① スレーブ② スレーブ③ ワーキングカウンタ
モジュール(A) モジュール(B) モジュール(C) モジュール(D) モジュール(E) モジュール(F) モジュール(G)
出力データ 入力データ 入力データ 出力データ 入出力データ 入出力データ 入出力データ

デバイスのデータのサイズや機能などは、EtherCAT Slave Informationファイルに記載しており、予めEtherCATマスターがその情報を使用して上記のようなパケットデータを作成します。

マスターから一番近いスレーブコントローラから順番にデータを転送していきます。青矢印の(1)から(6)はEtherCATパケットデータの転送の順番になります。上記の接続の場合、(1)から(3)まで先頭から順番にその機器のデータを更新していきます。入力データの場合はパケットに更新し、出力データの場合はデータの値にデバイスを更新します。終端のスレーブ③までに到達した後、(4)~(6)の矢印方向へ折り返して戻り、最後にマスターが受け取った後、入力データの更新を行います。

EtherCATパケットデータの転送の順番

EtherCATの冗長化

EtherCATは複数のLANポートがマスターにあれば、ループ状に接続することで2重化することができます。CPS-PC341EC-1-9201は、LANポート2つをEtherCATに割り当てた場合、LAN通信ができなくなるため、ソフトウェアPLCを搭載したLANポートが2つ以上あるPCで接続した場合の例が下記になります。

ソフトウェアPLCを搭載したLANポートが2つ以上あるPCで接続した場合の例

その場合、青と緑の2方向でそれぞれ通信を行います。青矢印の(1)~(4)はLANポート1の転送、緑矢印の(1)~(4)はLANポート2の転送の順番になります。

2重化した場合、経路上で断線した場合であっても通信が途切れることなく通信を続けることができます。また、その場所が明確に分かります。下記は、スレーブ②-スレーブ③間で断線が発生した場合の図になります。緑矢印のLANポート2の通信はスレーブ③に到達した後、スレーブ②で通信ができなくなっているため、そのままマスターに戻るため、緑矢印(1)~(2)のようにスレーブ③のみ通信が行われます。青矢印のLANポート1の通信はスレーブ②まで進んだ後、スレーブ③で通信ができなくなっているため、そのままマスターに戻ります。青矢印(1)~(4)はLANポート1の通信になります。

スレーブ②-スレーブ③間で断線が発生した場合の図

EtherCAT製品の相性問題

EtherCAT製品は様々なマスター製品、スレーブ製品があります。EtherCATマスターソフトウェアを導入したPCやマスター製品とEtherCATスレーブ製品ですべての機能が正常に動作しないケースがあります。EtherCAT協会では、EtherCATマスターおよびスレーブ開発メーカーを対象に年に一度、接続テストを行っており、少しでも相性問題をなくすための活動が行われています。

コンテックのCONPROSYS PACシリーズは、EtherCATマスター・スレーブ製品を展開しており、PACシリーズの組み合わせで正常に動作することを確認しているので安心してご利用いただけます。また、コンテック以外のマスターでコンテックのスレーブ製品を使用したい、あるいはコンテック以外のスレーブとコンテックのマスター製品が正常に動作するかわからない、購入前に動作確認を行いたい場合など、コンテック評価機貸出しサービスを行っております。是非ご活用ください。

PLCとは

EhterCAT通信で制御やセンサの状態などを取得するなど、EtherCATマスターにプログラムを行いたい場合、PLCやソフトウェアを活用したシステムに導入します。PLCとは、プログラマブルロジックコントローラ(Programable Logic Controller)の頭文字をとった略語であり、シーケンサとも呼ばれます。センサやLEDなどの制御機器をロジックごとに制御できるコントローラです。主にマイコンなど搭載しているロジック処理に特化した専用装置をハードウェアPLC、産業用コンピュータなどに PLC機能をインストールし、多岐にわたる処理を行う装置をソフトウェアPLCと呼びます。コンテックのPACシリーズは、ソフトウェアPLC CODESYSを採用しています。

CODESYS®とは

CODESYS®とは、CODESYS.GmbHによって開発された国際規格IEC 61131-3準拠のソフトウェアPLCです。IEC61131-3で定義されている5言語をサポートしています。CODESYSをインプリメントした製品は、EtherCATマスターとして動作させることができます。CODESYSソフトウェアにつきましてはLINX社にて取り扱っており、こちらからも無償でダウンロードすることができます。(CODESYS、LINX社ともにユーザ登録が必要になります。)

PCのプログラミングとCODESYSのPLCプログラミングの違いについて

PCでPythonなどのプログラミングを行う場合、スタートがあり、決められたゴールに向かっていくイメージですが、CODESYSのプログラミングの場合は、決められたサイクルタイムに従ってトラックを何周も回って処理が行うイメージになります。

【PCでのプログラミングの基本イメージ】

PCでのプログラミングの基本イメージ

【CODESYSプログラミングの基本イメージ】

CODESYSプログラミングの基本イメージ

PCでのプログラミングでも、タイマースレッドと呼ばれる決められた時間に動作するスレッドがあるので、それを利用したりすることができるのですが、ミリ秒~マイクロ秒単位となると時間のゆらぎが発生したりして、1ミリ秒で動作し続けるといったことが難しく、10ミリ秒ずれるといったこともままあります。CODESYSの場合、機器にもよりますが、ミリ秒単位や数百マイクロ秒を設定することができます。ただし、PLCプログラミングするときには注意が必要です。例えばプログラミングを行うときに、PCでのプログラミングではスリープといった「待つ」ことができますが、CODESYSのプログラミングでは決められたサイクルタイムで実行し続ける必要があるため、「待つ」のではなく「次のサイクルで処理する」といったようにプログラミングしなくてはなりません。

CODESYS®のプログラミング言語

IEC 61131-3で定義されているPLCプログラミング言語は、ラダー図(LD), 命令リスト(IL), ファンクションブロック図(FBD), 記述言語シーケンシャルファンクションチャート(SFC), 構造化テキスト(ST)の5言語になります。CODESYSはIEC 61131-3で定義されているPLCプログラミング言語で記述することができます。

CONPROSYS PACシリーズを使ったEtherCAT通信制御

製品の選択

コンテックでは ソフトウェアPLC機能を持つ機器として、CODESYSを搭載したCONPROSYS PACシリーズがあります。CONPROSYS PACコントローラは、ヒューマンインターフェースとしてCONPROSYS HMIを搭載しており、CODESYSが収集したEhterCATスレーブデバイスのデータを可視化することができます。

EtherCAT通信制御

EtherCATマスター製品「CPS-PC341EC-1-9201」や「CPS-PCS341EC-DS1-1201」、EtherCAT スレーブ製品として最大16台のモジュールを拡張することができるEtherCATスレーブカプラ「CPS-ECS341-1-011」や、最大8台のIO-LINKセンサを接続することができるIO-LINKゲートウェイ「CPSL-08P1EN」があります。下記は、製品の分類チャートになります。

【製品分類チャート】

製品分類チャート

CODESYSでのプログラミング例

今回は、下記の構成でCODESYS開発環境がインストールされたあと、EtherCAT通信を行ったアナログ電流をHMIでモニターし、電流値が閾値まで低下した場合にデジタル出力をONするところまで行います。

CODESYSでのプログラミング例

CODESYS プログラミングのはじめかた

ポイント!構成情報と接続情報を最初に設定すれば、プログラムは簡単!

  1. PACコントローラ、EtherCAT構成情報のインストール
    まず、PACコントローラであるCPS-PC341EC-1-9201のライブラリをインストールします。CPS-PC341EC-1-9201のライブラリはこちらからダウンロードします。パッケージマネージャーからインストールを行います。

    パッケージマネージャーからインストール

    次にEtherCATの構成情報であるESIファイル(Ethercat Slave Information File)をインストールします。CPS-ECS341-1-011のESIファイルはこちらからダウンロードします。デバイスリポジトリからインストールを行います。

    デバイスリポジトリからインストール

  2. プロジェクトの作成・プログラミング言語選択
    次にプロジェクトの作成を行います。
    C言語などに近いプログラミングができる言語”構造化テキスト(ST)”を選択して進めていきます。

    プロジェクトの作成

  3. EtherCATの接続設定
    コントローラにEhterCATマスターを追加します。EtherCATマスターを追加したあとは、CPS-ECS341-1-011のデバイス設定をします。今回はデジタル出力とアナログ入力デバイスを接続しているため、その2台を登録します。設定後は、使用するアナログ入力端子(AnalogInput0)とデジタル出力端子(DigitalOutput0,DigitalEchoOutput0)を登録します。

    CPS-AI-1608ALIの設定、CPS-DO-16Lの設定

    これで準備は完了です。

  4. プログラム
    プログラム画面はPLC_PRGに書き込みます。命令宣言部とプログラム部があり、宣言した変数と3.で登録した端子を使ってプログラムしていきます。

    変数宣言部

    VAR
     // HMIに登録する変数
     threshold :LREAL:= 0.0;// 閾値(mA)
     value : LREAL := 0.0;//現在の値(mA)
     lump0 : BOOL := FALSE; // デジタル出力の確認値(Echoback Inputの値)

     // CPS-AI-1608ALIのデバイス
     max_current : LREAL := 20.0; // 最大値(mA)
     resolution : LREAL := 65536.0; // 分解能 16bit -> 2の16乗
    END_VAR

    プログラム部

    value := (AnalogInput0*max_current) / (resolution – 1.0); // mAに変換

    if (value < threshold ) then
     DigitalOutput0 := TRUE;
    else
     DigitalOutput0 := FALSE;
    end_if
    lump0 := DigitalEchoOutput0;

    PCでEtherCATライブラリのプログラミングを行う場合、ESIファイルの読出しやEtherCAT通信のやりとり、オブジェクトディクショナリと呼ばれるパラメータのメッセージ通信のやりとりをプログラミングしなくてはいけません。CODESYSを使えばCODESYSライブラリが行ってくれるため、EtherCATの通信部分のプログラミングは省略され、直接アナログ入力デバイスやデジタル出力デバイスを簡単に操作することができます。

  5. CONPROSYS HMIで使用するために、valueとthreshold,lump0の変数を登録します。
    そのために シンボルコンフィグレーションを追加します。

    シンボルコンフィグレーションを追加

    追加した後は、使用したい変数にチェックを入れた後もう一度ビルドボタンを押して完了です。

    使用したい変数にチェックを入れた後もう一度ビルドボタンを押して完了

    このプログラムは、このままではCPS-PCS341-1-9201の電源がOFFになると消えてしまうためWebブラウザから本機にアクセスしてプログラムの保存をします。

    PLCプログラムの保存

CONPROSYS HMIとの連携

ポイント!モニタリング画面を作成し、パーツを配置した後CODESYSで登録した変数を連携すればOK!

  1. モニタリング編集を行います。
    電流値と閾値はトレンドグラフ、デジタル出力の確認はタワーライトにします。電流値はラベル、閾値はテキストボックスに表示するために部品を張り付けます。下記は作成画面になります。

    モニタリング作成画面

    今回、タワーライトの設定は最上段のみ使用するようにしました。また、トレンドグラフのY軸スケールの最大値20/最小値0に固定しました。

    Y軸スケール

  2. CODESYSで登録した変数(value, threshold, lump0)を関連付けします。

    デバイスツリー

    あとは保存すれば、完成です。電流値が閾値未満であれば、デジタル出力がONになったあと、タワーライトが赤く光ります。12mAを閾値に設定した場合のCONPROSYS HMIを下記に示します。

    12mAを閾値に設定した場合のCONPROSYS HMI

    12mAを閾値に設定した場合のCONPROSYS HMI

    いかがでしょうか。このようにEtherCAT通信を使った制御プログラムを簡単に行うことができます。EtherCATを制御することに限定した説明になっており、PACコントローラのファイル保存機能やクラウド送信機能など様々な機能があり、連携することができます。そのようなプログラムを作成したい場合は、詳細な資料といたしまして、リファレンスガイド(ソフトウェア)サンプルプログラムを準備しております。

関連情報

技術コラムTOPへ戻る

メールマガジンのご登録はお済ですか?

技術コラムなどのお役たち情報を含めた最新情報をメルマガでお届けしています。( メルマガサンプル表示別ウィンドウが開きます

myCONTEC会員サービスについて

詳細はこちら

新規ご登録

今すぐ登録

  • myCONTEC会員にご登録済みで、メルマガ配信をご希望の方は、ログイン後「会員情報変更」より設定変更ください。