# 主动均衡BMS主从机通讯协议

> 暂定采用MODBUS协议
>
> 主CPU当主机,从CPU为从机
>
> 从机收到蓝牙数据后直接传给主机
>
> 从机除了蓝牙数据以外不会主动向主机发送数据,只响应主机指令,如读取数据等;
>
> 从机主动工作内容为读取V1/V2电压,监测电池掉线,监测电池电压,监测均衡电流,获取GPS,开关桥驱动
>
> 从机被动工作内容为蓝牙收发数据,电容充放电(均衡),LCD显示。

## 1.主从通讯协议内容

### 1.1从机直接发送给主机

1. 蓝牙模块数据

### 1.2主机从从机读取数据

1. V1/V2电压
2. 掉线监测状态
3. 电池电压状态
4. 均衡电流
5. GPS数据

### 1.3主机发送指令给从机

1. 发送蓝牙数据
2. 电容开关充电
3. 电容开关放电
4. 桥驱动电源开关
5. LCD数据

### 1.4主机发送配置数据给从机

1. 蓝牙开关
2. BUCK占空比
3. BOOST占空比

## 2.协议帧格式

> 采样MODBUS协议
>
> 相关定义如下:
>
> 起始码:0x53
>
> 读数据:0x03
>
> 发指令:0x06
>
> 发数据:0x10
>
> 结束码:0x4C

### 2.1主机读取从机数据

发送:

| 起始码 | 功能码 | 地址  | 数据高位 | 数据低位 | 校验低位 | 校验高位 |
| ------ | ------ | ----- | -------- | -------- | -------- | -------- |
| 0x53   | 0x03   | 00-FF | 0x xx    | 0x xx    | 0x xx    | 0x xx    |

响应:

| 起始码 | 功能码 | 地址  | 寄存器数量 | 数据1高位 | 数据1低位 | ...  | 校验低位 | 校验高位 |
| ------ | ------ | ----- | ---------- | --------- | --------- | ---- | -------- | -------- |
| 0x53   | 0x03   | 00-FF | 0x xx      | 0x xx     | 0x xx     |      | 0x xx    | 0x xx    |

### 2.2主机发送命令给从机

发送:

| 起始码 | 功能码 | 命令号 | 校验低位 | 校验高位 |
| ------ | ------ | ------ | -------- | -------- |
| 0x53   | 0x06   | 00-FF  | 0x xx    | 0x xx    |

响应:

| 起始码 | 功能码 | 命令号 | 执行结果 | 校验低位 | 校验高位 |
| ------ | ------ | ------ | -------- | -------- | -------- |
| 0x53   | 0x06   | 00-FF  | 0x xx    | 0x xx    | 0x xx    |

### 2.3主机发送数据给从机

发送:

| 起始码 | 功能码 | 起始地址 | 寄存器数量 | 数据1高位 | 数据1低位 | ...  | 校验低位 | 校验高位 |
| ------ | ------ | -------- | ---------- | --------- | --------- | ---- | -------- | -------- |
| 0x53   | 0x10   | 00-FF    | 0x xx      | 0x xx     | 0x xx     |      | 0x xx    | 0x xx    |

响应:

| 起始码 | 功能码 | 起始地址 | 寄存器数量 | 发数据结果 | 校验低位 | 校验高位 |
| ------ | ------ | -------- | ---------- | ---------- | -------- | -------- |
| 0x53   | 0x10   | 00-FF    | 0x xx      | 0x xx      | 0x xx    | 0x xx    |