Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

6.4 KiB

Modbus RTU最大长度ADU测试

串口助手请选择HEX发送。下列报文已经完整展开,可以直接复制。

测试条件:

  • 从站地址为0x01
  • 先执行0x0F写线圈,再执行0x01读线圈
  • 先执行0x10写保持寄存器,再执行0x03读保持寄存器
  • 0x10和0x03使用D6000起始地址,避免覆盖掉电保持区和通信历史区
  • 文档中的全零读取响应以相关线圈和保持寄存器初始值均为0为前提
  • 0x0F一次最多写1968个线圈,不能单次清零全部2000个待读线圈;测试0x01前还应确认线圈1968~1999为0
  • 0x10一次最多写123个寄存器,不能单次清零全部125个待读寄存器;测试0x03前还应确认D6123~D6124为0

0x0F写入1968个线圈

含义:

  • 01:从站地址
  • 0F:写多个线圈功能码
  • 00 00:起始线圈地址0
  • 07 B0:写入数量1968
  • F6:后续线圈数据长度246字节
  • 连续246个00:将线圈0~1967全部写为OFF
  • A6 FE:CRC低字节、CRC高字节
  • 测试目的:用255字节合法请求帧检查DMA接收缓冲区边界和最大线圈写入数量

请求帧长度:255字节

请求帧:

01 0F 00 00 07 B0 F6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 FE

预期响应帧长度:8字节

预期响应帧:

01 0F 00 00 07 B0 56 4F

0x01读取2000个线圈

含义:

  • 01:从站地址
  • 01:读线圈功能码
  • 00 00:起始线圈地址0
  • 07 D0:读取数量2000
  • 3F A6:CRC低字节、CRC高字节
  • 响应中的FA表示后续包含250字节线圈状态,因为2000 ÷ 8 = 250
  • 响应中的250个00表示线圈0~1999全部为OFF
  • F5 AF:全零响应对应的CRC低字节、CRC高字节
  • 测试目的:检查最大线圈读取数量以及255字节响应帧的DMA发送

请求帧长度:8字节

请求帧:

01 01 00 00 07 D0 3F A6

预期响应帧长度:255字节

预期响应帧:

01 01 FA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F5 AF

0x10写入123个保持寄存器

含义:

  • 01:从站地址
  • 10:写多个保持寄存器功能码
  • 17 70:起始地址6000,即D6000
  • 00 7B:写入数量123
  • F6:后续寄存器数据长度246字节
  • 连续246个00:将D6000~D6122全部写为0
  • 76 06:CRC低字节、CRC高字节
  • 正常响应回显起始地址17 70和写入数量00 7B
  • 测试目的:用255字节合法请求帧检查DMA接收缓冲区边界和最大寄存器写入数量

请求帧长度:255字节

请求帧:

01 10 17 70 00 7B F6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 76 06

预期响应帧长度:8字节

预期响应帧:

01 10 17 70 00 7B 84 45

0x03读取125个保持寄存器

含义:

  • 01:从站地址
  • 03:读保持寄存器功能码
  • 17 70:起始地址6000,即D6000
  • 00 7D:读取数量125
  • 81 84:CRC低字节、CRC高字节
  • 响应中的FA表示后续包含250字节寄存器数据,因为125 × 2 = 250
  • 响应中的250个00表示D6000~D6124全部为0
  • 08 E8:全零响应对应的CRC低字节、CRC高字节
  • 测试目的:检查最大保持寄存器读取数量以及255字节响应帧的DMA发送

请求帧长度:8字节

请求帧:

01 03 17 70 00 7D 81 84

预期响应帧长度:255字节

预期响应帧:

01 03 FA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 E8

检查项

  • 0x0F和0x10请求的ModbusRxFrameLength应为255
  • 0x01和0x03正常响应的responseLength应为255
  • droppedFrameCount不应增加
  • uartErrorCount不应增加
  • 不应发生HardFault、DMA越界或接收停止
  • 完成255字节帧后,下一帧仍应正常通信