HOME > RSI_CAN-E
RSI-CAN-E
◆PCI/PCIeスロット不要、どのPCでもCAN通信
RSI-CAN-Eは、フィールドバスの一種であるEtherCATを介してCAN通信を可能にします。
PCI/PCI Expressスロットを持たないPCでもCAN通信を実現できるため、PC選定の自由度が向上します。
さらに、EtherCAT経由で接続することで、デジタル入出力・アナログ入出力・シリアル通信ゲートウェイなど、多様なEtherCATサブデバイスと組み合わせて柔軟なシステム構成が可能です。
CAN(Controller Area Network)は、車載分野を中心に広く採用されている堅牢なシリアル通信規格であり、高い耐ノイズ性とIDベースの優先度制御により、安定した制御ネットワークを構築できます。
PCI/PCI Expressスロットを持たないPCでもCAN通信を実現できるため、PC選定の自由度が向上します。
さらに、EtherCAT経由で接続することで、デジタル入出力・アナログ入出力・シリアル通信ゲートウェイなど、多様なEtherCATサブデバイスと組み合わせて柔軟なシステム構成が可能です。
CAN(Controller Area Network)は、車載分野を中心に広く採用されている堅牢なシリアル通信規格であり、高い耐ノイズ性とIDベースの優先度制御により、安定した制御ネットワークを構築できます。
◆特長
(1) PCI/PCI Expressスロット不要、拡張ボード不要
本製品の通信インターフェースには、EtherCAT接続のCANゲートウェイ・サブデバイスを採用しており、PCI/PCI Expressスロットを持たない小型産業用PCなどでも、Ethernetポートを利用することでCAN通信を実現することができます。(2) 本製品を複数使用する事で、複数チャンネルをサポート
本製品は1つでCAN通信1チャンネルをサポートします。複数のチャンネルを使用する場合は、その数分の本製品を用意することで複数のチャンネルに対応できます。(3) 既存のEtherCAT構成に組み込んで使用可
既に弊社製品RSI-ECAT-Masterを利用したEtherCATシステムを構築されている場合、既存のアプリケーションを変更することなく本製品を追加して使用することが可能です。(※1)同様に、弊社が提唱しております産業用システムプラットフォーム "RT-edge" を利用したEtherCAT通信(I-I/Oコンテナ)を利用されている場合も、既存のアプリケーションを変更することなく本製品を追加して使用することが可能です。(※1)(※2)
(※1) 別途、本製品のサブデバイス情報を追加したENIファイルを生成する必要がございます。
(※2) RT-edgeシステムのバージョンアップが必要になる場合がございます。また、I-I/Oコンテナで使用するモジュールを変更する必要がございます。
◆仕様
項目 | 詳細 |
付属デバイス | BECKHOFF社製 EL6751 CANゲートウェイ×1 |
使用可能ポート数 | 1ポート |
通信規格 | CAN 2.0A(標準フレームフォーマット: 11bit ID) CAN 2.0B(拡張フレームフォーマット: 29bit ID) |
通信速度(kbps) | 10, 20, 50, 100, 125, 250, 500, 800, 1000, 又はマニュアル設定 |
送信バッファ長 | 1024フレーム / ゲートウェイ |
受信バッファ長 | 1024フレーム / ゲートウェイ |
送受信可能なフレーム | データフレーム、リモートフレーム |
通信周期 | EtherCATマスタサイクルと連動 |
取得可能な診断情報 | ゲートウェイのDeviceState情報、ドライバの動作状態 |
その他 | 本ドライバが取り扱えないサブデバイスとの共存・同時利用可: RSI-ECAT API・RT-edge I-I/Oコンテナ(ECAT) タグ同期機能によるアクセス |
※本製品のドライバを使用するには、RSI-ECAT-Master(別売品)が必要です。
◆サンプルシステム
RSI-CAN-E を 2つ利用したサンプルシステム構成を以下のように定義します。
このとき、本ドライバが認識するRSI-CAN-Eの接続順番号は、以下の通りです。
上記番号は、本ドライバが取り扱うことのできるCANゲートウェイ(EL6751)のみを、サブデバイス接続順に連番としたものになります。本ドライバのAPIを使用する場合は、こちらの番号を使用して通信を行います。

接続順番号 | EtherCATサブデバイス情報 |
0 | 任意のEtherCATサブデバイス A |
1 | BECKHOFF製 EK1100 |
2 | BECKHOFF製 EL6751 (RSI-CAN-E 同梱) |
3 | BECKHOFF製 EL1012 |
4 | BECKHOFF製 EL6751 (RSI-CAN-E 同梱) |
- | BECKHOFF製 EL9011 |
5 | 任意のEtherCATサブデバイス B |
このとき、本ドライバが認識するRSI-CAN-Eの接続順番号は、以下の通りです。
接続順序番号 | RSI-CAN-E 接続順序番号 | EtherCATサブデバイス情報 |
---|---|---|
2 | 0 | 上記表、接続順番号 2 の EL6751 |
4 | 1 | 上記表、接続順番号 4 の EL6751 |
上記番号は、本ドライバが取り扱うことのできるCANゲートウェイ(EL6751)のみを、サブデバイス接続順に連番としたものになります。本ドライバのAPIを使用する場合は、こちらの番号を使用して通信を行います。
動作の確認
本製品に同封しておりますRT-Edge標準のオブジェクトブラウザツールを用いると、ドライバ部の動作をダイナミックに参照できます。
送受信の例
以下は、0番のCANゲートウェイ(EL6751)からフレームを受信する例です。
int32_t result;
uint32_t id;
bool ext, rtr;
int32_t length;
uint8_t data[8];
result = CAN_Read(0, &id, &ext, &rtr, &length, &data);
if (result > 0) {
printf("成功");
} else if (result == 0) {
printf("データ不在");
} else if (result < 0) {
printf("失敗");
}
以下は、1番のCANゲートウェイ(EL6751)からフレームを送信する例です。
int32_t result;
uint8_t data[8] = {0x01, 0x02, 0x03};
result = CAN_Write(1, 0x123, false, false, 3, &data);
if (result > 0) {
printf("成功");
} else if (result <= 0) {
printf("失敗");
}
異常検知の例
CANゲートウェイ(EL6751)のエラー発生状況等を取得するには、CAN_GetDeviceState() APIを利用します。
取得できる情報の一例を以下に示します。
各項目の詳細については、RSI-CAN-E API リファレンスマニュアル(DOCRSICANEAPI.pdf 21ページ)をご参照下さい。
取得できる情報の一例を以下に示します。
#pragma pack(push, 1)
struct CAN_SLAVE_DEVICE_STATE {
uint8_t node_state; // 0:CANノードとして動作中(正常), 0以外:エラー
uint8_t error; // 0:正常, 0以外:エラー
uint16_t can_state; // 0:正常, 0以外:エラー
uint8_t rx_error_count; // CAN通信 受信エラーカウント値
uint8_t tx_error_count; // CAN通信 送信エラーカウント値
unsigned char diag_flag : 1; // (未使用)
unsigned char node_diag_flag : 1; // (未使用)
unsigned char padding1 : 6; // (未使用)
};
#pragma pack(pop)