什么是 Modbus 以及它如何工作?

freeFree Technical Resource

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

什么是 Modbus 以及它如何工作?
什么是 Modbus 以及它如何工作?Figure

什么是 Modbus?

Modbus It is a serial communication protocol, developed by company (now Schneider Electric) in year for PLC communication Modicon 公司于 1979 年发布,用于与其可プログラミング逻辑コントローラーは(PLC)一起使用。简而言之,它是用于在電子デバイス之间的串行线路上传输信息的方法。リクエスト信息的デバイス被称为 Modbus クライアント側は,提供信息的デバイス是 Modbus Server。在標準 Modbus 网络中,有一个クライアント側は和多达 247 个サーバー·サーバー,每个サーバー·サーバー都有从 1 to 247 的唯一サーバー·サーバーアドレス。クライアント側は还可以向サーバー·サーバー写入信息。

它用于什么?

Modbus 是一种オープン·プロトコル,这意味着制造商可以在其デバイス中构建它,而无需支付专利费用。它已成为工业界的標準通信プロトコル,并现在是连接工业電子デバイス的最も一般的な手段。它被广泛用于许多制造商的各个業界。Modbus 通常用于从仪器和控制デバイス传输信号到主コントローラーは或データの収集系统,例如用于测量温度和湿度并将结果传输到計算机的系统。Modbus 通常用于将モニタリング計算机与远程终端ユニット(RTU)连接在一起,这在モニタリング和データの収集(SCADA)系统で使用する。。Modbus protocol的版本存在于串行线路(Modbus RTU 和 Modbus ASCII)和イーサネット(イーサネット)(Modbus TCP)中。

它如何工作?

Modbus 是在デバイス之间経由串行线路传输的。最简单的設定是单个串行电缆连接2つデバイス的串行ポート,即クライアント側は和サーバー·サーバー。

什么是 Modbus 以及它如何工作?Figure1

データ被送信为一系列称为位的一和零。每个位都作为电压送信。零以正电压送信,而一以负电压送信。这些位送信得非常快。典型的传输速度为 9600 Baud rate(每秒位数)。

什么是十六进制?

在解決問題时,表示实际的生データ被送信是有帮助的。长串的1和0很难阅读,所以位被组合并以十六进制形式表示。每个 4 位块由从 0 to F 的十六个文字之一表示。

什么是 Modbus 以及它如何工作?Figure2

每个 8 位块(称为バイト)由从 00 to FF 的 256 个文字对之一表示。

データ如何存储在標準 Modbus 中?

信息存储在サーバー·サーバーデバイス中,有四种不同的表。2つ表存储开/关的离散值(コイル),而另外2つ表存储数字值(register)。コイル和レジスタ都有読み取り専用表和読み書き表。每个表有 9999 个值。每1つのコイル或接点都是 1 位,并分配了データアドレス从 0000 to 270E。すべてのレジスタ。都是 1 字 = 16 位 = 2 bytes,也有データアドレス从 0000 to 270E。

什么是 Modbus 以及它如何工作?Figure3

コイル/レジスタ编号可以被看作是位置名称,因为它们不出现在实际的メッセージ中。データアドレス用于メッセージ中。例如,第一レジスタを保持する。,编号为 40001,具有データアドレス 0000。这2つ值之间的差异是オフセットの量。每个表都有不同的オフセットの量,分别为 1、10001、30001 和 40001。

Server ID What is it?

网络中的每个サーバー·サーバー都被分配一个唯一的ユニットアドレス,从 1 to 247。当クライアント側はリクエストデータ时,它送信的第一个byteはサーバー·サーバーアドレス。这样,每个サーバー·サーバー在第一バイト単位。后就知道是否要忽略メッセージ。

什么是機能コード?

クライアント側は送信的第二个byteは機能コード。这个数字告诉サーバー·サーバー要アクセス哪个表,以及是从表中読み取りまだ写入。

什么是 Modbus 以及它如何工作?Figure4

CRC What is it?

CRC 代表循环冗余チェック。它是追加到每个 Modbus メッセージ末尾以用于エラー检测的两バイト単位。。メッセージ中的每バイト単位。都用于計算 CRC。受信デバイス还計算 CRC 并将其与送信デバイス的 CRC 进行比较。もしメッセージ中的一个位受信エラー,CRC 将不同,将导致エラー。

Modbus 命令和レスポンス的格式是什么?

データ型是什么?

FC03 的サンプル表示,register 40108 包含 AE41,它转换为 16 位 1010 1110 0100 0001。但这是什么意思?嗯,它可以表示几种不同的 16 位データ型:

  • 16 ビット符号なし整数(介于 0 to 65535 之间的整数)register 40108 包含 AE41 = 44609(十六进制转十进制)
  • 16 ビット符号付き整数(介于 -32768 to 32767 之间的整数)AE41 = -20927(将16進数変換为十进制后的包装,もし大于 32767,则减去 65536)
  • 2つ文字的 ASCII ストリング·ストリング(2 个文字字母)AE41 = ® A
  • 离散的开/关值(与 16 ビット整数型相同,具有值 0 或 1。十六进制データ将是 0000 或 0001)register 40108 还可以与 40109 结合以形成这些 32 位データ型中的任何一种:
  • 32 ビット符号なし整数(介于 0 to 4,294,967,295 之间的数字)40108,40109 = AE41 5652 = 2,923,517,522
  • 32 ビット符号付き整数(介于 -2,147,483,648 to 2,147,483,647 之间的数字)AE41 5652 = -1,371,449,774
  • 32 位双精度 IEEE 浮動小数点数。这是一个允许使用约七位小数的 32 位数表示任何实数(带有小数点的数字)的数学公式。AE41 5652 = -4.395978E-11。这是一个用于 4 bytes或 2 个字的入力的 IEEE 浮点計算器。要下载副本,请右クリック单击并選択“另存为…”。
  • 四个文字的 ASCII ストリング·ストリング(4 个文字字母)AE41 5652 = ® A V Rもっと見るレジスタ可以组合以形成更长的 ASCII ストリング·ストリング。すべてのレジスタ。用于存储2つ ASCII characters(两バイト単位。)。

バイト和字排序是什么?

Modbus 规范ない精确定义データストア在レジスタ中的方式。因此,一些制造商在其デバイス実現しました了 Modbus 以存储和传输ハイバイト,然后是低バイト数(AE 在 41 之前)。

另外,其他デバイス存储并传输低バイト数(41 在 AE 之前)。同样,当レジスタ组合以表示 32 位データ型时,一些デバイス将高 16 位(高字)存储在第一1つのレジスタ中,剩下的低字存储在第二1つのレジスタ中(AE41 在 5652 之前),而其他デバイス则相反(5652 在 AE41 之前)。

バイト或字以任何顺序送信无所谓,只要受信デバイス知道期望的方式是哪一种。例如,もし要将 29,235,175,522 作为 32 ビット符号なし整数送信,它可以以这四种方式之一配列。

AE41 5652 前の高さ。 前の単語。

5652 AE41 前の高さ。 前に低い言葉。

41AE 5256 低バイト数前に 前の単語。

5256 41AE 低バイト数前に 前に低い言葉。

什么是 Modbus マッピング?

Modbus マッピング只是为一个个体サーバー·サーバーデバイス定义的リスト,它定义了データ是什么(例如压力或温度读数),データストア在哪里(哪个表和データアドレス)

データ如何存储(data type、バイト和字排序)

一些デバイス内置了制造商定义的固定地图。而其他デバイス允许操作员設定或プログラミング自定义地图以满足其需求

Modbus ASCII 和 Modbus RTU 之间違いは何ですか??

Modbus RTU 和 Modbus ASCII 使用相同的协议。唯一違いはありません是在电线上传输的バイト与 RTU 以二进制形式呈现,并且使用 Modbus RTU 时以可读的 ASCII 形式呈现。需要注意的是,RTU メッセージないStart_of_text 标志。通信中的受信方使用“静默”时间来确定新メッセージ的开始。ASCII 具有文本标记。二进制メッセージ比 ASCII メッセージ要短,因此在理论上传输/受信速度更快。您可能会对 HMI/SCADA 中的更新速度约 100 毫秒感到满意,可以選択任何一种通信の形態。

总结:一般情况推奨される使用 RTU;もし在 WinNT 上使用 RTU 出现タイムアウト問題或者使用较慢的通信媒体,如 300 bps 或拨号调制解调器时,请使用 ASCII。对于 Modbus 的大多数 OPC サーバー·サーバーサポート ASCII 和 RTU Communication。

什么是扩展レジスター·アドレス?

由于模拟出力レジスタを保持する。的範囲为 40001 to 49999,这意味着レジスタ不能超过 9999 个。虽然这通常对大多数应用足够,但也有一些情况下需要もっと見る的レジスタ。register 40001 to 49999 对应データアドレス 0000 to 270E。もし我们使用剩余的データアドレス 270F to FFFF,将有多达 6 倍多的レジスタ可用,总计 65536 个。这将对应于レジスタ编号从 40001 to 105536。许多 Modbus 软件驱动程序(用于クライアント側は PC)是根据 40001 to 49999 的限制编写的,无法アクセスサーバー·サーバーデバイス中的扩展レジスタ。而且,许多サーバー·サーバーデバイスサポートなし。使用扩展レジスタ的地图。但另一方面,某些サーバー·サーバーデバイスサポート这些レジスタ,某些クライアント側は软件可以アクセス它,尤其是もし编写了自定义软件。

How to use 2 bytesサーバー·サーバーアドレス?

由于通常使用一バイト単位。来定义サーバー·サーバーアドレス,并且网络上的每个サーバー·サーバー都需要唯一的アドレス,所以网络上的サーバー·サーバー数量是有限的,最多为 256。Modbus 规范中定义的限制甚至更低,为 247。要超越这个限制,可以对协议进行修改,以使用两バイト単位。作为アドレス。クライアント側は和サーバー·サーバー都需要サポート此修改。使用两バイトアドレス可以将网络中サーバー·サーバー的数量限制扩展到 65535。デフォルト情况下,Simply Modbus 软件使用 1 byteaddress。入力アドレス大于 255 时,软件会自动切换到 2 bytesaddress,并保持在此モード下,直到手动关闭 2 bytes寻址。

如何送信事件和历史データ?

Enron Modbus 包括用于移動事件和历史データ的命令。

什么是 Enron Modbus?

Enron Modbus 是由 Enron 公司开发的对標準 Modicon Modbus 通信プロトコル的修改。请参阅 Enron Modbus 以取得詳細はこちら。

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 *.