
工場設備の立ち上げで、温調器やインバータ、電力計をPLCにつなごうとしたとき、「Modbus対応」と書かれていて戸惑った経験はないでしょうか。
Modbusは産業機器で広く使われる通信プロトコルですが、実務では「RTUとTCPの違い」「RS-485の配線」「レジスタアドレス」「ファンクションコード」でつまずきやすいです。
Modbusとは、PLCやマイコン、センサ、計測器などが、決められた形式でデータを読み書きするための産業用通信ルールです。
本記事では、Modbusの基本から、Modbus RTUとModbus TCPの違い、通信の仕組み、レジスタの読み方、よくあるトラブルまでを実務目線で解説します。
「機器同士をつなげるだけ」ではなく、どの設定を合わせるべきか、どこを確認すれば通信不良を切り分けられるかまで理解できる内容を目指します。
- 1. Modbusとは何か
- 2. Modbusが産業機器で使われる理由
- 3. Modbus通信の基本構造
- 4. Modbus RTUとは
- 5. Modbus TCPとは
- 6. Modbus RTUとTCPの違い
- 7. コイル・レジスタ・アドレスの考え方
- 8. ファンクションコードの基本
- 9. Modbusの実務例
- 10. Modbusでよくある通信トラブル
- 11. Modbusを設計・導入するときのチェックリスト
- よくある質問
- まとめ
1. Modbusとは何か
Modbusとは、産業機器同士がデータをやり取りするための通信プロトコルです。
プロトコルとは、簡単にいえば「通信の約束事」です。どの相手に、どのデータを、どの形式で送るかを決めたルールだと考えるとわかりやすいです。
工場では、PLC、温調器、インバータ、電力量計、流量計、圧力センサ、表示器、データロガーなど、多くの機器が互いに情報をやり取りします。
それぞれのメーカーが独自形式で通信していると、機器を組み合わせるたびに専用プログラムや専用変換器が必要になります。
そこで、共通の読み書きルールとして使われてきたのがModbusです。
Modbusでできること
Modbusでは、主に次のようなデータを読み書きします。
- センサの測定値をPLCへ読み込む
- インバータの運転周波数を上位機器から設定する
- 温調器の現在温度や目標温度を監視する
- 電力計の電流・電圧・積算電力量を収集する
- 装置の運転状態やアラーム状態を表示器へ送る
つまりModbusは、装置制御そのものというより、機器内部のデータを外部から読み書きするための共通インターフェースです。
「通信できる」と「制御できる」は別問題
実務で注意したいのは、Modbus対応機器をつなげれば自動的に制御できるわけではない点です。
Modbusはあくまでデータの読み書き方法を定めるものです。どのアドレスに何の値が入っているか、どの値を書けば運転開始になるかは、機器ごとのマニュアルで確認する必要があります。
たとえば同じ「40001番地」と書かれていても、メーカーやソフトによって表示上の番号と実際の通信アドレスが1ずれる場合があります。
この「プロトコルは共通だが、データマップは機器ごとに違う」という理解が、Modbusを扱う第一歩です。
制御の全体像をつかみたい場合は、PLCやシーケンス制御の考え方と合わせて理解すると、Modbusの位置づけが見えやすくなります。
2. Modbusが産業機器で使われる理由
Modbusが長く使われている理由は、仕様が比較的シンプルで、実装しやすく、対応機器が多いからです。
新しい産業用ネットワークに比べると高速・高機能とはいえませんが、温調器や計測器のように「数値を定期的に読む」「設定値を書き込む」用途では、今でも十分に実用的です。
理由1:仕組みが単純で理解しやすい
Modbusの基本は、要求と応答です。
上位側の機器が「このアドレスの値を読ませてください」と要求し、対象機器が「この値です」と応答します。
この構造が単純なため、通信ログを見たときに原因を追いやすく、トラブル時の切り分けにも向いています。
理由2:多くの機器が対応している
Modbusは、温調器、インバータ、電力計、PLC、リモートI/O、表示器などで広く対応されています。
特に、異なるメーカーの機器を組み合わせる場面では、Modbus対応であることが接続性の大きなメリットになります。
もちろん、対応しているだけでは不十分です。RTUなのかTCPなのか、通信速度やデータ形式が合っているか、必要なレジスタが公開されているかまで確認する必要があります。
理由3:マイコン実装にも向いている
Modbusは、複雑なネットワークスタックを持たない小規模マイコンでも実装しやすい通信方式です。
RS-485通信と組み合わせたModbus RTUであれば、比較的少ないリソースで、センサモジュールや簡易コントローラを産業機器と接続できます。
そのため、組込みシステムの開発でも、上位PLCや表示器との接続手段として使われることがあります。
マイコン側のCPU・メモリ・I/Oの役割を整理しておくと、Modbus通信処理をどこで受け持つかも理解しやすくなります。
3. Modbus通信の基本構造
Modbus通信は、基本的に「要求する側」と「応答する側」に分かれます。
現在の仕様説明ではClient/Serverという表現が使われることが多く、現場では旧来のMaster/Slaveという言い方も残っています。
どちらの表現でも、考え方は同じです。ClientまたはMasterが要求を出し、ServerまたはSlaveが応答します。
要求と応答の流れ
典型的な流れは次の通りです。
- 上位機器が対象機器へ要求を送る
- 要求には、対象アドレス、処理内容、読み書きするデータ範囲などが含まれる
- 対象機器は要求を解釈し、指定されたデータを読む、または書く
- 対象機器が応答を返す
- エラーがあれば例外応答を返す
たとえばPLCが温調器の現在温度を読む場合、PLC側が「保持レジスタの何番から何個分を読ませてください」と要求します。
温調器は、そのアドレスに対応する現在温度の値を応答として返します。
Modbusの通信単位
Modbusでは、データのまとまりをフレームやメッセージとして扱います。
形式はRTUとTCPで異なりますが、基本的には「誰に」「何を」「どのデータに対して」行うかを含んでいます。
| 要素 | 意味 | 実務上の見方 |
|---|---|---|
| アドレス | 通信相手を識別する番号 | RTUではスレーブID、TCPではUnit IDとして扱われます |
| ファンクションコード | 読み取り・書き込みなどの処理内容 | 03なら保持レジスタ読取、06なら単一保持レジスタ書込など |
| データ部 | 開始アドレス、点数、書込値など | 機器のレジスタマップと照合して確認します |
| エラーチェック | 通信データの破損検出 | RTUではCRC、TCPではTCP/IP層とMBAPヘッダを利用します |
ポーリング通信が基本
Modbusは、上位側が順番に機器へ問い合わせるポーリング通信が基本です。
対象機器が自発的に好きなタイミングでデータを送るというより、上位側の要求に対して応答する形で動作します。
そのため、接続台数が多い場合や読み取り点数が多い場合は、更新周期が遅くなることがあります。
高速応答が必要な同期制御やモーション制御には向かず、監視・設定・低速なデータ収集に向いていると考えるのが現実的です。
4. Modbus RTUとは
Modbus RTUとは、主にRS-485などのシリアル通信で使われるModbusの代表的な形式です。
RTUはRemote Terminal Unitの略で、バイナリ形式でデータを送るため、ASCII形式より通信効率が高いのが特徴です。
Modbus RTUの基本構成
Modbus RTUのフレームは、一般的に次の要素で構成されます。
| 項目 | 内容 | 確認ポイント |
|---|---|---|
| スレーブアドレス | 対象機器の番号 | 同一ネットワーク内で重複させない |
| ファンクションコード | 読み書きの種類 | 機器が対応するコードか確認する |
| データ | アドレス、点数、書込値など | レジスタマップと照合する |
| CRC | 誤り検出用データ | 通信データの破損を検出する |
RS-485でよく使われる
Modbus RTUは、RS-485の2線式または4線式通信で使われることが多いです。
RS-485は差動信号を使うため、ノイズに比較的強く、複数機器を同じ通信線上に接続できます。
ただし、配線すれば必ず安定するわけではありません。終端抵抗、シールド処理、GND基準、分岐配線の長さ、通信速度などを誤ると通信エラーが発生します。
RTUで合わせるべき設定
Modbus RTUでは、機器同士でシリアル通信条件を一致させる必要があります。
| 設定項目 | 例 | 合っていない場合 |
|---|---|---|
| 通信速度 | 9600bps、19200bps、38400bpsなど | 応答なし、文字化け、CRCエラー |
| データ長 | 8bitが一般的 | 通信不能 |
| パリティ | なし、偶数、奇数 | フレームエラー、応答なし |
| ストップビット | 1bit、2bit | 通信不安定 |
| スレーブID | 1〜247など | 別機器へ要求する、または応答なし |
通信できないときは、プログラムの前に、まず通信条件が完全に一致しているかを確認するのが基本です。
5. Modbus TCPとは
Modbus TCPとは、EthernetとTCP/IP上でModbusを扱う方式です。
工場内LAN、産業用スイッチングハブ、PLC、HMI、データ収集PCなどを使う構成で利用されます。
Modbus TCPの基本
Modbus TCPでは、シリアル通信のような通信速度やパリティの設定は基本的に不要です。
その代わり、IPアドレス、サブネットマスク、ゲートウェイ、ポート番号、TCP接続数など、Ethernet通信の設定が重要になります。
標準的にはTCPポート502番が使われます。
MBAPヘッダを使う
Modbus TCPでは、RTUのCRCの代わりに、MBAPヘッダと呼ばれるヘッダ情報を使います。
MBAPヘッダには、トランザクションID、プロトコルID、データ長、Unit IDなどが含まれます。
これにより、TCP/IP上でModbusの要求と応答を対応付けて扱えます。
TCPだから万能ではない
Modbus TCPはEthernetを使えるため、RTUより高速で扱いやすい場面が多いです。
しかし、TCP/IPネットワークに乗る以上、IP設定ミス、ネットワーク分離、ファイアウォール、スイッチングハブ、同時接続数などの影響を受けます。
「LANケーブルを挿したのに通信できない」という場合、Modbusの問題ではなく、IPネットワーク側の問題であることも少なくありません。
データ収集や上位監視に向く
Modbus TCPは、複数設備のデータを上位PCやSCADA、ゲートウェイで収集する用途に向いています。
一方で、リアルタイム性の高いサーボ同期制御や安全制御では、専用の産業用Ethernetや安全プロトコルを使う方が適切な場合があります。
通信技術の考え方は、エンコーダのシリアル通信や産業用センサのデータ化ともつながります。
6. Modbus RTUとTCPの違い
Modbus RTUとModbus TCPの違いは、主に通信媒体、フレーム構造、設定項目、使われる場面にあります。
どちらが上位というより、現場の構成に合わせて使い分けるものです。
| 比較項目 | Modbus RTU | Modbus TCP |
|---|---|---|
| 通信媒体 | 主にRS-485などのシリアル通信 | Ethernet、TCP/IP |
| 識別方法 | スレーブアドレス | IPアドレス+Unit ID |
| エラーチェック | CRC | TCP/IP層とMBAPヘッダ |
| 設定項目 | 通信速度、パリティ、ストップビット、ID | IPアドレス、ポート、接続数、Unit ID |
| 配線 | バス配線、終端抵抗が重要 | LAN配線、スイッチングハブを使用 |
| 向く用途 | 現場機器との低速・中速通信 | 上位監視、データ収集、Ethernet化設備 |
| 代表例 | 温調器、インバータ、電力計のRS-485接続 | PLC、HMI、SCADA、ゲートウェイ接続 |
RTUを選ぶべき場面
既存機器がRS-485に対応している場合や、盤内・装置内で少数の計測器をつなぐ場合は、Modbus RTUが扱いやすいです。
配線コストを抑えやすく、1本の通信ラインに複数機器をつなげるため、温調器や電力計の集約に向いています。
TCPを選ぶべき場面
設備全体をEthernetでつなぎ、上位PCや監視システムでデータを集めたい場合は、Modbus TCPが向いています。
IPネットワーク上で扱えるため、データロガーやSCADAとの接続、複数ラインの集中監視に使いやすいです。
ゲートウェイで相互変換する場合
現場では、Modbus RTU機器をModbus TCPネットワークへ接続するために、RTU-TCPゲートウェイを使うことがあります。
この場合、上位側から見るとTCP機器に見えても、下位側ではRS-485のRTU通信が順番にポーリングされています。
そのため、TCP化してもRTU側の通信速度や接続台数の制約が消えるわけではありません。
7. コイル・レジスタ・アドレスの考え方
Modbusで最も混乱しやすいのが、コイル、入力、保持レジスタ、アドレス表記です。
ここを誤ると、通信自体は成功しているのに、違うデータを読んでしまうことがあります。
Modbusのデータ種別
Modbusでは、データをいくつかの領域として扱います。
| 領域 | データ単位 | 代表的な用途 | 主な操作 |
|---|---|---|---|
| Coils | 1bit | 出力状態、運転指令、ON/OFF状態 | 読取・書込 |
| Discrete Inputs | 1bit | 入力状態、接点状態 | 読取のみ |
| Input Registers | 16bit | 測定値、入力値 | 読取のみ |
| Holding Registers | 16bit | 設定値、状態値、制御パラメータ | 読取・書込 |
保持レジスタは16bitが基本
Modbusのレジスタは、基本的に16bit単位です。
32bit整数や浮動小数点を扱う場合は、複数の16bitレジスタを組み合わせます。
このとき、上位ワードと下位ワードの順番、バイト順、符号付き・符号なしの扱いが機器によって異なるため注意が必要です。
40001表記と実アドレスのずれ
マニュアルでは「40001」「30001」のような番号で表記されることがあります。
しかし、通信フレーム上のアドレスは0始まりで扱う実装も多く、表示上の40001が通信上のアドレス0に対応する場合があります。
このずれは、Modbusトラブルの代表例です。
通信ソフトやPLC命令によって「40001を指定する」のか「0を指定する」のかが異なるため、必ず使用するツール側の仕様を確認してください。
8. ファンクションコードの基本
ファンクションコードとは、Modbusで何を行うかを示す番号です。
読み取り、書き込み、複数点の書き込みなど、処理内容ごとにコードが決められています。
| コード | 名称 | 用途 | 実務例 |
|---|---|---|---|
| 01 | Read Coils | コイルの読取 | 運転状態、出力状態を読む |
| 02 | Read Discrete Inputs | 入力接点の読取 | スイッチ状態、入力状態を読む |
| 03 | Read Holding Registers | 保持レジスタの読取 | 設定値、現在値、パラメータを読む |
| 04 | Read Input Registers | 入力レジスタの読取 | 測定値を読む |
| 05 | Write Single Coil | 単一コイルの書込 | 運転指令をON/OFFする |
| 06 | Write Single Register | 単一保持レジスタの書込 | 設定値を1点変更する |
| 15 | Write Multiple Coils | 複数コイルの書込 | 複数出力をまとめて変更する |
| 16 | Write Multiple Registers | 複数保持レジスタの書込 | 複数パラメータをまとめて設定する |
読み取りだけで十分な場合も多い
監視目的であれば、03や04で値を読むだけで十分な場合があります。
一方、運転開始、周波数設定、目標温度設定などを行う場合は、05、06、15、16などの書き込みコードを使います。
書き込みは安全設計とセットで考える
書き込み通信を行う場合は、誤書き込みや通信異常時の挙動を必ず検討する必要があります。
たとえば、インバータに周波数指令や運転指令を書き込む場合、通信断時に停止するのか、最後の値を保持するのかで安全性が大きく変わります。
Modbusは便利ですが、安全機能そのものではありません。危険源を止める設計は、別途フェールセーフや安全回路で考える必要があります。
9. Modbusの実務例
ここでは、Modbusが実際にどのような場面で使われるかを整理します。
抽象的な通信仕様として覚えるより、対象機器とデータの流れで考えると理解しやすくなります。
例1:PLCから温調器の温度を読む
温調器には、現在温度、設定温度、制御出力、アラーム状態などがレジスタとして用意されています。
PLCは周期的に現在温度を読み取り、必要に応じて表示器へ表示したり、工程条件の記録に使ったりします。
設定温度を書き込む場合は、対象レジスタ、単位、スケーリング、書込許可条件を確認します。
例2:PLCからインバータを制御する
インバータでは、運転指令、停止指令、周波数指令、出力周波数、電流値、異常コードなどをModbusで扱える機種があります。
ただし、通信で運転指令を受け付けるには、インバータ側の運転指令ソースや周波数指令ソースを「通信」に設定する必要があります。
レジスタを書いているのに動かない場合、通信そのものではなく、インバータのパラメータ設定が原因であることもあります。
例3:電力計のデータを上位システムへ集める
電力計から電圧、電流、電力、力率、積算電力量などを読み出し、エネルギー監視や設備稼働分析に使うケースです。
複数台の電力計をRS-485でつなぎ、ゲートウェイ経由で上位システムへ送る構成もよくあります。
この場合、1台あたりの読み取り点数とポーリング周期を設計しないと、データ更新が遅くなります。
例4:マイコン機器をModbus対応にする
自社開発のセンサや簡易I/Oユニットを、PLCから扱えるようにするためにModbus RTUを実装することがあります。
この場合、マイコン側では、受信バッファ、CRC計算、タイムアウト処理、レジスタマップ、例外応答などを実装します。
通信仕様だけでなく、どのデータをどのアドレスに割り付けるかという設計も重要です。
10. Modbusでよくある通信トラブル
Modbusのトラブルは、通信設定、配線、アドレス、データ形式、機器側設定のどこかに原因があることが多いです。
現場で効率よく切り分けるためには、症状ごとに確認ポイントを分けるのが有効です。
| 症状 | 主な原因 | 確認ポイント |
|---|---|---|
| まったく応答がない | ID違い、配線違い、通信速度違い | スレーブID、A/B極性、通信条件、電源 |
| ときどき通信エラーになる | ノイズ、終端抵抗、分岐配線、通信周期過多 | シールド、終端、配線ルート、ポーリング間隔 |
| 値は読めるが数値がおかしい | アドレスずれ、倍率、ワード順、符号の違い | レジスタマップ、スケーリング、データ型 |
| 読めるが書けない | 書込禁止、権限不足、ファンクション未対応 | 書込許可設定、運転モード、対応コード |
| TCPで接続できない | IP設定、ポート、ファイアウォール、接続数制限 | IP疎通、ポート502、同時接続数、ネットワーク経路 |
A/B極性の確認
RS-485では、機器によってA/B表記の考え方が異なる場合があります。
A同士、B同士をつないだつもりでも、実際には極性が逆で通信できないことがあります。
通信条件が合っているのに応答がない場合は、A/Bを入れ替えて確認するのも実務上よく行われる切り分けです。
終端抵抗と分岐配線
RS-485は、通信線の両端に終端抵抗を入れる構成が基本です。
途中から長い枝配線を伸ばすと、反射や波形乱れによって通信が不安定になることがあります。
低速通信では一見動いても、設備稼働中のノイズで不安定になることがあるため、盤内だけでなく現場配線も確認してください。
スケーリングの確認
測定値が10倍、100倍ずれて見える場合は、通信不良ではなくスケーリングの問題である可能性が高いです。
たとえば、温度25.3℃を253として送る機器や、電流12.34Aを1234として送る機器があります。
マニュアルに「単位」「小数点位置」「倍率」が記載されているため、必ず確認してください。
11. Modbusを設計・導入するときのチェックリスト
Modbusを実務で使うときは、通信できるかどうかだけでなく、保守性や安全性も含めて設計することが重要です。
導入前に以下の項目を確認しておくと、立ち上げ時の手戻りを減らせます。
| 確認項目 | 確認内容 | 理由 |
|---|---|---|
| 方式 | RTUかTCPか | 配線・設定・必要機器が変わるため |
| 通信条件 | 速度、パリティ、IP、ポートなど | 条件不一致では通信できないため |
| 接続台数 | 1ラインあたりの台数、TCP同時接続数 | 更新周期や安定性に影響するため |
| レジスタマップ | 読み書きするアドレスと意味 | 誤読・誤書込を防ぐため |
| データ形式 | 16bit、32bit、符号、倍率、ワード順 | 数値化けを防ぐため |
| 異常時動作 | 通信断、タイムアウト、再接続時の挙動 | 安全性と設備停止条件に関わるため |
| 保守方法 | 通信ログ、診断画面、予備機設定 | トラブル復旧を早めるため |
レジスタ一覧を自分で整理する
機器マニュアルのレジスタ一覧をそのまま見るだけでは、実装時に迷いやすいです。
実務では、使用するレジスタだけを抜き出し、名称、アドレス、データ型、倍率、読み書き区分、初期値、異常時動作を表にまとめると安全です。
通信周期を欲張りすぎない
すべてのデータを高頻度で読みたくなりますが、Modbusは必要なデータを必要な周期で読む設計が重要です。
温度や電力量のように変化が遅いデータは、100ms周期で読む必要がない場合も多いです。
重要データと監視データを分け、通信負荷を抑えると安定性が上がります。
通信断を前提に設計する
ネットワーク通信は、いつか必ず途切れる前提で設計する必要があります。
通信断時に設備を停止するのか、アラームだけ出すのか、最後の値を保持するのかを、装置のリスクに応じて決めてください。
特に駆動機器をModbusで制御する場合は、通信断時の挙動が安全面に直結します。
よくある質問
Q1. Modbus RTUとModbus TCPはどちらを使うべきですか?
盤内や装置内で温調器・電力計・インバータなどをつなぐなら、Modbus RTUが使いやすい場合が多いです。
上位PCや監視システムへEthernetでデータを集めたい場合は、Modbus TCPが向いています。
Q2. Modbus TCPのポート番号は何番ですか?
一般的にはTCPポート502番を使用します。
ただし、ネットワーク機器やセキュリティ設定で遮断されていることがあるため、接続できない場合はポート開放や経路を確認してください。
Q3. Modbusでリアルタイム制御はできますか?
低速な監視や設定値の読み書きには向いていますが、高速・高同期が必要なリアルタイム制御には向きません。
サーボ同期、モーション制御、安全制御などでは、専用の産業用ネットワークや安全規格に対応した方式を検討する必要があります。
Q4. 40001番地を読んでも正しい値が出ないのはなぜですか?
表示上の40001と、実際の通信アドレス0が対応する実装があるためです。
使用しているPLC命令や通信ソフトが、表示番号を指定する方式なのか、0始まりの実アドレスを指定する方式なのかを確認してください。
Q5. Modbusは安全通信として使えますか?
通常のModbusは、安全機能を担保するための安全通信プロトコルではありません。
非常停止や安全扉、危険源の停止には、安全リレー、安全PLC、安全ネットワークなど、用途に応じた安全設計が必要です。
まとめ
Modbusとは、PLC、マイコン、計測器、インバータ、温調器などがデータを読み書きするための産業用通信プロトコルです。
重要なのは、Modbusそのものは「通信の約束事」であり、実際にどの値を読めるか、どの値を書けるかは機器ごとのレジスタマップで決まるという点です。
Modbus RTUはRS-485などのシリアル通信でよく使われ、通信速度、パリティ、スレーブID、終端抵抗などの確認が重要です。
Modbus TCPはEthernet上で使われ、IPアドレス、ポート502、Unit ID、同時接続数、ネットワーク経路の確認が重要です。
通信トラブルでは、まず「方式」「通信条件」「アドレス」「データ形式」「機器側設定」を順に切り分けると原因にたどり着きやすくなります。
Modbusは古典的な通信方式ですが、シンプルで対応機器が多く、現在でも産業ネットワークや組込みシステムで実用価値の高い技術です。