I-I/Oコンテナ CAN
最終更新日:2025/3/7
■ 概要
CAN(Controller Area Network)は、特に車載用途で使用されるシリアルバス規格です。耐ノイズ性が高い伝送方式や、静的に決定可能なフレーム優先度制御(ID 部を使用)などを持ち、堅牢な制御ネットワークを構築することができます。
I-I/Oコンテナ CANでは、EtherCAT接続のCANゲートウェイと通信を行い、CAN送受信フレームデータや各種診断情報などをタグとリンクさせます。これにより、ユーザはEtherCATプロトコルやCANゲートウェイの制御を意識することなく、タグへのアクセスによってCANフレームのやりとりを行うことができます。
また、フレームデータタグへのアクセスを補助するためのAPIも提供しています。
■ 特長
プログラムレスでのEtherCAT + CAN通信
本コンテナは、本コンテナで制御可能なCANゲートウェイの検索やCAN通信に必要なタグの生成を自動的に行います。ユーザは生成されたタグにアクセスするだけでCAN通信を行うことができます。
その他のEtherCATスレーブと併用できる
本コンテナはI-I/Oコンテナ ECATに機能を追加する形で動作します。このため、CANゲートウェイ以外のスレーブとの通信も、従前通りタグを作成することによって行うことができます。
■ 仕様
I-I/Oコンテナ CAN固有の使用は以下の通りです。
EtherCAT機能についての仕様につきましては、I-I/Oコンテナ ECATの詳細ページをご参照ください。
動作プラットフォーム |
産業用PC |
対応CANゲートウェイ |
BECKHOFF社製 EL6751 |
使用ドライバ |
micronet社製 RSI-ECAT-Master (v4.1.0以上) |
|
micronet社製 RSI-CAN-E1 |
対応できる台数 |
最大99台 |
送受信バッファ長 |
1024フレーム(ゲートウェイ毎に) |
対応フレームフォーマット |
標準(11bit ID)、拡張(29bit ID)※ |
データ更新周期 |
EtherCATの通信周期に連動 |
※拡張フレームの送受信に対応するには、あらかじめEtherCATのENI設定で対象のCANゲートウェイを拡張フレーム対応I/Fに設定する必要があります。詳細につきましてはRSI-CAN-E1のユーザーズマニュアルをご参照下さい。
本コンテナが作成するタグ
以下、「xx」にはCANゲートウェイの識別番号が入ります(00~99)。
SERVICE.ECAT.CAN.SlaveCount |
本コンテナが認識したCANゲートウェイの台数 |
SERVICE.ECAT.CAN.xx.TxFrameFIFO |
送信フレームキュー |
SERVICE.ECAT.CAN.xx.RxFrameFIFO |
受信フレームキュー |
SERVICE.ECAT.CAN.xx.DeviceStateImage |
CAN送受信エラー状況・診断情報 |
SERVICE.ECAT.CAN.xx.SlaveType |
CANゲートウェイのI/F種別 |
SERVICE.ECAT.CAN.xx.SlaveIndex |
CANゲートウェイのEtherCAT上での接続位置 |
SERVICE.ECAT.CAN.xx.VIOS_IN.Offset |
CANゲートウェイが使用するプロセスイメージの先頭位置 |
SERVICE.ECAT.CAN.xx.VIOS_IN.Size |
CANゲートウェイが使用するプロセスイメージのサイズ |
SERVICE.ECAT.CAN.xx.VIOS_OUT.Offset |
CANゲートウェイが使用するプロセスイメージの先頭位置 |
SERVICE.ECAT.CAN.xx.Size |
CANゲートウェイが使用するプロセスイメージのサイズ |
■ サンプルシステム
I-I/Oコンテナ ECAT + CANの動作を解説するためのサンプルシステム構成を以下のように定義します。
edgeコントローラ ⇔EtherCAT通信⇔ EtherCATスレーブ
スレーブ接続順番号 |
EtherCATスレーブ |
Eバスデバイス |
備考 |
0 |
(任意のEtherCATスレーブ) |
- |
|
1 |
BECKHOFF社製 EK1100 EtherCATカプラ |
|
|
2 |
|
BECKHOFF社製 EL6751 CANゲートウェイ |
標準(11bit ID)専用I/Fに設定 |
3 |
|
BECKHOFF社製 ELxxxx (任意のターミナル) |
|
4 |
|
BECKHOFF社製 EL6751 CANゲートウェイ |
拡張(29bit ID)対応I/Fに設定 |
- |
|
|BECKHOFF社製 EL9011 バスエンドカバー |
|
5 |
(任意のEtherCATスレーブ) |
- |
|
6 |
BECKHOFF社製 EK1100 EtherCATカプラ |
|
|
7 |
|
BECKHOFF社製 ELxxxx (任意のターミナル) |
|
8 |
|
BECKHOFF社製 EL6751 CANゲートウェイ |
標準(11bit ID)専用I/Fに設定 |
- |
|
BECKHOFF社製 EL9011 バスエンドカバー |
|
このとき、本コンテナが作成するタグは以下のようになります。
SERVICE.ECAT.CAN.SlaveCount |
3 |
SSERVICE.ECAT.CAN.00.~ |
スレーブ接続順番号2のCANゲートウェイの情報/制御 |
SERVICE.ECAT.CAN.01.~ |
スレーブ接続順番号4のCANゲートウェイの情報/制御 |
SERVICE.ECAT.CAN.02.~ |
スレーブ接続順番号8のCANゲートウェイの情報/制御 |
本コンテナが作成するタグのゲートウェイ識別番号は、本コンテナが取り扱うことのできるCANゲートウェイのみを、スレーブ接続順に連番としたものになります。
動作の確認
RT-Edge標準のオブジェクトブラウザツールを用いると、Edgeタグの値変化をダイナミックに参照できます。
送受信の例
00番のCANゲートウェイからCANフレームを送信するには、タグ「SERVICE.ECAT.CAN.00.TxFrameFIFO」にフレームデータをEnqueueします。
01番のCANゲートウェイからCANフレームを受信するには、タグ「SERVICE.ECAT.CAN.01.RxFrameFIFO」からフレームデータをDequeueします。
フレームデータは以下のフォーマットです。
以下は、00番のCANゲートウェイからフレームを受信する例です。
以下は、01番のCANゲートウェイからフレームを送信する例です。
異常検知の例
02番のCANゲートウェイのエラー発生状況等を取得するには、タグ「SERVICE.ECAT.CAN.02.DeviceStateImage」を読みだします。タグのデータフォーマットは以下の通りです。
各項目の詳細については、RSI-CAN-E1 ユーザーズマニュアルをご参照下さい。