Modbusプロトコルの簡単な紹介

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Modbusプロトコルの簡単な紹介

Modbusはオープンプロトコルであるため、メーカーはロイヤリティを支払うことなく無料で使用できます。産業界で標準的なCommunicationプロトコルとなっており、現在では産業用電子機器を接続する最も一般的な方法です。Modbusは、計測器や制御機器からの信号をメインコントローラや、temperatureや湿度を測定してその結果をコンピュータに送信するシステムなどのデータ収集システムに送信するために一般的に使用されています。Modbusは、監視およびデータ収集(SCADA)システム内で監視コンピュータとリモート端末ユニット(RTU)を接続するためによく使用されます。

Modbusはデバイス間のシリアル回線で送信されます。最も簡単なセットアップは、2つのデバイスマスターとスレーブのシリアルポートを接続する単一のシリアルケーブルです。

Modbusプロトコルの簡単な紹介插图

データはビットと呼ばれる一連の1と0で送信されます。各ビットは電圧として送信される。ゼロは正の電圧として送信され、1は負の電圧として送信されます。すぐに送られます。標準的な伝送速度は9600ボー(ビット毎秒)である。

  16進法とは

問題を解決する際には、転送された実際の生データを確認すると役立ちます。長い文字列の1と0は読みにくいので、これらのビットは結合されて16進数で表示されます。各4ビットのブロックは、0からFまでの16文字のうちの1つで表される。

バイトと呼ばれる各8ビットのブロックは、00からFFまでの256文字のペアのうちの1つで表される。

  標準Modbusにデータを保存する方法

情報は4つの異なるテーブルのスレーブデバイスに格納されます。2つのテーブルは、離散値を格納/オフにするコイルと、2つの格納値レジスタとを格納する。各コイルとレジスタには読み取り専用テーブルと読み取り専用テーブルがあります。各テーブルは9999個の値を持つ。各コイルまたは接点は1ビットで、0000 ~ 270Eの间のデータアドレスが割り当てられます。各レジスタは1ワード= 16ビット= 2バイトで、データアドレスは0000から270Eの间である。

コイル/レジスタ番号は、実際のメッセージには現れないため、位置名と考えることができます。データアドレスはメッセージに使用されます。例えば、最初の保持レジスタ番号40001は、データアドレス0000を持つ。この2つの値の違いがオフセットです。テーブルごとに異なるオフセットがあります。1、10001、30001、40001

  奴隷身分証明書とは?

ネットワーク内の各スレーブには、1 ~ 247の一意のセルアドレスが割り当てられます。マスターがデータを要求するとき、最初に送信するバイトはスレーブアドレスです。このようにして、各スレーブデバイスは最初のバイトの後にメッセージを無視するかどうかを知る。

  コードとは

ホストが送信する2番目のバイトは機能コードです。この番号は、スレーブがアクセスするテーブルと、テーブルから読み込むか書き込むかを示します。

  CRCとは?

CRCはCyclic Redundancy Checkの略。これは、エラー検出のために各modbusメッセージの最後に2バイトを追加します。メッセージ内の各バイトはCRCの計算に使用されます。受信デバイスはまた、CRCをし、送信デバイスからのCRCとする。メッセージの1ビットが誤って受信されると、CRCは異なり、エラーになります。

  データ型とは?

FC03の例では、レジスタ40108にAE41が含まれており、16ビット1010 11 10 0 100 001 Big!しかしこれはどういう意味ですか?まあ、それは何かを意味する。レジスタ40108は、以下の16ビットデータ型のいずれかに定義することができる。

16ビット符号なし整数(0 ~ 65535の整数)レジスタ40108は、AE41 = 44609(16进から10进への変换)を含む。

16ビット符号付き整数(-32 7 68から32 7 67までの整数(AE41 =-20,927)32 7 67を超える場合は16進数でパッケージに変換し、655 3 6進数をdifferenceし引いたもの)

A 2文字のASCII文字列2入力した文字AE41 =® A

離散的なオン/オフ値(ここでは同じように動作する16ビット整数0または1の値の16進データは0000または0001である)の登録40108もまた、に結合され得る

40109は、これらの32ビットデータ型のいずれかを形成します。

32ビット符号なし整数(0から4294967295の間の数値)40108,40109 = AE41 56 5 2 = 29235175 2 2

32ビット符号付き整数-2,147,483,648から2,147,483,647までの数値AE41 5652 =-1,371,449,774

32ビット倍精度IEEE浮動小数点数。これは、任意の実数(小数点付き数)を32桁で约7桁の精度で表す数式です。AE41 56 5 2 =-4.39597 8 E-11 4バイトまたは2ワードを入力するためのスプレッドシートIEEE浮動小数点計算機です。コピーをダウンロードするには、右クリックして、“ターゲットに名前を付けて保存”を選択します。.

4文字のASCII文字列4入力された文字AE41 5652 =®AVRより多くのレジスタを結合して、より長いASCII文字列を形成することができます。各レジスタは、2つのASCII文字2バイトを格納するために使用されます。

  バイトとワードのソートとは?

Modbus仕様はデータのレジスタへの保存方法を正確に定義していない。そのため、一部のメーカーはデバイスにmodbusを実装し、最初にハイバイトを格納して転送し、次にローバイトを格納している。(41以前はAEでした代替的に、他の者は、最初に下位バイト(AEの前に41)を格納して送信する。同様に、レジスタが結合されて32ビットのデータ型を表す場合、あるデバイスは上位16ビット(上位ワード)をNo.1のレジスタに格納し、残りの下位ワードをNo.2のレジスタに格納し(5652より前のAE41)、他のデバイスは逆に(5652より前のAE41)、受信デバイスがそれを期待する方法を知っている限り、バイトまたはワードを送信する順序は重要ではない。例えば、29,235,175,522という数字を32ビットの符号なし整数として送信する場合、これら4つの方法のいずれかで並べ替えることができます。

AE41 56 5 2ハイバイトファーストハイワード

56 5 2 AE41ハイバイトファーストローワードファーストファーストファースト

41AE 52 5 6ローバイト最初のハイワード

525 6 41AEローバイト最初のローワード

  Modbusマップとは?

modbusマッピングは、データが何であるか(例えば、圧力またはtemperatureの読み取り値)を定義するスレーブデバイスの別個のリストに過ぎません。

  • データの保存どのテーブルとデータアドレス
  • データの保存方法(データ型、バイトおよびワードソート)

一部のデバイスは、製造元が定義した固定マッピングを使用して構築されています。他のデバイスでは、オペレータはニーズに合わせてカスタムマップを設定またはプログラムできます。

  Modbus ASCIIとModbus RTUの違いは何ですか?

Modbus RTUとModbus ASCI Iは同じプロトコルを使用する。唯一の違いは、回線を介して転送されるバイトはRTUではバイナリ、Modbus RTUでは読み取り可能なASCIIで表されることである。RTUに関する重要な注意点は、RTUメッセージにStart_of_text指示がないことです。Communicationの受信側は、新しいメッセージの開始を決定するために“サイレント”時間を使用します。ASCIIにはテキスト開始タグがあります。バイナリメッセージはASCIIよりも短いため、理論的には送受信が高速です。HMI / SCADAでは約100 msの更新レートがあり、どちらのCommunicationも選択できます。

まとめ:

  • RTUを使用できます。
  • Win NTでRTUがタイムアウトに問題がある場合や、300 bpsやダイヤルアップモデムなどの低速通信メディアでASCI Iを使用している場合、Modbus用OPCサーバのほとんどはASCI IとRTUCommunicationをサポートしています。

  拡张レジスタアドレスとは

アナログ出力保持レジスタの範囲は40001 ~ 49999であるため、9999を超えることはできません。ほとんどのアプリケーションでは通常これで十分ですが、より多くのレジスタがある場合があります。レジスタ40001 〜 49999は、データアドレス0000 〜 270Eに対応する。残りの270FからFFFFまでのデータアドレスを利用すると、6倍以上のレジスタを使用でき、合計65,53 6個になります。これは、40001から105536のレジスタ番号に対応する。多くのmodbusソフトウェアドライバ(マスター PC用)は、40001 ~ 49999の制限で記述されており、スレーブの拡張レジスタにアクセスできません。多くのスレーブは拡張レジスタを使用したマッピングをサポートしません。一方で、一部のスレーブデバイスはこれらのレジスタをサポートしており、一部のマスターソフトウェアは特にカスタムソフトウェアを書くときにアクセスできます。

  バイト·スレーブ·アドレス指定の仕組み

通常、単一バイトがスレーブアドレスを定義するために使用され、ネットワーク上の各スレーブは一意のアドレスを必要とするので、ネットワーク上のスレーブの数は256に制限される。modbus仕様で定義された制限はさらに低く、247です。この制限を超えて、アドレスとして2バイトを使用するようにプロトコルを変更することができる。主人も奴隷もこの変更を支持する必要がある。デュアルバイトアドレッシングは、ネットワークにおけるスレーブ局の数の制限を65535まで拡張する。デフォルトでは、Simply Modbusソフトウェアは1バイトのアドレッシングを使用します。255より大きいアドレスを入力すると、ソフトウェアは自動的に2バイトアドレス指定のこのモードに切り替わり、手動で2バイトアドレス指定をオフにするまですべてのアドレスを変更しないままにします。

Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.