分类 上位机 下的文章

modbus.png

发送16进制命令 : 01 03 00 5A 00 08 64 1F
接收16进制数据 : 01 03 10 3F DC 8D BC 3F 80 00 00 44 A0 C0 AE 47 99 02 7D EE CD

  1. 发送命令01 表示 设备地址(Slave Address): 0x01 - 这个字节指定了目标从设备的地址,在Modbus网络中,每个设备都有一个唯一的地址,范围通常是1到247。这里的目标设备地址是1。
  2. 功能码(Function Code): 0x03 - 这个字节定义了所要执行的功能。0x03代表了“读保持寄存器”(Read Holding Registers)的功能,意味着请求从从设备读取保存的数据寄存器的值。
  3. 起始地址(Starting Address): 0x00, 0x5A - 这两个字节合起来表示要读取的第一个寄存器的地址。在Modbus中,寄存器地址通常以16位(两个字节)为单位。这里转换为十进制是 0x00 0x5A = 90,即从第90号寄存器开始读取。
  4. 寄存器数量(Quantity of Registers): 0x00, 0x08 - 同样是两个字节,表示要读取的寄存器数量。转换为十进制是 0x0008 = 8,即读取8个寄存器。
  5. CRC校验低字节(CRC Low): 0x64 - Cyclic Redundancy Check (CRC) 是一种用于检测数据传输错误的校验码。这里给出的是校验码的低字节。
  6. CRC校验高字节(CRC High): 0x1F - CRC校验的高字节。结合低字节一起使用,可以验证整个报文在传输过程中是否完整无误。

==========================================================================================================

  1. 接收数据,01 03 表示原来的发送的地址和命令,跟发送的命令一致.
  2. 0X10 转换为10进制为16,表示接收的数据字节数,这里接收了16个字节,也就是4个32位浮点数,每个4个字节.\
  3. 最后两位 EE CD 是crc校验位.跟发送的时候算法一样.