I. 概要
当社は、ModbusとCANの両方のプロトコルをサポートする幅広いデバイスを提供しています。しかし、ユーザーが産業現場やその他のアプリケーションに適した通信プロトコルを選択するのは容易ではありません。この記事では、CANとModbusの違いを明確にし、お客様がそれぞれのニーズに合った製品を選択できるよう支援することを目的としています。まず、これら2つのプロトコルについて簡単に説明します。
1.1 CANバスは、1980年代にBoschによって開発されたバス型通信プロトコルです。物理層とデータリンク層で定義されていますが、固有のアプリケーション層は持たず、CANopen、DeviceNet、J1939などの上位層プロトコルによって拡張できます。元々は車載電子機器などのリアルタイム組み込みシステム向けに設計されました。
1.2 Modbusプロトコルは、Modiconが開発したアプリケーション層プロトコルです。シリアル通信(Modbus RTU/ASCII)やEthernet(Modbus TCP)など、さまざまな物理層上で動作します。Modbusは、そのシンプルさ、オープン性、汎用性から、PLC、周波数変換器、メータ、SCADAシステム間の通信に広く利用されています。
1.3 まとめ: CANは低レベルの通信プロトコルであるのに対し、Modbusは高レベルのアプリケーションプロトコルです。
II. 物理層とトポロジ
2.1 伝送媒体と配線
-
CAN: ツイストペアケーブル(CAN_H/CAN_L)を使用し、バスの両端に120Ωの終端抵抗が必要です。
-
Modbus RTU: 通常はツイストペアケーブル(RS-485)を使用し、低ボーレートでは最大約1200mまで伝送可能で、こちらも終端抵抗が必要です。
-
Modbus TCP: 標準Ethernet(Cat5/Cat6)上で動作し、既存のネットワークインフラを再利用できます。
2.2 ノード数とネットワークトポロジ
-
CAN: 最大約110ノード(トランシーバの負荷に依存)をサポートし、すべてのノードが「ピアツーピア」構成で接続されます。
-
Modbus RTU: RS-485バスは、マスタースレーブアーキテクチャを使用し、バスあたり最大32台のデバイス(負荷依存)をサポートします。
-
Modbus TCP: ノード数は、Ethernetスイッチのポートとネットワーク規模によってのみ制限されます。
III. データリンク層とアクセス方式
3.1 バスアクセス制御
-
CAN: ビットレベルでCSMA/CR(Carrier Sense Multiple Access/Collision Resolution)を実装します。アービトレーション(通信調停)はメッセージ識別子(ID)に基づいて行われ、IDが小さいほど優先度が高くなり、決定論的なアクセスが保証されます。
-
Modbus: すべての通信はマスターによって開始され、スレーブを順次ポーリングします。通信遅延は、ポーリング間隔とデバイス数に依存します。
3.2 エラー検出と処理
-
CAN: ハードウェアレベルのCRCチェック、ビットスタッフィング検証、ACKスロット、および自動再送により、フレームの完全性と信頼性を確保します。
-
Modbus: RTUモードではCRC-16、ASCIIモードではLRCを使用します。エラーのタイムアウトと再試行ロジックは、アプリケーションソフトウェア/ファームウェアで実装する必要があります。
IV. フレーム構造とペイロード
4.1 CANフレーム
-
識別子(ID)と優先度: 標準フレームは11ビットID、拡張フレームは29ビットIDを使用し、ID値の昇順に基づいてアービトレーション(通信調停)が行われます。
-
ペイロード: 従来のCANは最大8バイト、CAN FDは最大64バイトをサポートします。
4.2 Modbusフレーム
-
アドレスと機能コード: 1バイトのデバイスアドレス + 1バイトの機能コード + データ + 2バイトのCRC(RTUモード)です。
-
ペイロード長: RTUモードでは最大252バイト、Modbus TCPのペイロードは実質的に「無制限」(Ethernetパケットサイズに制約されます)。
V. 速度と距離のトレードオフ
-
CAN: 最大速度は1Mbps(40m以内)です。距離により速度は低下します(例えば500mでは125kbpsになります)。
-
Modbus RTU: 標準的なボーレートは9600~115200bpsです。100kbps以下では最大約1200mまで対応します。
-
Modbus TCP: 100Mbpsまたは1Gbpsをサポートしますが、Ethernetのハードウェアによって制限されます。