# modbus.rtu_request ## 功能 构建 Modbus RTU 请求帧,并自动追加 CRC16。 ## 语法 ```bt 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 完整请求帧。 | ## 代码示例 ```bt 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` 限制。