modbus 帧信息格式
modbus rtu标准帧
设备地址(1个字节) | 从设备地址 |
功能码(1个字节) | 0x01 (01): 读取线圈状态。 0x02 (02): 读取离散输入状态。 0x03 (03): 读保持寄存器。 0x04 (04): 读输入寄存器。 0x05 (05): 写单个线圈。 0x06 (06): 写单个保持寄存器。 0x0F (15): 写多个线圈。 0x10 (16): 写多个保持寄存器。 |
数据域(N个字节) | 读取线圈状态:数据域包括起始地址(2字节)和数量(2字节)。表示从哪个线圈开始读取以及要读取多少个线圈的状态。 写单个保持寄存器:数据域包括寄存器地址(2字节)和值(2字节)。指示将指定值写入哪一个寄存器。 写多个保持寄存器:数据域包括起始地址(2字节)、数量(2字节)以及后续的实际写入数据(每个寄存器2字节)。 |
CRC校验(2个字节) | 对设备地址+功能码+数据域组成的信息进行CRC计算,生成16位数值,拆分成2个字节。 |
modbus tcp标准帧
再modbus rtu标准帧前加入:
事务标识符(4个字节) | 任意值,请求和响应相同。 |
协议标识符(2个字节) | 00表示modbus协议。 |
长度字段(2个字节) | 值根据数据域变化。 |