Modbus RTU如何複数のレジスタを書く。?小白チュートリアル

freeFree Technical Resource

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

Modbus RTU如何複数のレジスタを書く。?小白チュートリアル

Modbus RTU 複数のレジスタを書く。详解

Modbus RTU如何複数のレジスタを書く。?小白チュートリアルイラスト

1. 协议概述

Modbus RTU 是一种串行通信プロトコル,用于工业自動化中的デバイス间通信。主要特点是简单、稳定。在这个モード中,データ是以二进制的形式传输的。

2. write multiple registers

当我们需要修改一个デバイス(例如,电机驱动器或センサーは)上的多个参数时,我们可以使用“write multiple registers”Function。

3. リクエスト格式

一个標準的Modbus RTU複数のレジスタを書く。的リクエスト包含以下部分:

  • Device address: 1バイト,标识要通信的目标デバイス。
  • function code: 1バイト,複数のレジスタを書く。的機能コード为 0x10
  • Starting register address: 2バイト,指定第一个要写入的レジスタ的アドレス。
  • number of registers: 2バイト,指定要写入的レジスタ的总数量。
  • バイト计数: 1バイト,表示后续要写入的データ总Bytesの数。
  • data: 根据需要写入的レジスタの数变化,すべてのレジスタ。为2バイト。
  • CRC check: 2バイト,用于验证メッセージ完全に。性。

4. 例子

假设我们要向アドレス为 0x01 的デバイス写入,从レジスター·アドレス 0x3000 开始,连续的41つのレジスタ。我们要写入的データ是:0x1234, 0x5678, 0x9ABC, 0xDEF0

构造的メッセージ为:

01       (Device address)
10       (function code)
30 00    (Starting register address)
00 04    (number of registers)
08       (バイト计数,4レジスタ*2バイト/register)
12 34 56 78 9A BC DE F0 (data)
?? ??    (CRC check, 实际值需要使用crc16-modbus来計算)

要注意,CRC check值是基于整个メッセージ(除CRC外的部分)来計算的。你需要使用Modbus RTU的CRC算法来得到这个值,并将它追加到メッセージ的尾部。

5. 送信并待機中

完成メッセージ后,経由适当的串行通讯接口(如RS-485)送信它,并待機中从デバイス的レスポンス。応答の形式和リクエスト类似,但不包含バイト计数和データ部分。

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

《 “Modbus RTU如何複数のレジスタを書く。?小白チュートリアル” 》 有 2 条コメント

Leave a Reply

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