Frequently Asked Questions

  1. Modbusとは何ですか?
  2. それは何のために使われますか?
  3. それはどのように機能しますか?
  4. 16進数とは何ですか?
  5. データは標準Modbusにどのように保存されますか?
  6. 機能コードとは何ですか?
  7. CRCとは何ですか?
  8. Modbusコマンドと応答の形式は何ですか?
  9. データ型とは何ですか?
  10. バイトと語順とは何ですか?
  11. Modbusマップとは何ですか?
  12. ModbusASCIIとModbusRTUの違いは何ですか?
  13. 拡張レジスタアドレスとは何ですか?
  14. 2バイトアドレス指定はどのように機能しますか?
  15. イベントや履歴データをどのように送信できますか?
  16. Enron Modbusとは何ですか?
  17. ほかに何か?


Modbusとは何ですか?

Modbusは、ModiconRによって1979年に発行されたModiconによって開発されたシリアル通信プロトコルで、プログラマブルロジックコントローラー(PLC)で使用します。簡単に言えば、電子機器間でシリアル回線を介して情報を送信するために使用される方法です。情報を要求するデバイスはModbusマスターと呼ばれ、情報を提供するデバイスはModbusスレーブです。標準のModbusネットワークには、1つのマスターと最大247のスレーブがあり、それぞれに1から247までの一意のスレーブアドレスがあります。マスターはスレーブに情報を書き込むこともできます。

公式のModbus仕様は、 modbus.org/specs.php にあります。

それは何のために使われますか?

Modbusはオープンプロトコルです。つまり、メーカーはロイヤルティを支払うことなく機器を無料で組み込むことができます。これは業界の標準的な通信プロトコルになり、現在、産業用電子デバイスを接続するための最も一般的に利用可能な手段です。多くの業界の多くのメーカーで広く使用されています。Modbusは通常、計装および制御デバイスからメインコントローラーまたはデータ収集システム(温度と湿度を測定して結果をコンピューターに伝達するシステムなど)に信号を送信するために使用されます。Modbusは、監視制御およびデータ取得(SCADA)システムで監視コンピューターをリモート端末装置(RTU)に接続するためによく使用されます。Modbusプロトコルのバージョンは、シリアル回線(ModbusRTUおよびModbusASCII)およびイーサネット(Modbus TCP)用に存在します。

それはどのように機能しますか?

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

DB9 connector voltage stripchart>

データは、ビットと呼ばれる一連の1と0として送信されます。各ビットは電圧として送信されます。ゼロは正の電圧として送信され、1は負の電圧として送信されます。ビットは非常に迅速に送信されます。通常の伝送速度は9600ボー(ビット/秒)です。

16進数とは何ですか?

問題のトラブルシューティングを行うときは、送信されている実際の生データを確認すると役立つ場合があります。1と0の長い文字列は読みにくいため、ビットは16進数で結合されて表示されます。4ビットの各ブロックは、0から Fまでの16文字のいずれかで表され ます。

0000 = 0 0100 = 4 1000 = 8 1100 = C
0001 = 1 0101 = 5 1001 = 9 1101 = D
0010 = 2 0110 = 6 1010 = A 1110 = E
0011 = 3 0111 = 7 1011 = B 1111 = F

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

ASCIIとは何ですか?

ASCIIは、情報交換のためのAmerican StandardCodeの略です。4ビットごとに組み合わせて0から Fまでの16文字の16文字のいずれかで表すことができるのと同じように、 8ビットごと(バイトごと)を組み合わせて、一般的なキーボード文字を含む256文字のASCII文字の1つで表すことができます。たとえば、ASCII文字の値の一部は...

decimal
(base10)
binary
(base2)
Hex
(base16)
ASCII
(base256)
0 0000 0000 00 null
1 0000 0001 01 "
34 0010 0010 22 #
35 0010 0011 23 $
36 0010 0100 24 %
47 0010 1111 2F /
48 0011 0000 30 0
49 0011 0001 31 1
56 0011 1000 38 8
57 0011 1001 39 9
58 0011 1010 3A :
64 0100 0000 40 @
65 0100 0001 41 A
66 0100 0010 42 B
89 0101 1001 59 Y
90 0101 1010 5A Z
91 0101 1011 5B [
95 0101 1111 5F _
96 0110 0000 60 `
97 0110 0001 61 a
122 0111 1010 7A z
123 0111 1011 7B {
174 1010 1110 AE
255 1111 1111 FF

データは標準Modbusにどのように保存されますか?

情報は、スレーブデバイスの4つの異なるテーブルに保存されます。
2つのテーブルはオン/オフの離散値(コイル)を格納し、2つのテーブルは数値(レジスタ)を格納します。コイルとレジスタにはそれぞれ読み取り専用テーブルと読み取り/書き込みテーブルがあります。

各テーブルには9999個の値があります。
各コイル又は接触が1ビットであるとの間でデータのアドレスを割り当て 0000および 270E。
各レジスタは、1ワード= 16ビット= 2バイトであり、また、間のデータアドレスを持ち 0000および 270E。

コイル/レジスタ番号 データアドレス タイプ テーブル名
1-9999 0000 to 270E Read-Write ディスクリート出力コイル
10001-19999 0000 to 270E Read-Only ディスクリート入力接点
30001-39999 0000 to 270E Read-Only アナログ入力レジスタ
40001-49999 0000 to 270E Read-Write アナログ出力保持レジスタ

コイル/レジスタ番号は、実際のメッセージには表示されないため、場所の名前と考えることができます。データアドレスはメッセージで使用されます。

たとえば、最初の保持レジスタ番号40001のデータアドレスは 0000です。
これら2つの値の違いは、オフセットです。
各テーブルには異なるオフセットがあります。1、10001、30001および40001。

スレーブIDとは何ですか?

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

機能コードとは何ですか?

マスターから送信される2番目のバイトは機能コードです。この番号は、どのテーブルにアクセスするか、およびテーブルからの読み取りとテーブルへの書き込みのどちらを行うかをスレーブに指示します。

Function Code Action Table Name
01 (01 hex) Read ディスクリート出力コイル
05 (05 hex) Write single ディスクリート出力コイル
15 (0F hex) Write multiple ディスクリート出力コイル
02 (02 hex) Read ディスクリート入力接点
04 (04 hex) Read アナログ入力レジスタ
03 (03 hex) Read アナログ出力保持レジスタ
06 (06 hex) Write single アナログ出力保持レジスタ
16 (10 hex) Write multiple アナログ出力保持レジスタ

CRCとは何ですか?

CRCは巡回冗長検査の略です。これは、エラー検出のためにすべてのmodbusメッセージの最後に追加される2バイトです。メッセージのすべてのバイトは、CRCの計算に使用されます。また、受信デバイスはCRCを計算し、送信デバイスからのCRCと比較します。メッセージの1ビットでも正しく受信されない場合、CRCが異なり、エラーが発生します。

これは、最大16バイトのメッセージ用のスプレッドシートCRC計算機です。
コピーをダウンロードするには、右クリックして[対象をファイルに保存...]を選択します。

Modbusコマンドと応答の形式は何ですか?

この表のリンクをたどって、要求と応答の例を確認してください。

データアドレス Read Write Single Write Multiple
ディスクリート出力コイル FC01 FC05 FC15
Discrete Input Contacts 1xxxx FC02 NA NA
Analog Input Registers 3xxxx FC04 NA NA
Analog Output Holding Registers 4xxxx FC03 FC06 FC16

データ型とは何ですか?

たとえばFC03レジスタ40108が含まれていることを示して AE41を
16ビットに変換した 1110 0100 0001 1010
グレート!しかし、それはどういう意味ですか?まあ、それはいくつかのことを意味する可能性があります。

レジスタ40108は、これらの16ビット・データ・タイプのいずれかとして定義することができる:
A 16ビットの符号なし整数(0?65535の整数)は
40108に含まれるレジスタAE41 = 44609(小数点への変換ヘクス)

16ビット符号付き整数(-32768から32767の間の整数)
AE41 = -20927
(ラップが、その場合にオーバー32767次に65536を引くこと小数点への変換ヘクス)

A two character ASCII string (2 typed letters)
AE41 = A

A discrete on/off value (this works the same as 16-bit integers with a value of 0 or 1.
The hex data would be 0000 or 0001)

Register 40108 could also be combined with 40109 to form any of these 32-bit data types:
A 32-bit unsigned integer (a number between 0 and 4,294,967,295)
40108,40109 = AE41 5652 = 2,923,517,522

A 32-bit signed integer (a number between -2,147,483,648 and 2,147,483,647)
AE41 5652 = -1,371,449,774

これは、4バイトまたは2ワードの入力用のスプレッドシート IEEE浮動小数点計算機です。
コピーをダウンロードするには、右クリックして[対象をファイルに保存...]を選択します。

4文字のASCII文字列(4入力された文字)
AE41 5652 =RAVR

より多くのレジスタを組み合わせて、より長いASCII文字列を形成できます。各レジスタは、2つのASCII文字(2バイト)を格納するために使用されます。

バイトと語順とは何ですか?

Modbus仕様は、データがレジスタに格納される方法を正確に定義していません。したがって、一部のメーカーは、最初に上位バイトを格納して送信し、次に下位バイトを格納するために、機器にmodbusを実装しました。(41 より前のAE)。 あるいは、他の人は最初に下位バイトを格納して送信します(AEの 前に41)。

レジスタは32ビットのデータ型を表すために結合される場合、同様に、一部のデバイスは、(第2の最初のレジスタの上位16ビット(上位ワード)と残りの下位ワードを格納AE41 前5652)その他(逆の操作を行いながら5652を 前AE41)

受信デバイスがそれを予期する方法を知っている限り、バイトまたはワードがどの順序で送信されるかは問題ではありません。

たとえば、数値2,923,517,522が32ビットの符号なし整数として送信される場合、これらの4つの方法のいずれかに配置できます。

AE415652       上位バイト先行 上位ワード先行「ビッグエンディアン」                                                                                             としても知られています
5652AE41       上位バイト先行 下位ワード先行
41AE5256       下位バイト先行 上位ワード先行
525641AE       下位バイト先行 下位ワード先行「リトルエンディアン」

Modbusマップとは何ですか?

modbusマップは

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

ModbusASCIIとModbusRTUの違いは何ですか?

ここでは、これら2つのモードの違いについて説明し ます。

拡張レジスタアドレスとは何ですか?

アナログ出力保持レジスタの範囲は40001?49999であるため、9999を超えるレジスタは存在できないことを意味します。通常、これはほとんどのアプリケーションで十分ですが、より多くのレジスタが有益な場合があります。

データアドレスへのレジスタ40001 49999への対応 0000へ 270E。残りのデータアドレス270Fから FFFFを利用すると、 6倍以上のレジスタを使用でき、合計で65536になります。これは、40001から105536までのレジスタ番号に対応します。

多くのmodbusソフトウェアドライバー(マスターPC用)は40001から49999の制限で記述されており、スレーブデバイスの拡張レジスタにアクセスできません。また、多くのスレーブデバイスは、拡張レジスタを使用したマップをサポートしていません。ただし、一方で、一部のスレーブデバイスはこれらのレジスタをサポートしており、一部のマスターソフトウェアは、特にカスタムソフトウェアが作成されている場合に、これらのレジスタにアクセスできます。

2バイトのスレーブアドレッシングはどのように機能しますか?

通常、スレーブアドレスの定義には1バイトが使用され、ネットワーク上の各スレーブには一意のアドレスが必要なため、ネットワーク上のスレーブの数は256に制限されます。modbus仕様で定義されている制限はさらに低く、247です。

この制限を超えるために、アドレスに2バイトを使用するようにプロトコルを変更できます。マスターとスレーブはすべて、この変更をサポートする必要があります。2バイトのアドレス指定により、ネットワーク内のスレーブ数の制限が65535に拡張されます。

デフォルトでは、SimplyModbusソフトウェアは1バイトのアドレス指定を使用します。255より大きいアドレスが入力されると、ソフトウェアは自動的に2バイトのアドレス指定に切り替わり、2バイトのアドレス指定が手動でオフになるまで、すべてのアドレスに対してこのモードのままになります。

イベントや履歴データをどのように送信できますか?

Enron Modbus には、イベントや履歴データを移動するためのコマンドが含まれています

Enron Modbusとは何ですか?

Enron Modbusは、EnronCorporationによって開発された標準のModiconmodbus通信プロトコルを変更したものです。

詳細については、 Enron Modbus を参照してください。

ほかに何か?

このページをお読みになりましたら、ぜひコメントをお寄せください。
info@simplymodbus.ca
に電子メールを送信し、 何が役に立ったか、どのトピックを追加、拡張、または明確化できるかをお知らせください。