産業用通信の分野で「Modbus」という名前を耳にしたことがある方は多いでしょう。
Modbusは1979年にModicon社が開発した産業用通信プロトコルで、今日でも世界中の工場・ビル設備・エネルギー管理システムで最もよく使われているプロトコルのひとつです。
そしてModbus通信の物理層として最も広く採用されているのが「RS485」です。
この記事では、RS485上のModbus通信の仕組み・RTUモードとASCIIモードの違い・マスター・スレーブの動作・フィールドバスとしての特性・データ伝送の流れなどについてわかりやすく解説していきます。
制御システム・産業用ネットワークの構築に関わるすべての方にとって、Modbusの基礎知識は欠かせない技術情報です。
Modbus通信とは何か?RS485との関係
それではまず、Modbusプロトコルの基本概念とRS485との関係について解説していきます。
Modbusはシリアル通信を使ったマスター・スレーブ型の産業用通信プロトコルです。
RS485はModbusの「物理層(電気的インターフェース)」を担い、Modbusは「アプリケーション層(通信手順・データ形式)」を定義するという役割分担があります。
Modbusプロトコルはその設計がシンプルで実装が容易なため、誕生から40年以上経った現在でも新規システムに採用され続けています。
RS485の差動信号によるノイズ耐性・長距離伝送・マルチドロップ接続という優れた物理特性と、Modbusのシンプルで実績あるプロトコルが組み合わさることで、産業用通信の事実上の標準として世界的に普及しています。
Modbusには複数の実装形態があります。「Modbus RTU」はRS485(またはRS232)上で動作するバイナリ形式、「Modbus ASCII」はRS485(またはRS232)上で動作するASCII形式、「Modbus TCP/IP」はイーサネット上で動作するTCPベースの形態です。産業用RS485通信ではModbus RTUが最も広く使われています。
Modbus RTUとASCIIの比較
| 比較項目 | Modbus RTU | Modbus ASCII |
|---|---|---|
| データ形式 | バイナリ(8ビット) | ASCII文字(16進数表現) |
| メッセージ効率 | 高い(コンパクト) | 低い(RTUの約2倍のデータ量) |
| エラーチェック | CRC-16(高信頼性) | LRC(縦方向冗長検査) |
| メッセージ区切り | 無信号時間(3.5文字時間) | コロン(:)と改行(CR/LF) |
| 通信速度 | 高速(9600〜115200bps以上) | 低速(ASCII変換オーバーヘッド) |
| 用途 | ほぼすべての産業用途で標準 | 旧システム・デバッグ容易な環境 |
現代の産業用RS485通信ではModbus RTUがデファクトスタンダードであり、新規システム設計ではRTUが推奨されます。
ASCIIモードはメッセージの内容を人間が直接読みやすい形式であるため、デバッグ・初期調整が容易という利点はありますが、データ効率の悪さから本番環境ではほとんど使われません。
マスター・スレーブの動作原理
Modbusはマスターとスレーブによるポーリングベースのプロトコルです。
マスター(1台)が特定のスレーブ(アドレスで指定)に対してリクエストを送信し、スレーブはリクエストを受信してレスポンスを返します。
スレーブからは自発的にデータを送信することはなく、必ずマスターのリクエストに応答する形でのみ通信が行われます。
ブロードキャスト(スレーブアドレス0番)を使うとすべてのスレーブに対してコマンドを一斉送信できますが、ブロードキャストへの応答はありません。
マスターは1つのRS485バスに1台のみ存在できますが、スレーブは最大247台(アドレス1〜247)まで接続可能です。
フィールドバスとしてのModbus RTU
「フィールドバス」とは工場や設備の現場(フィールド)でセンサー・アクチュエータ・コントローラなどを接続するためのネットワーク技術の総称です。
Modbus RTU over RS485はその代表的なフィールドバスのひとつであり、シンプルさ・低コスト・広い互換性から最も普及しているフィールドバスといえます。
PROFIBUSやDeviceNetなど高機能なフィールドバスが普及した現代でも、Modbus RTUはそのシンプルさと豊富な対応製品から新規システムにも選ばれ続けています。
Modbusのデータ構造とファンクションコード
続いては、Modbusのデータ構造と主要なファンクションコードについて確認していきます。
Modbusのデータモデルは4種類のデータ領域(コイル・ディスクリート入力・入力レジスタ・保持レジスタ)で構成されており、各領域へのアクセス方法がファンクションコードによって定義されています。
Modbusのデータモデル
| データ種別 | データサイズ | アクセス種別 | 典型的な用途 |
|---|---|---|---|
| コイル(Coil) | 1ビット | 読み書き可 | デジタル出力(モーターON/OFFなど) |
| ディスクリート入力 | 1ビット | 読み取り専用 | デジタル入力(スイッチ状態など) |
| 入力レジスタ | 16ビット | 読み取り専用 | アナログ入力(センサー値など) |
| 保持レジスタ | 16ビット | 読み書き可 | 設定値・制御パラメータ |
保持レジスタは16ビット(2バイト)単位でデータを格納し、複数レジスタを組み合わせて32ビット浮動小数点数などを表現することも一般的です。
Modbusのレジスタアドレスは0ベースと1ベースの表記が混在することがあるため、機器マニュアルのアドレス表記方式を確認することが重要です。
主要なファンクションコード
Modbusのファンクションコードはマスターがスレーブに対してどの操作を要求するかを示すコードです。
代表的なファンクションコードとして「FC01(コイル読み取り)」「FC02(ディスクリート入力読み取り)」「FC03(保持レジスタ読み取り)」「FC04(入力レジスタ読み取り)」「FC05(単一コイル書き込み)」「FC06(単一レジスタ書き込み)」「FC15(複数コイル書き込み)」「FC16(複数レジスタ書き込み)」があります。
FC03(保持レジスタ読み取り)は最も頻繁に使用されるファンクションコードであり、センサーデータ・機器状態の読み出しに広く活用されます。
Modbus RTUメッセージフォーマット
Modbus RTUリクエストメッセージの構成
・スレーブアドレス(1バイト):対象スレーブのアドレス(1〜247)
・ファンクションコード(1バイト):操作の種類(例:03=保持レジスタ読み取り)
・データフィールド(可変長):開始アドレス・読み取り数などの操作パラメータ
・CRC-16(2バイト):エラー検出用チェックサム
例:アドレス1のスレーブのレジスタ40001から2つ読み取る場合
01 03 00 00 00 02 C4 0B(16進数表記)
CRC-16はメッセージ全体(CRC自身を除く)の内容から計算される2バイトのチェックサムであり、通信中のビット誤りを高い確率で検出できます。
受信側でCRC値を再計算して受信データのCRCと比較することで、通信エラーを検出します。
RS485とModbusの組み合わせによる産業用ネットワーク
続いては、RS485とModbusを組み合わせた産業用ネットワークの構築と運用について確認していきます。
実際の産業現場でRS485とModbusがどのように使われているかを理解することで、システム設計の具体的なイメージが掴めます。
典型的なModbus RTUネットワークの構成
RS485バス上のModbus RTUネットワークの典型的な構成は次のようになります。
PLC・産業用PC・HMIなどのマスター機器が1台、インバータ・温度調節器・電力計・センサーなどのスレーブ機器が複数台、ツイストペアケーブル(2線または3線)で全機器をバス接続し、バス両端に120Ωの終端抵抗を設置します。
マスターはポーリング(順番に各スレーブへリクエストを送信)によって全スレーブのデータを収集・制御します。
ポーリング周期(全スレーブのデータを1巡取得する時間)は接続スレーブ数・通信速度・レジスタ数によって決まり、システム設計の重要なパラメータです。
通信速度とポーリング周期の設計
Modbus RTUでは通信速度(ボーレート)の選択がポーリング周期・リアルタイム性に大きく影響します。
一般的なModbus RTUの通信速度は9600bps・19200bps・38400bps・115200bpsが多く使われます。
9600bpsでスレーブ32台から各10レジスタを読み取る場合のポーリング周期は概算で数秒程度となりますが、115200bpsでは数百ミリ秒程度まで短縮できます。
高速なリアルタイム制御には115200bps以上の速度が推奨されますが、長距離配線では速度を下げる必要があるため、距離と速度のバランス設計が重要です。
スレーブ機器側の応答遅延時間(ターンアラウンドタイム)も考慮した設計が必要で、機器によっては応答に数十ミリ秒かかるものもあります。
エラー処理と通信信頼性の確保
Modbus RTUのCRC-16エラーチェックによって、通信中のビット誤りを検出することができます。
マスターはスレーブからの応答が一定時間(タイムアウト時間)内に返らない場合は再送処理を行います。
再送回数・タイムアウト時間の設定はシステムの信頼性要件に応じて適切に設定することが重要です。
通信エラーが多発する場合は、ケーブル・終端抵抗・スレーブアドレスの重複・ボーレート不一致などを確認する必要があります。
Modbusには例外応答(Exception Response)という仕組みがあり、スレーブが無効なリクエストを受けた場合にエラーコードをマスターに返すことで、問題箇所の特定が容易になります。
Modbus RTUの実装と設定のポイント
続いては、Modbus RTUシステムを実際に実装・設定する際の重要なポイントについて確認していきます。
スレーブアドレスの設定と管理
Modbusスレーブアドレスは1〜247の範囲で、バス上で重複してはなりません。
アドレスの重複は通信の混乱・誤動作の原因となるため、システム設計段階でアドレスマップを作成し、各機器のアドレスを管理することが重要です。
多くの機器ではDIPスイッチやソフトウェア設定でアドレスを設定できますが、出荷時デフォルトアドレスが同一(多くの場合アドレス1)のことが多いため、接続前に必ず確認と変更を行います。
スレーブアドレスの管理は特に多ノード構成で重要であり、アドレスマップの台帳管理を徹底することが保守性の高いシステム構築の基本です。
シリアルパラメータの統一
Modbus RTU通信ではマスターとすべてのスレーブが同一のシリアルパラメータで動作している必要があります。
統一が必要なパラメータはボーレート(通信速度)・データビット数(通常8ビット)・パリティ(なし・偶数・奇数)・ストップビット数(1または2ビット)です。
一般的な設定は「9600bps / 8ビット / パリティなし / 1ストップビット(9600-8-N-1)」または「19200-8-E-1(パリティあり)」などが多く採用されます。
パラメータの不一致はすべての通信を不能にするため、接続機器すべての設定を確認することが必須です。
Modbus診断ツールの活用
Modbus RTUシステムのデバッグ・通信確認には専用の診断ツールが有効です。
「Modbus Poll」(マスターシミュレーター)・「Modbus Slave」(スレーブシミュレーター)などのPCソフトウェアを使うことで、実際の機器なしにModbus通信の動作確認・デバッグが行えます。
RS485-USB変換器をPCに接続してModbus Pollを起動することで、任意のスレーブアドレス・レジスタへのリード・ライトが実行でき、機器の動作確認に大変便利です。
通信ログ機能を持つツールを使えば送受信データをバイト単位で記録・分析できるため、問題の原因特定が大幅に容易になります。
まとめ
この記事では、RS485上のModbus通信の仕組み・RTUとASCIIの比較・マスター・スレーブの動作・データモデルとファンクションコード・産業用ネットワーク構築のポイントについて詳しく解説してきました。
RS485とModbus RTUの組み合わせは、シンプルさ・実績・コストパフォーマンスの三拍子が揃った産業用通信の定番ソリューションです。
Modbusのデータモデルとファンクションコードを正確に理解し、適切な通信速度・ポーリング設計を行うことで、信頼性の高い産業用通信システムを構築できます。
RS485とModbus通信に取り組むすべての方にとって、この記事が有益な情報となれば幸いです。