Modbus RTUの通信プロセス

本記事では、RENESASのModbus RTUソリューションを例に、Modbus RTUの通信プロセス全体について解説します。

(画像提供:RENESAS)

バス全体のトポロジ

1台のマスターデバイス(PLC/Raspberry Pi)と、複数のスレーブデバイス(温湿度トランスミッタおよびその他のフィールドデバイス)で構成されます。このシステムではRS485半二重差動バスを採用しています。標準的なリクエスト/レスポンス通信メカニズムに従い、マスターデバイスのみが能動的にコマンドを送信でき、スレーブデバイスは受動的に応答することしかできません。

Modbus UARTシリアルポートの基本パラメータ

image

(画像提供:RENESAS)

1. ボーレート: 19200bps
2. データ長

  • Modbus ASCII:7 bits
  • Modbus RTU:8ビット(重要な違いです!RTUは完全なバイナリバイトを送信します)

3. パリティ: 偶数パリティ(産業用温湿度トランスミッタで最も一般的に使用されています。実際の用途ではパリティなしも広く採用されています)

4. ストップビット: 1 bit

5. フロー制御: ハードウェアフロー制御なし

技術的なヒント: マスターおよびすべてのスレーブデバイスのシリアルポートパラメータは、完全に一致している必要があります。一致していない場合、正常な通信を確立できません。

Modbus RTUは、シリアルポートのタイミングに基づいてフレームの境界を識別し、ボーレートによってフレーム認識のための重要な時間閾値が直接決定されます。

通信プロセス全体(スレーブRTUモード)

1. アイドル状態: RS485インターフェースは、デフォルトで受信状態(P31がローレベル)になります。マスターは1秒タイマによって送信を開始し、スレーブはバス状態を継続的に監視します。

2. 送信フェーズ: マスターまたはスレーブがP31ピンをハイレベルにし、UARTはCRCチェックサム付きのRTUバイナリフレームを出力します。

3. 受信フェーズ: P31ピンをローレベルにして、受信状態に切り替えます。UARTはデータをバイト単位でキャッシュし、TAU0モジュールは文字間隔をリアルタイムで監視します。

4. フレーム終了判定: バスのアイドル時間が3.5文字分に達すると、システムはデータ受信を終了し、解析のためにデータをメインループへ転送します。

5. 検証およびアプリケーション処理: CRCチェック、アドレス検証、ファンクションコード検証を行い、ローカルレジスタの読み書きを行い、対応する応答フレームを生成します。

6. ログ出力: すべての送受信フレーム、エラーレコード、およびコールバックイベントは、独立したUARTA0インターフェースを介してデバッグログとして出力されます。

(RENESASのModbus RTU アプリケーションノートより抜粋)

関連製品

その他の資料

関連技術トピック




オリジナル・ソース(English)