
Modbusとは?
Modbusはシリアル通信プロトコルで、1979 年にModicon社が同社のプログラマブル·ロジック·コントローラPLCと共に使用するためにリリースした。簡単に言えば、電子機器間のシリアル回線上で情報を伝送するために使用される方法です。情報を要求するデバイスはModbusクライアントと呼ばれ、情報を提供するデバイスはModbusサーバです。標準的なModbusネットワークでは、1つのクライアントと最大247台のサーバがあり、それぞれが1から247までの一意のサーバアドレスを持っています。クライアントはサーバに情報を書き込むこともできます。
何に使うの?
Modbusはオープンプロトコルであるため、メーカーは特許料を支払うことなくデバイス内で構築できます。業界標準の通信プロトコルとなっており、現在では産業用電子機器を接続する最も一般的な手段です。様々な産業で多くのメーカーで使用されています。Modbusは、計測機器や制御機器からメインコントローラや、温度や湿度を測定し、その結果をコンピュータに送信するシステムなどのデータ収集システムに信号を送信するためによく使用されます。Modbusは通常、監視コンピュータをリモート端末ユニットRTUに接続するために使用され、これは監視およびデータ収集SCADAシステムで使用される。Modbusプロトコルのバージョンは、シリアル回線(Modbus RTUとModbus ASCII)とイーサネット(Modbus TCP)に存在する。
どのように動作するか?
Modbusはデバイス間でシリアルラインを介して伝送されます。最も簡単なセットアップは、2つのデバイス、すなわちクライアントとサーバーのシリアルポートを接続する単一のシリアルケーブルです。

データはビットと呼ばれる一連の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、300 01、40001です。
サーバー IDとは?
ネットワーク内の各サーバには、1 ~ 247の一意のセルアドレスが割り当てられています。クライアントがデータを要求するとき、最初に送信するバイトはサーバーアドレスです。これにより、各サーバは最初のバイトの後にメッセージを無視するかどうかを知ることができます。
関数コードとは?
クライアントから送信される2番目のバイトは関数コードです。この番号は、アクセスするテーブルと、テーブルから読み書きするかをサーバーに伝えます。

CRCとは?
CRCはCyclic Redundancy検査の略。これは、エラー検出のために各Modbusメッセージの最後に追加される2バイトです。メッセージ内の各バイトはCRCの計算に使用されます。受信デバイスはまた、CRCをし、送信デバイスのCRCとする。メッセージの1ビットがエラーを受信すると、CRCは異なり、エラーになります。
Modbusコマンドとレスポンスの形式は何ですか?
データ型とは?
FC03の例では、レジスタ40108にAE41が含まれており、これは16ビット1010 11 10 0 0001に変換される。でもどういう意味でしょう?いくつかの異なる16ビットデータ型を表現できます:
- 16ビット符号なし整数(0 ~ 655 3 5の整数)レジスタ40108はAE41 = 446 0 9(16進数から10進数)を含む
- 16ビット符号付き整数(-32 7 68 ~ 32 7 67の整数)AE41 = -20927(16進数を10進数に変換した後のパッケージ、32 7 67より大きい場合は655 3 6を減算)
- 2文字のASCII文字列(アルファベット2文字)AE41 = ® A
- 離散的なオン/オフ値(値0または1の16ビット整数と同じです。16進データは0000または0001)レジスタ40108を40109と組み合わせて、これらの32ビットデータ型のいずれかを形成することもできる。
- 32ビット符号なし整数(0から4,294,96 7,295の間の数字)40108,40109 = AE41 56 5 2 = 2,923,51 7,52 2
- 32ビット符号付き整数(-2,14 7,48 3,64 8から2,14 7,48 3,64 7の間の数値)AE41 56 5 2 =-1,37 1,44 9,77 4
- 32ビット倍精度 IEEE小数点数。これは、任意の実数(小数点を含む数)を小数約7桁の32桁の数値で表現できる数学式です。565 2 = 395978 E-11。これは、4バイトまたは2ワードの入力用のIEEE浮動小数点計算機です。コピーをダウンロードするには、右クリックして[名前を付けて保存]を选択します。
- 4文字のASCII文字列(4文字のアルファベット)AE41 56 5 2 = ® A V Rより多くのレジスタを組み合わせて、より長いASCII文字列を形成することができます。各レジスタは2つのASCII文字(2バイト)を格納するために使用される。
バイトとワードソートとは?
Modbus仕様は、データがレジスタに格納される方法を正確に定義していない。そのため、一部のメーカーはデバイスにModbusを実装してハイバイトとローバイト(AEは41以前)を格納して転送している。
また、他のデバイスは、ローバイト(AEの前に41)を格納し、転送する。同様に、32ビットのデータ型を表すためにレジスタを組み合わせると、上位16ビット(上位ワード)を最初のレジスタに格納し、残りの下位ワードを2番目のレジスタに格納するデバイスもあれば(5652より前のAE41)、逆のデバイスもある(AE41より前の5652)。
受信デバイスが望ましい方法を知っている限り、バイトやワードが任意の順序で送信されても構いません。例えば、29,235,175,52 2を32ビット符号なし整数として送信する場合、これら4つの方法のいずれかで配列することができます。
AE41 56 5 2ハイバイト前にハイワード前に
56 5 2 AE41ハイバイト前ローワード前
41AE 525 6ローバイトが上位ワードが上位
525 6 41AEローバイト前ローワード前
Modbus Mapとは?
Modbusマッピングは、データが何であるか(圧力や温度の測定値など)、データが保存される場所(どのテーブルとデータアドレス)を定義する個々のサーバーデバイスのために定義されたリストに過ぎません。
データの格納方法(データ型、バイト、ワードのソート)
一部のデバイスはメーカー定義の固定マップを内蔵しています。他のデバイスでは、オペレータはニーズに合わせてカスタムマップを設定またはプログラムできます。
Modbus ASCI IとModbus RTUの違いは何ですか?
Modbus RTUとModbus ASCI Iは同じプロトコルを使用する。唯一の違いは、ワイヤ上で送信されるバイトはRTUとバイナリ形式で表示され、Modbus RTUを使用する場合は読み取り可能なASCII 形式で表示されることである。RTUメッセージにはStart_of_textフラグがないことに注意することが重要です。通信の受信側は、“サイレント”時間を使用して、新しいメッセージの開始を決定します。ASCIIにはテキストマークがある。バイナリメッセージはASCIIメッセージよりも短いため、理論的には送受信が高速です。HMI/SCADAでの更新速度は約100 msで、どちらの通信の形態も選択できます。
要約:RTUの使用は一般的に推奨されます。Win NTでRTUを使用してタイムアウトに問題がある場合や、300 bpsやダイヤルアップモデムなどの低速な通信メディアを使用する場合は、ASCIIを使用してください。Modbus用のほとんどのOPCサーバはASCIIとRTU 通信をサポートする。
拡張レジスタアドレスとは何ですか?
アナログ出力保持レジスタの範囲は40001 ~ 49999であるため、9999を超えることはできません。ほとんどのアプリケーションでは通常十分ですが、より多くのレジスタが必要な場合もあります。レジスタ40001から49999は、データアドレス0000から270Eに対応する。残りのデータアドレス270FをFFFFに使用すると、最大6 倍のレジスタが利用可能になり、合計65,53 6個になります。これはレジスタ番号40001から1055 3 6までに対応します。多くのModbusソフトウェアドライバ(クライアントPC用)は40001から49999までの制限で書かれており、サーバデバイスの拡張レジスタにアクセスできない。さらに、多くのサーバデバイスは、拡張レジスタを使用したマップをサポートしていません。一方、一部のサーバデバイスはこれらのレジスタをサポートしており、特にカスタムソフトウェアが書かれている場合、一部のクライアントソフトウェアがアクセスできます。
2バイトのサーバーアドレスを使用するには?
サーバーアドレスの定義には通常1バイトが使用され、ネットワーク上の各サーバーは一意のアドレスを必要とするため、ネットワーク上のサーバーの数は256まで制限されています。Modbus仕様で定義された制限はさらに低く、247です。この制限を超えるには、アドレスとして2バイトを使用するようにプロトコルを変更することができる。クライアントとサーバーの両方がこの変更をサポートする必要があります。2バイトのアドレスを使用すると、ネットワーク内のサーバ数の制限を65,53 5まで拡張できます。デフォルトでは、Simply Modbusソフトウェアは1バイトアドレスを使用します。入力アドレスが255より大きい場合、ソフトウェアは自動的に2バイトアドレスに切り替わり、手動で2バイトアドレスをオフにするまでこのモードのままになります。
イベントや履歴データを送信するには?
Enron Modbusにはイベントや履歴データを移動するコマンドが含まれる。
Enron Modbusとは?
Enron Modbusは、Enron Corporationが開発したModicon Modbus 通信プロトコルの改良版である。詳細はEnron Modbusを参照してください。
发表回复