EtherCATのmasterをラズベリーパイで作ってみました。CODESYSを使って簡単にスレーブ機器と接続する方法を説明します。
特殊なマイコン・開発環境なくとも、簡単なマスターを作る程度ならばラズパイ1台で可能です。
EtherCATのマスターの作り方 市販のスレーブ機器と接続を想定
産業用Ethernetで人気の「EtherCAT」を使ってラズベリーパイ(raspberry pi)と市販のデバイスとの接続方法を紹介します。
※但し筆者も数万以上する高価な市販の「EtherCAT」のスレーブデバイスを持っていないので、接続想定してマスター作るまでがメインの記事となっています。
EtherCATのメリット
概要だけ簡単に「EtherCAT」に説明させていただきます。
産業用Ethernetの一つで「EtherNet/IP」「PROFINET」と同様に高いシェア率を保っています。
開発元はドイツのFA機器メーカであるベッコフオートメーション(Beckhoff Automation GmbH)です。
特徴・メリット例としては「1つのマスター⇔複数のスレーブが同時通信可能」「1usレベルの精度の精密時刻同期機能」などが挙げられます。
EtherCATとPLCの両方がラズベリーパイ一つで可能
今回はEtherCATのマスターを作ることがメインですが、「EtherCAT」と「PLC」の両方の機能をラズパイ一つで対応可能です。
ラズベリーパイをPLC化かつ、RJ-45のコネクタから産業用イーサネットの「EtherCAT」を接続します。
EtherCATが無料でテストできるCODESYS
なぜラズベリーパイ一つで対応できるかというと、「CODESYS」というソフトウェアPLCが「Ethernet/IP」「PROFINET」「EtherCAT」含めた産業用Ethernet・フィールドバスに対応しているためです。
「CODESYS」は誰でもフリーで使うことができ、簡単にラズベリーパイでPLCのテストできます。以前まとめた記事はこちらから
通常ならば有料ライセンスが必要なのですが、ラズパイ+CODESYSの組み合わせならば無料でEtherCATのテスト可能です。
30分の時間制限はありますが、再接続・リセットすれば再度利用可能ですのでデバッグ・テストレベルならば実質無料で対応できます。
EtherCATのスレーブを自作したい場合は…LAN9252?
ただしCODESYSではEtherCATについてはマスター側しか対応していませんのでご注意ください。(スレーブ側は作れない)
個人的にEtherCATのスレーブを自作したい場合を簡単に調べたところ…
Microchip製 LAN9252 EtherCATスレーブコントローラを載せた基板を作るのが実現性がありそうでした。(もしくは評価ボードを購入するか)
(LAN9252のデータシートのリンク先はこちらから)
今回は実施できませんが、何時かは作ってみたいと思います。
CODESYSはラズベリーパイ4にも対応済
また最新のRaspberry Pi 4 model Bにも対応していますので、これからラズパイを購入する方も安心してCODESYSを使えます。
EtherCATを三菱PLC(シーケンサ)でマスターとして使いたい場合は…
三菱PLC(シーケンサ)でも簡単に調べましたが、EtherCATのマスター側の専用のモジュールは見つかりませんでした。
(CC-Linkのモジュールは一杯出てくるのだが…)
筆者が産業用Ethernet・フィールドバスの情勢について疎くて申し訳ないです。
いずれにせよ個人レベルでは機器が集めれないのでので今回は三菱PLC(シーケンサ)でのEtherCATはパスします
EtherCATのmasterとしてラズベリーパイを動かしてみる
今回は「ラズベリーパイがEtherCATのmaster(マスター)」で「市販のEtherCATのユニットがスレーブ」になるイメージで説明します。
Youtubeの海外の動画ですが、実際にラズパイとデバイスをEtherCATで接続した動画があり参考になりました。(リンク先はこちらから)
また前回、同じ産業ネットワークのPROFINETのマスター・スレーブを作成する記事を紹介しています。よろしければご覧ください。
大方粗筋は同じですが若干手順が異なる箇所もありますのでご注意ください。
EtherCATのスレーブとしてOMRON(オムロン)のセンサユニットを想定する
今回はOMRON(オムロン)製のEtherCATのユニットをスレーブとして接続する想定で設定していきます。
型式は「E3NW-ECT」でこのセンサユニットから「レーザセンサ」、「近接センサ」、「接触センサ」などのアンプとヘッドを接続する構成のようです
EtherCATのESIファイルをダウンロードする
EtherCATでスレーブ(デバイス)側と通信するには、ESI(EtherCAT Slave Information)ファイルが必要になります。
ESIファイルはスレーブ設定が記載されているファイルです。
OMRON(オムロン)様では個人でも登録すればESIファイルのダウンロードが可能でした。(ファイル名はXMLとなっています)
「E3NW-ECT」のデータシート・ESIファイルのリンク先はこちらから 。「カタログ / マニュアル / CAD / ソフトウェア」⇒「ソフトウェア」の項目にESIファイルがありました
CODESYSをダウンロード・インストールする
今回使うソフトウェアPLC「CODESYS」のダウンロード・インストール方法は下記を参考にお願いします
ラズベリーパイ用のパッケージをインストールする項目まで完了してもらえれば大丈夫です
EtherCATのデバイスをインストールする
先ほどダウンロードしたXMLファイルをCODESYSのインストールします。
CODESYSを開いて「ツール」→「デバイス リポジトリ」を選択します。
「デバイス リポジトリ」の画面に入ったら「インストール」を選択します。
右下の選択項目を「EtherCAT XML~」を選択して、今回ダウンロードしたファイルを選びます
無事に市販のEtherCATのユニットがスレーブデバイスとして登録されました。
EtherCATのマスターをCODESYSで作ってみる
EtherCATのスレーブも登録できたのでCODESYSでマスターを作っていきます。
CODESYSでプロジェクトを作る
CODESYSを開いて左上の「ファイル」⇒「新規プロジェクト」を選択します。
どのプロジェクトを作るか聞かれるので「標準プロジェクト」を選択後に名前を付けてあげます(筆者は「EtherCAT_test_master」としました)
今回筆者は下記内容でプロジェクトを作りましたが、他ST言語などで作りたい場合はそちらを選択してもらえれば大丈夫です
・デバイス…「CODESYS Control for Raspberry Pi MC SL」
・PLC_PRGの言語…「ラダーロジックダイアグラム(LD)」
プロジェクトにEtherCATのマスターを追加する
プロジェクトが作成できましたら、「Device~」の項目で右クリックして「デバイスの追加」を選択します。
何のデバイス追加するか選択できますので「EtherCAT」の「マスター」の「EtherCAT Master」を選択します。
プロジェクトにEtherCATとスレーブを追加する
その後「EtherCAT Master」ができますので項目を選択して、「EtherCAT」の「スレーブ」の箇所からOMRONの「E3NW-ECT」を追加します。
これで先ほど登録したスレーブのEtherCATのユニットまでプロジェクトに追加できました。
EtherCATのIPアドレスの設定は不要
今回筆者の想定環境は下記イメージです。
EtherCATはノードアドレスの自動設定機能がありますのでマスター・スレーブ間のIPアドレスの設定が不要です。
(他の産業用イーサネットよりネットワーク設定が楽!)
ラズパイのEthernetのIFをEtherCATで使いますのでプログラムは無線で送るようにしています
環境設定する前に
これ以降の環境設定する前にラズベリーパイと無線で通信してインストール・接続を完了していることをおススメします。
その方が環境設定が楽になります。インストール方法に関しては下記記事を参照してもらえればよいと思います。
IPアドレスを無線のを打ち込めば、有線LANでなくでもインストール・接続ができます。
EtherCATのNIC(ネットワークカード)の設定
「EtherCAT Master」の項目でNIC(ネットワークカード)の設定をします。
特に難しいことはなく、ラズベリーパイにCODESYSがインストールされ接続されている状態ならば簡単に設定できます。
「EtherCAT Master」の項目の「EtherCAT NIC設定」箇所にある「ブラウズ」ボタンを押しますとネットワークアダプタが選択できますので「eth0」を設定します
自動的にソースアドレス(MAC)が入力されてNICの設定完了です。
ラズパイでEtherCATとPLCが動作しているかテストする
おそらく今までの内容でラズパイをEtherCATのマスターとして市販のスレーブのEtherCATのユニットとも通信できるまでは進めれると思います。
とはいえ、せっかくEtherCATのマスターを作りましたのでPLC含めて正常に動作するかラズパイでテストをします。
(正直、接続先のスレーブがいないと出来ることもかなり限られてきますが…)
EtherCATとPLCのテストプログラム内容
内容としてはラズベリーパイ(raspberry pi)がEtherCATのマスターとして動作(Enable)すればPLC・ラダー経由でLEDをONさせます。
「EtherCATマスターとして動作(Enable)…黄LED_ON」「EtherCATマスターが正常に通信開始したら…赤LED_ON」する仕様です
ラダープログラムとしては下記形と簡単な形になります。
実際にテストするとEtherCATマスターとして動作(Enable)してPLC・ラダーから黄LED出力できていることを確認できました。
(もちろん正常通信はできず、赤LEDはONしていません)
EtherCATマスターとPLCのテスト動画の流れ
ラズベリーパイ1台でEtherCATマスターとPLC出力するテスト動画は簡単に紹介すると下記感じです。
10秒辺り…マスター側のラズパイのプログラム開始(スレーブ側は未接続)
10秒直後…EtherCATのマスターが動作(Enable)→Y001を出力(TRUE)→左下動画の「黄色LED」がON
(EtherCATの通信はできずY002は出力できず(False)→左下動画の「赤色LED」がOFF)
21秒辺り…マスター側のステータスを確認。通信できておらずフレームカウント・エラーカウントも止まっている
30秒以降…EtherCATのオブジェクトを確認。マスター内部的にはカウントしているところもあるが、基本Falseか止まっている
40秒辺り…EtherCATのオブジェクトとしてイネーブル「m_xEnable」が動作していること確認。
まとめ
少し長い記事なってしまいましたが、ラズパイで簡単にEtherCATのマスターのテストができることを分かってもらえれば幸いです。
またCODESYSならばテスト動画のようにPLC側とも接続することができます。もし皆さまも興味あれば試してみてください。
コメント