modbus.rtu_request
modbus.rtu_request
功能
构建 Modbus RTU 请求帧,并自动追加 CRC16。
语法
modbus.rtu_request(config)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| config | Object | 是 | 无 | 请求配置对象。 |
配置字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| unit_id | Int | 否 | 1 | 从站地址,0 到 255。 |
| function_code | Int | 否 | 无 | Modbus 功能码。也可使用 function 字符串。 |
| function | String | 否 | 无 | 功能名,例如 read_holding_registers。 |
| address | Int | 读写寄存器/线圈时使用 | 0 | 起始地址。 |
| quantity | Int | 读取时使用 | 1 | 读取数量。 |
| value | Int/Bool | 写单个寄存器/线圈时使用 | 0 | 写入值。 |
| values | Array | 写多个寄存器/线圈时使用 | 无 | 多值写入数据。 |
| pdu | Bytes/Array | 否 | 无 | 原始 PDU;传入后不再根据功能码构建。 |
| data | Bytes/Array/String | 否 | 无 | 不支持的自定义功能码附加数据。 |
返回值
| 类型 | 说明 |
|---|---|
| Bytes | RTU ADU 完整请求帧。 |
代码示例
packet = modbus.rtu_request({ unit_id: 1, function: 'read_holding_registers', address: 0, quantity: 2 }) // 输出:010300000002c40b print packet.to_hex()
注意事项
- RTU CRC 按低字节在前写入帧尾。
- 结果长度受
BT_BYTES_LIMIT限制。