author
Bobby Brown
Post 2024-12-02
Modbus通信プロトコルとは何ですか?Modbus RTUを一度で理解

目次


1. 通信プロトコルとは何ですか?

通信プロトコル(プロトコルとも呼ばれる)とは、産業オートメーション分野で異なるデバイス間でデータを交換する方法を定義する規則のセットです。要するに、これは電子機器が通信するための「言語」のようなものです。

人間のコミュニケーションに例えると、共通の言語を持たない二人の人間は理解し合うことができません。同様に、産業用電子機器も情報を効果的に交換するために共通の通信プロトコルが必要です。プロトコルが異なると、デバイスはデータを送受信したり解釈したりできません。

この概念は、プログラマブルロジックコントローラ(PLC)、センサー、ヒューマンマシンインターフェース(HMI)など、さまざまなシステムがシームレスに連携するオートメーションにおいて非常に重要です。プロトコルは、これらのデバイスが共通の言語を話すことを保証し、スムーズな統合と運用を可能にします。

2. Modbus通信プロトコルとは何ですか?

Modbusは、産業オートメーションで広く使用されている通信プロトコルで、デバイス間の共通の言語として機能します。

人間のコミュニケーションには言語とメディアの両方が必要であるように、デバイスにもデータ交換のルールを定義する通信プロトコルと、信号伝送のための通信標準(例:RS-232、RS-485、Ethernet)が必要です。

Modbusは異なる物理層を通じて動作し、効率的なデータ交換のためにさまざまなシナリオに適応します。
[1]

3. Modbus通信プロトコルの種類

Modbus RTU vs Modbus TCP
Modbus通信プロトコルは、使用する通信標準に基づいて、シリアル通信とEthernet通信の2種類に分類されます。

1. シリアル通信

シリアル通信では、データがビット単位で送信され、以下の2つのプロトコルがあります: Modbus RTUModbus ASCII

  • Modbus RTU:
    • データ送信にはバイナリエンコーディングを使用。
    • RS-232、RS-485、RS-422シリアルインターフェースと組み合わせて使用されます。
    • 短距離および複数デバイスのアプリケーションに最適。
    • コンパクトで効率的なデータフォーマットのため、業界で広く使用されています。
  • Modbus ASCII:
    • データエンコーディングにはASCII(アメリカ標準コード)を使用。
    • RS-232、RS-485、RS-422インターフェースと組み合わせて使用されます。
    • ASCIIエンコーディングは手動で検証しやすいですが、ストレージスペースを多く消費します。

2. Ethernet通信

  • Modbus TCP:
    • Ethernet上で動作し、TCP/IPプロトコルに基づいています。
    • ネットワークケーブルまたはワイヤレス接続を使用してデータを送信。
    • ネットワーク化されたオートメーションシステムやリモート監視設定に一般的に使用されます。

Modbus RTUとModbus ASCIIの主な違い

Modbus RTUModbus ASCIIはエンコーディングフォーマットが異なりますが、実際の伝送速度はシリアルインターフェースのボーレート(例:RS-232、RS-485)に依存します。

  • Modbus RTU: バイナリフォーマット、コンパクトなデータ構造、帯域幅制限のある環境に適しています。
  • Modbus ASCII: ASCIIフォーマット、各バイトは2つのASCII文字で表現されるため、データサイズが大きく、伝送速度が遅くなります。
[2][3]

4. なぜ多くのPLCはModbusプロトコルを使用するのか?

多くのメーカーが<強>Modbus通信プロトコルを自社の<強>PLC(プログラマブルロジックコントローラ)に選ぶ理由は、<強>簡単さと<強>コスト効果にあります。プロトコルの構造がシンプルで、ライセンス料なしで使用できるため、魅力的な選択肢です。

PLCに対するModbusの主な利点:

  1. シンプルな構造と無料のライセンス:

    Modbusは実装が簡単で、開発の複雑さとコストを削減します。

  2. 複数のインターフェースに対応:
    • RS-232、RS-485、TCP/IPインターフェースに対応。
    • ツイストペアケーブル、光ファイバー、ワイヤレスネットワークなど、さまざまな物理的伝送メディアに対応します。
  3. 異なるプロトコルタイプに対応:

    第3章で説明したように、Modbusプロトコルは特定のネットワークに合わせて調整できます:

    • フィールドバスネットワーク:Modbus RTU、Profibus、CC-Link、CANなどは、通信にRS-485を使用し、マスター・スレーブアーキテクチャをサポートしています。
    • Ethernetネットワーク:Modbus TCP、PROFINET、EtherCAT、EtherNet/IPなどは、クライアントとサーバーまたはコントローラーとデバイス間で効率的な通信を実現します。
  4. 産業用ネットワークとの高い互換性:

    ModbusはEthernetおよびRS-485ネットワークに高い互換性を持ち、産業オートメーションシステムの要求に対応します。

Modbusはそのシンプルさ、汎用性、産業用通信標準との優れた互換性から、多くのPLCメーカーに選ばれています。フィールドバスおよびEthernetベースのアプリケーションに対して信頼性の高い効率的なソリューションを提供します。
プロトコルタイプ プロトコル名 ネットワーク 役割
産業用Ethernet Modbus-TCP Ethernet クライアントおよびサーバー
PROFINET Ethernet コントローラーおよびデバイス
EtherCAT Ethernet マスターおよびスレーブ
EtherNet/IP Ethernet コントローラーおよびデバイス
フィールドバス Modbus-RTU RS485 マスターおよびスレーブ
Profibus RS485 マスターおよびスレーブ
CC-Link RS485 マスターおよびスレーブ
CAN RS485 コントローラーおよびノード

*一般的なプロトコルとその機能役割

[4]

5. Modbus RTUはどのように機能しますか?

Modbus RTUプロトコルはマスター・スレーブアーキテクチャを使用しており、マスターがすべての通信を制御し、スレーブがコマンドを受信し応答します。

マスターリクエストには、ターゲットデバイスを識別する特定のスレーブアドレスが含まれています。すべてのスレーブがリクエストを受信しますが、指定されたデバイスのみが応答します。

    例えば、スレーブデバイスにアドレス1、2、3が割り当てられている場合:
  • マスターがスレーブアドレス2にリクエストを送信すると、アドレス2のスレーブのみが応答し、他のデバイスは黙っている。
  • マスターがブロードキャストモード(リクエストでスレーブアドレスを0に設定)を使用すると、すべてのスレーブデバイス(1、2、3)がコマンドを実行しますが、マスターには応答しません。

    このアーキテクチャは、複数のスレーブデバイスが単一のマスターに接続されているシステムで効率的な通信と正確な制御を実現します。
Modbus RTU master-slave architecture

5-1、Modbus通信パケット

Modbus RTU通信では、パケット構造に次のコンポーネントが含まれます:
  • アドレス:コマンドを受信するスレーブデバイスを識別。
  • 機能コード:スレーブが実行すべき操作(例:レジスタの読み取りまたは書き込み)を指定。
  • データ:リクエストに関連する情報(例:読み取るまたは書き込むレジスタのアドレスと数量)。
  • エラーチェックコード(CRCチェック):伝送中のデータの整合性を確保します。 (Modbus TCPでは、同様のパケット構造が使用されますが、CRCは省略され、代わりにTCP/IPレベルでチェックが行われます。)
  • *第6章で例をご覧ください。
[5]

5-2、Modbusプロトコルデータレジスタタイプ

(以下の内容は、Modbus Tools より編集されたModbus RTUの紹介です。詳細なレジスタタイプと機能コードの説明については、元の資料を参照してください。)

Modbusプロトコルは、データストレージ領域を4つの主要タイプに分類し、異なるデータタイプに対して機能コードを管理します:
  • ディスクリート入力:読み取り専用のバイナリ入力データで、機能コード0x02に対応し、デバイスの状態を読み取るために使用されます。
  • コイル:読み書き可能なバイナリ出力データで、機能コード0x01に対応し、デバイスのスイッチ制御に一般的に使用されます。
  • 入力レジスタ:読み取り専用のアナログ入力データで、機能コード0x04に対応し、センサーやその他の入力デバイスの監視に使用されます。
  • 保持レジスタ:読み書き可能なアナログデータで、機能コード0x03および0x06に対応し、通常はデバイスの設定や状態を設定するために使用されます。
 
[6]

5-3、Modbus機能コードとその操作

Modbusプロトコルは、デバイスがデータを読み書きする方法を制御するさまざまな機能コードを定義しています。一般的な機能コードとその使用例は以下の通りです:
1. 0x01 - コイルの読み取り:デバイスのオン/オフ状態を読み取ります。スイッチやリレーの監視に一般的に使用されます。
2. 0x02 - ディスクリート入力の読み取り:ボタンやセンサー状態などのバイナリ入力状態を監視します。
3. 0x03 - 保持レジスタの読み取り:デバイスの設定やランタイムデータを読み取ります。
4. 0x04 - 入力レジスタの読み取り:温度や圧力センサーからのデータなど、アナログ入力を監視します。
5. 0x05 - 単一コイルの書き込み:単一デバイスのオン/オフ状態を制御します。
6. 0x06 - 単一保持レジスタの書き込み:デバイスの設定(速度や温度設定など)を変更します。
7. 0x0F (15) - 複数コイルの書き込み:複数のデバイスのオン/オフ状態を同時に制御します。
8. 0x10 (16) - 複数保持レジスタの書き込み:複数のデバイス設定を一度に設定します。

5-4、Modicomフォーマットとは何ですか?

Modicomフォーマットは、Modbusのアドレス番号構造を指定し、特定のアドレス範囲に機能コードを関連付けます。この設計により、オペレーターは機能コードを手動で指定することなくアドレスのみを入力でき、エラーを減らし、通信を簡素化します。
 
参考:Modicon Modbusプロトコルリファレンスガイド

5-5、+40001 / +30001とは何ですか?

Modiconフォーマットによると、Modbusは特定のアドレス範囲を使用して異なるタイプのレジスタを示します。例えば:0001–39999:入力レジスタ(機能コード04)、40001–49999:保持レジスタ(機能コード03)

+40001とは何を意味しますか?
Modiconフォーマットでは、アドレス範囲40001–49999は、機能コード03を使用してアクセスされる保持レジスタに対応します。ここで、40001はベースアドレスとして機能します。例えば、40001は最初のレジスタを示し、オフセットが0000であることを意味し、読み取り位置は0000です。
ユーザーが40005を入力すると、Modbusは自動的に40001–49999が保持レジスタ(機能コード03)に対応することを認識します。アドレス指定のロジックに従い、Modbusは40005を40001 + 0004として解釈し、機能コード03レジスタの0004位置を読み取ります。

Modbus Function Code
[7]

6. PLCと流量計間の流量監視の実装(RS485およびModbus RTUを使用)

Modbusプロトコルでは、各データフィールドには特定の意味と位置があります。ユーザーは「スレーブアドレス、機能コード(入力レジスタの読み取り用)、レジスタアドレス、読み取るレジスタの数、CRCチェックコード」を表すコードの順序を入力する必要があります。これらのデータを受け取ると、ModbusマスターはModbusフォーマットに従って各フィールドを解析し、ターゲットスレーブで行う操作(レジスタの読み取りまたは書き込み)を決定します。以下は、RS485およびModbus RTUを使用してPLCと流量計間の流量監視を実装する例です:
- ハードウェア設定:流量計とPLCの両方がRS485インターフェースを持ち、Modbus RTU通信をサポートしていることを確認します。RS485通信配線を使用してPLCと流量計を接続します。
- Modbus RTU設定とプログラム設計:流量計のModbusアドレス(例:スレーブアドレス)とボーレートなどのパラメータを設定します。PLCを適切なModbusマスタ機能で設定し、マスターが読み取るべきデータを定義します。PLCと流量計の通信パラメータ(ボーレート、データビット、ストップビット、パリティビット)が一致していることを確認します。
 
電腦操作示意圖
流量計はRS485インターフェースを通じてデータをPLCに送信し、PLCはModbus RTUプロトコルを使用してデータを読み取ります。その後、流量計からのデータはリアルタイムでコンピュータ監視インターフェースに表示され、流量の読み取り曲線が表示されます。
Modbus RTU通信では、Modbusパケットはアドレスフィールド、機能コード、データフィールド、エラーチェックコード(CRCチェック)を含みます。TXは送信されたリクエスト信号、RXは応答信号を示します。
TXリクエスト信号 TX 01 04 00 64 00 01 70 15
01:スレーブアドレス。
04:機能コード(入力レジスタの読み取り)。
00 64:レジスタアドレス(アドレス100)。
00 01:読み取るレジスタの数(1レジスタ)。
70 15:データ整合性のためのCRCチェックコード。
RX応答信号 RX 01 04 02 04 00 BB F0
01:スレーブアドレス、応答がデバイスアドレス1からのものであることを示します。
04:機能コード、"入力レジスタの読み取り"応答であることを確認します。
02:データ長、2バイトのデータを示します。
00 BB:データ値、16ビットの数値。16進数の00BBは、10進数の187に変換されます。
F0:CRCチェックコード、パケットの整合性を確認します。
これらの流量データは、ゲートウェイを通じて他のプロトコル(例:Modbus TCP)または物理層(例:Wi-Fi)に変換され、Ethernet経由でリモートサーバーに送信され、クラウドに保存されることができます。これにより、生産状況のリモート監視や自動データ報告が可能になります。例えば、異常な流量データが検出された場合、システムは自動的に通知システムを介してアラートを送信し、生産効率を向上させ、便利な管理が実現します。
[8]

参考文献

  1. ^ 物联网 Modbus 通讯协议を学ぼう-WARREN LO
  2. ^ Modbus协议的通信方式有几种 - 小頭菜
  3. ^ Modbusプロトコルの理解 - RTU vs TCP vs ASCII - OPS Telecom
  4. ^ Modbus RTU 通信協定の紹介 - 力誠科技
  5. ^ Modbus RTU簡介(上) - iT 幫幫忙
  6. ^ Modbus协议数据类型只有这四种 - 小頭菜
  7. ^ MODBUS 位址加40001 / 30001,為什麼就可以不用輸入功能碼? - PLC
Products you may also like
Related articles

お問い合わせ