# modbus 协议辅助库

## 功能

`modbus()` 提供 Modbus RTU/TCP 帧构建、CRC16 校验和响应解析能力。它只处理协议字节，不直接打开串口或 TCP 连接。

## 语法

```bt
modbus.method(args)
modbus().method(args)
```

## 参数

按具体方法决定。

## 返回值

按具体方法决定。

## 方法

| 方法 | 说明 |
|------|------|
| [rtu_request](/docs/modbus/rtu_request) | 构建 Modbus RTU 请求帧。 |
| [tcp_request](/docs/modbus/tcp_request) | 构建 Modbus TCP 请求帧。 |
| [parse_rtu](/docs/modbus/parse_rtu) | 解析 Modbus RTU 响应帧。 |
| [parse_tcp](/docs/modbus/parse_tcp) | 解析 Modbus TCP 响应帧。 |
| [crc16](/docs/modbus/crc16) | 计算 Modbus RTU CRC16。 |

## 代码示例

```bt
packet = modbus.tcp_request({
    transaction_id: 1,
    unit_id: 1,
    function: 'read_holding_registers',
    address: 0,
    quantity: 2
})

// 输出：000100000006010300000002
print packet.to_hex()
```

## 注意事项

- 生成的请求帧返回 Bytes，可直接传给 `serial.write()`、`tcp.write()` 或 `ws.send()`。
- 支持功能名：`read_coils`、`read_discrete_inputs`、`read_holding_registers`、`read_input_registers`、`write_single_coil`、`write_single_register`、`write_multiple_coils`、`write_multiple_registers`。
- 需要自定义 PDU 时可传入 `pdu: bytes(...)`。
