936 lines
43 KiB
Markdown
936 lines
43 KiB
Markdown
|
|
# 36仓体直流电瓶车充电柜 - 开发文档
|
|||
|
|
|
|||
|
|
## 1. 项目概述
|
|||
|
|
|
|||
|
|
### 1.1 项目目标
|
|||
|
|
|
|||
|
|
开发一款36仓体直流电瓶车充电柜,配置6个电源(每个电源对应6个仓体的独立直流输出口),支持每个仓体输出口独立设置电流、电压参数,适配星恒BMS Modbus协议与电源1TN RS485协议,实现安全、高效的独立充电功能。每个仓体配套状态指示灯,通过不同灯光状态反馈仓体工作情况,同时支持平台远程禁用仓体。
|
|||
|
|
|
|||
|
|
核心新增定制仓控主板及柜控主板功能:
|
|||
|
|
- 每个仓控主板单独与所属电源通讯
|
|||
|
|
- 仓控板采用拨码开关设置ID(ID范围1-6)
|
|||
|
|
- 柜控板ID固定为128
|
|||
|
|
|
|||
|
|
### 1.2 核心功能矩阵
|
|||
|
|
|
|||
|
|
| 功能模块 | 子功能 | 说明 |
|
|||
|
|
|---------|--------|------|
|
|||
|
|
| 独立充电 | 多电压适配 | 48V/60V/72V直流适配,电流5A-20A可调 |
|
|||
|
|
| | 快充模式 | 直流快充,1-2小时充满 |
|
|||
|
|
| | 充电控制 | 扫码开门/预约/定时充电 |
|
|||
|
|
| | BMS协议适配 | 支持星恒485一线通、天能485,平台可配置 |
|
|||
|
|
| | 无协议充电 | 固定电压电流输出,低电流自动停止 |
|
|||
|
|
| 仓体状态指示 | 绿灯闪烁 | 充电中,继电器闭合,电源正常输出 |
|
|||
|
|
| | 绿灯常亮 | 仓体空闲,可正常启动充电 |
|
|||
|
|
| | 红灯常亮 | 平台仓体禁用,管理员锁定 |
|
|||
|
|
| | 红灯闪烁 | 电池不符合要求或设备告警或门未关 |
|
|||
|
|
| 门锁控制 | 扫码开门 | 用户扫码→平台验证→下发开门指令 |
|
|||
|
|
| | 门磁检测 | 实时监测仓门开/关状态 |
|
|||
|
|
| | 关门超时报警 | 超过设置阈值未关门,上传告警(阈值可配置) |
|
|||
|
|
| 平台仓体控制 | 远程禁用 | 管理员下发禁用指令,强制锁定仓体 |
|
|||
|
|
| | 状态同步 | 禁用后指示灯切换,禁止充电 |
|
|||
|
|
| | 手动解除 | 管理员解除禁用,恢复空闲状态 |
|
|||
|
|
| 协议对接 | 1TN RS485 | 仓控板与电源通讯(电源参数控制) |
|
|||
|
|
| | 星恒BMS Modbus | 仓控板与星恒电池BMS通讯(状态监测) |
|
|||
|
|
| | 天能485 | 仓控板与天能电池BMS通讯(状态监测) |
|
|||
|
|
| | 仓控-柜控485 | 仓控板(ID1-6)与柜控板(ID128)通讯 |
|
|||
|
|
| 安全防护 | 过充/过温/过流/短路/漏电 | 实时监测,自动断电 |
|
|||
|
|
| | 烟感+喷淋 | 烟感触发→断开接触器+打开喷淋电磁阀 |
|
|||
|
|
| | 浸水保护 | 浸水触发→断开接触器切断380V |
|
|||
|
|
| | 远程恢复 | 误报警可平台远程吸合接触器恢复供电 |
|
|||
|
|
| | 6路温控 | 仓体温度实时采集,高温阈值可配置 |
|
|||
|
|
| | 加热风扇 | 环境温度<0°C自动启动加热,≥25°C停止 |
|
|||
|
|
| 固件管理 | OTA升级 | 平台远程升级柜控板和仓控板固件 |
|
|||
|
|
| 定制主板 | 仓控主板 | 6路继电器、门锁驱动、门磁检测、光耦隔离、多通道485、温控 |
|
|||
|
|
| | 柜控主板 | 烟感/浸水接口、喷淋电磁阀、加热风扇、电磁泵、4G模块(TCP长连接) |
|
|||
|
|
|
|||
|
|
## 2. 系统架构
|
|||
|
|
|
|||
|
|
### 2.1 硬件架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌───────────────────────┐
|
|||
|
|
│ 380V 市电输入 │
|
|||
|
|
└──────────┬────────────┘
|
|||
|
|
│
|
|||
|
|
┌────┴────┐
|
|||
|
|
│ 漏保 │
|
|||
|
|
└────┬────┘
|
|||
|
|
│
|
|||
|
|
┌──────────┼──────────┐
|
|||
|
|
│ │ │
|
|||
|
|
┌─────┴─────┐ ┌──┴───┐ ┌───┴──────┐
|
|||
|
|
│ 12V电源 │ │接触器 │ │其他负载 │
|
|||
|
|
│(预接触器) │ │柜控板控│ │(风扇等) │
|
|||
|
|
└─────┬─────┘ └──┬───┘ └──────────┘
|
|||
|
|
│ │
|
|||
|
|
┌─────┴─────┐ ┌──┴───────────┐
|
|||
|
|
│ 柜控板128 │ │ 充电电源×6 │
|
|||
|
|
│ 仓控板×6 │ │ (直流输出) │
|
|||
|
|
│ (常供电) │ └──────────────┘
|
|||
|
|
└─────┬─────┘
|
|||
|
|
│
|
|||
|
|
┌─────┴─────┐
|
|||
|
|
│ 后备电池 │
|
|||
|
|
│(380V断电备用)│
|
|||
|
|
└───────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 软件架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────┐
|
|||
|
|
│ 后台管理平台 │
|
|||
|
|
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐ │
|
|||
|
|
│ │设备管理│ │用户管理│ │数据统计│ │故障管理 │ │
|
|||
|
|
│ │OTA升级│ │ │ │ │ │报警阈值 │ │
|
|||
|
|
│ └──┬───┘ └──┬───┘ └──┬───┘ └────┬─────┘ │
|
|||
|
|
│ ┌──┴──────────┴──────────┴──────────┴────┐ │
|
|||
|
|
│ │ BMS协议配置 · 无协议充电参数 │ │
|
|||
|
|
│ │ 门锁控制 · 仓体控制 · 仓体禁用 │ │
|
|||
|
|
│ └─────────────────────────────────────────┘ │
|
|||
|
|
│ ┌────────────────────────────────────────┐ │
|
|||
|
|
│ │ 自定义TCP通讯服务(长连接) │ │
|
|||
|
|
│ └────────────────────────────────────────┘ │
|
|||
|
|
├─────────────────────────────────────────────┤
|
|||
|
|
│ 微信小程序 │
|
|||
|
|
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────┐ │
|
|||
|
|
│ │扫码充电│ │预约充电│ │进度查询│ │消息通知 │ │
|
|||
|
|
│ │扫码开门│ │ │ │ │ │ │ │
|
|||
|
|
│ └──────┘ └──────┘ └──────┘ └──────────┘ │
|
|||
|
|
├─────────────────────────────────────────────┤
|
|||
|
|
│ 柜控主板(ID128)固件 │
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
|
|||
|
|
│ │ TCP通讯 │ │数据处理 │ │充电控制逻辑 │ │
|
|||
|
|
│ ├──────────┤ ├──────────┤ ├─────────────┤ │
|
|||
|
|
│ │烟感/浸水 │ │485主站 │ │门锁指令转发 │ │
|
|||
|
|
│ │喷淋电磁阀 │ │OTA管理 │ │BMS配置管理 │ │
|
|||
|
|
│ └──────────┘ └──────────┘ └─────────────┘ │
|
|||
|
|
├─────────────────────────────────────────────┤
|
|||
|
|
│ 仓控主板(ID1-6)固件 │
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
|
|||
|
|
│ │ 485从站 │ │BMS通讯 │ │ 继电器控制 │ │
|
|||
|
|
│ │ │ │多协议适配 │ │ 门锁控制 │ │
|
|||
|
|
│ ├──────────┤ ├──────────┤ ├─────────────┤ │
|
|||
|
|
│ │指示灯控制 │ │温控采集 │ │ 门磁监测 │ │
|
|||
|
|
│ │OTA升级 │ │ │ │ 数据上报 │ │
|
|||
|
|
│ └──────────┘ └──────────┘ └─────────────┘ │
|
|||
|
|
└─────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 通讯协议设计
|
|||
|
|
|
|||
|
|
### 3.1 电源 1TN RS485 协议
|
|||
|
|
|
|||
|
|
#### 3.1.1 协议基础
|
|||
|
|
|
|||
|
|
- 标准号:YG20240118-1,版本 V1.0
|
|||
|
|
- 制定方:苏州翌工电源科技有限公司
|
|||
|
|
- 适用设备:换电柜用锂电池充电器(1TN系列多路充电器)
|
|||
|
|
- 传输模式:Modbus-RTU
|
|||
|
|
- 波特率:9600
|
|||
|
|
- 字格式:11位:1个起始位(0) + 8个数据位 + 1个停止位
|
|||
|
|
- 通讯方式:半双工主从应答(仓控板为主机,电源为从机)
|
|||
|
|
- 地址范围:0x01-0x07(对应电源3位拨码开关,001=0x01 ... 111=0x07)
|
|||
|
|
- 校验方式:和校验(SUM = 所有字节相加取低8位)
|
|||
|
|
- 字节序:BigEndian(网络字节序)
|
|||
|
|
|
|||
|
|
#### 3.1.2 信息帧格式
|
|||
|
|
|
|||
|
|
| 字段 | 字节数 | 说明 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| ADDR | 1 | 电源地址 (0x01-0x07,对应拨码开关) |
|
|||
|
|
| CHx | 1 | 通道号,高7位通道编号,Bit0主/副通道 |
|
|||
|
|
| CMD | 1 | 功能码 |
|
|||
|
|
| LEN | 1 | 数据区长度 |
|
|||
|
|
| DATA | LEN | 数据区,BigEndian |
|
|||
|
|
| SUM | 1 | 和校验 = (ADDR+CHx+CMD+LEN+DATA) & 0xFF |
|
|||
|
|
|
|||
|
|
**CHx 通道字节解析:**
|
|||
|
|
|
|||
|
|
| 通道 | Bit1-7 | CHx值(Bit0=0) | CHx值(Bit0=1) |
|
|||
|
|
|------|--------|---------------|---------------|
|
|||
|
|
| CH1 | 0x00 | 0x00 (主通道) | 0x01 (副通道) |
|
|||
|
|
| CH2 | 0x01 | 0x02 (主通道) | 0x03 (副通道) |
|
|||
|
|
| CH3 | 0x02 | 0x04 (主通道) | 0x05 (副通道) |
|
|||
|
|
| CH4 | 0x03 | 0x06 (主通道) | 0x07 (副通道) |
|
|||
|
|
| CH5 | 0x04 | 0x08 (主通道) | 0x09 (副通道) |
|
|||
|
|
| CH6 | 0x05 | 0x0A (主通道) | 0x0B (副通道) |
|
|||
|
|
|
|||
|
|
#### 3.1.3 功能码定义
|
|||
|
|
|
|||
|
|
| 序号 | 命令 | CMD | LEN | 数据区 |
|
|||
|
|
|------|------|-----|-----|--------|
|
|||
|
|
| 1 | 设置通道输出电压/电流 | 0x02 | 0x04 | 电压(2B mV) + 电流(2B 0.1A) |
|
|||
|
|
| 2 | 设置通道开关机 | 0x03 | 0x01 | 0x00=关机, 0x01=开机 |
|
|||
|
|
| 3 | 通道组合指令(开关机+调压+调流) | 0x04 | 0x05 | 开关(1B) + 电压(2B) + 电流(2B) |
|
|||
|
|
| 4 | 电源通道信息查询 | 0x05 | 0x01 | 查询类型 |
|
|||
|
|
| 5 | 供应商/型号/版本号/序列号查询 | 0x12 | 0x01 | 查询类型 |
|
|||
|
|
| 6 | 升级状态查询 | 0x18 | - | 详见升级协议 |
|
|||
|
|
| 7 | OTA远程升级 | 0x19 | - | 详见升级协议 |
|
|||
|
|
|
|||
|
|
**电源回复数据格式:**
|
|||
|
|
|
|||
|
|
| 指令 | 回复LEN | 回复DATA说明 |
|
|||
|
|
|------|---------|-------------|
|
|||
|
|
| 0x02设置V/I | 0x01 | 0x01=设置成功 |
|
|||
|
|
| 0x03开关机 | 0x01 | 0x01=设置成功 |
|
|||
|
|
| 0x04组合指令 | 0x07 | 电压(2B) + 电流(2B) + 故障码(2B) + 环温(1B 0.1℃) |
|
|||
|
|
| 0x05查询 | 0x0D | 设置电压(2B) + 设置电流(2B) + 故障码(2B) + 环温(1B) + 输入电压(2B 0.01V) + 输入电流(2B 0.01A) + 输入功率(2B W) |
|
|||
|
|
| 0x12供应商信息 | 0x0F | 厂商(2B ASCII) + 型号(8B ASCII) + 硬件版本(1B) + 软件版本(1B) + 生产日期(3B) + 序列号(2B) |
|
|||
|
|
|
|||
|
|
#### 3.1.4 故障码定义
|
|||
|
|
|
|||
|
|
**故障字节1 (设备状态):**
|
|||
|
|
|
|||
|
|
| Bit | 含义 | Bit | 含义 |
|
|||
|
|
|-----|------|-----|------|
|
|||
|
|
| Bit0 | 输入欠压 | Bit4 | 输出欠压 |
|
|||
|
|
| Bit1 | 输入过压 | Bit5 | 输出短路 |
|
|||
|
|
| Bit2 | NC | Bit6 | 输出过流 |
|
|||
|
|
| Bit3 | 输出过压 | Bit7 | 过温 |
|
|||
|
|
|
|||
|
|
**故障字节2 (系统状态):**
|
|||
|
|
|
|||
|
|
| Bit | 含义 | Bit | 含义 |
|
|||
|
|
|-----|------|-----|------|
|
|||
|
|
| Bit0 | 硬件故障 | Bit4 | NC |
|
|||
|
|
| Bit1 | PFC故障 | Bit5 | NC |
|
|||
|
|
| Bit2 | 风扇故障 | Bit6 | NC |
|
|||
|
|
| Bit3 | 电池反接故障 | Bit7 | NC |
|
|||
|
|
|
|||
|
|
#### 3.1.5 指令示例
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
设置1#电源 CH1 开启+60.0V+10.0A (组合指令 0x04):
|
|||
|
|
主控 → 电源: ADDR=0x01, CHx=0x00, CMD=0x04, LEN=0x05,
|
|||
|
|
DATA=[0x01, 0x02, 0x58, 0x00, 0x64],
|
|||
|
|
SUM=(0x01+0x00+0x04+0x05+0x01+0x02+0x58+0x00+0x64)=0xC9
|
|||
|
|
电源 → 主控: ADDR=0x01, CHx=0x00, CMD=0x04, LEN=0x07,
|
|||
|
|
DATA=[0x02,0x58, 0x00,0x64, 0x01,0x01, 0x1A],
|
|||
|
|
回复: 当前电压60.0V, 电流10.0A, 故障码0x0101, 环温26℃
|
|||
|
|
|
|||
|
|
读取1#电源 CH1 运行信息 (查询 0x05):
|
|||
|
|
主控 → 电源: ADDR=0x01, CHx=0x00, CMD=0x05, LEN=0x01, DATA=[0x00], SUM=0x07
|
|||
|
|
电源 → 主控: ADDR=0x01, CHx=0x00, CMD=0x05, LEN=0x0D,
|
|||
|
|
DATA=[0x02,0x58, 0x00,0x64, 0x01,0x01, 0x1A,
|
|||
|
|
0x55,0xF0, 0x03,0xE8, 0x08,0x98],
|
|||
|
|
回复: 设定60.0V/10.0A, 故障码0x0101, 环温26℃,
|
|||
|
|
输入电压220.00V, 输入电流10.00A, 输入功率2200W
|
|||
|
|
|
|||
|
|
设置2#电源 CH2 关机 (开关机 0x03):
|
|||
|
|
主控 → 电源: ADDR=0x02, CHx=0x02, CMD=0x03, LEN=0x01, DATA=[0x00], SUM=0x08
|
|||
|
|
|
|||
|
|
供应商信息查询 (0x12):
|
|||
|
|
主控 → 电源: ADDR=0x01, CHx=0x00, CMD=0x12, LEN=0x01, DATA=[0x00], SUM=0x14
|
|||
|
|
电源 → 主控: ADDR=0x01, CHx=0x00, CMD=0x12, LEN=0x0F,
|
|||
|
|
DATA='YGCP1TN-A' + 硬件版本(1B) + 软件版本(1B) +
|
|||
|
|
生产日期(3B: 年/月/日) + 序列号(2B)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 BMS 协议适配
|
|||
|
|
|
|||
|
|
充电柜支持多协议BMS适配,通过平台远程配置当前柜体使用的BMS协议类型。仓控板根据配置选择对应的BMS通讯协议进行电池数据读取。
|
|||
|
|
|
|||
|
|
#### 3.2.1 BMS协议类型配置
|
|||
|
|
|
|||
|
|
| 协议类型 | 说明 | 配置方式 |
|
|||
|
|
|---------|------|---------|
|
|||
|
|
| 星恒485一线通 | 标准Modbus-RTU,地址0x16 | 平台配置 |
|
|||
|
|
| 天能485 | 自定义协议 | 平台配置 |
|
|||
|
|
| 无协议充电 | 不读取BMS,固定电压电流输出 | 平台配置 |
|
|||
|
|
|
|||
|
|
BMS协议配置存储在柜控板Flash中,仓控板上电时从柜控板获取当前BMS协议类型。平台可远程切换协议类型,切换后下次充电生效。
|
|||
|
|
|
|||
|
|
#### 3.2.2 星恒 BMS Modbus 协议
|
|||
|
|
|
|||
|
|
**协议基础:**
|
|||
|
|
|
|||
|
|
- 版本:V1.1
|
|||
|
|
- 传输模式:Modbus-RTU
|
|||
|
|
- 波特率:9600,数据位8,停止位1,无校验
|
|||
|
|
- BMS固定地址:0x16 (16H)
|
|||
|
|
- 支持功能码:03H(读保持寄存器)、10H(写控制指令)
|
|||
|
|
|
|||
|
|
**核心寄存器映射:**
|
|||
|
|
|
|||
|
|
| 寄存器地址 | 参数 | 类型 | 单位 | 说明 |
|
|||
|
|
|-----------|------|------|------|------|
|
|||
|
|
| 10000-10002 | BMS软硬件版本/控制 | 只读/读写 | - | 10002: 充电禁止/允许 |
|
|||
|
|
| 10003-10027 | 电池条码 | 只读 | ASCII | 25个寄存器 |
|
|||
|
|
| 10036 | 电芯材料 | 只读 | - | 磷酸铁锂/三元锂/锰酸锂 |
|
|||
|
|
| 10043-10072 | 30串单体电压 | 只读 | mV | 30个寄存器 |
|
|||
|
|
| 10074 | 总电压 | 只读 | mV | 1个寄存器 |
|
|||
|
|
| 10080-10089 | 10路电芯温度 | 只读 | 0.1℃ | 10个寄存器 |
|
|||
|
|
| 10091 | 单体过压告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10092 | 单体欠压告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10094 | 电芯不平衡告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10095 | 过流告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10096 | 过温告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10097 | 低温告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10101 | SOH | 只读 | 0.01 | 健康度0-1 |
|
|||
|
|
| 10102 | SOC | 只读 | 0.1% | 剩余电量 |
|
|||
|
|
| 10103 | 充电请求电压 | 只读 | mV | BMS请求的充电电压 |
|
|||
|
|
| 10104 | 最大充电请求电流 | 只读 | 0.1A | BMS请求的最大电流 |
|
|||
|
|
| 10156 | 电池组唯一编码 | 只读 | - | - |
|
|||
|
|
| 10166 | 总压异常告警 | 只读 | BIT | bit0=告警 |
|
|||
|
|
| 10167 | 容量通量 | 只读 | - | - |
|
|||
|
|
| 10169 | 能量通量 | 只读 | - | - |
|
|||
|
|
| 10172 | 生产日期 | 只读 | - | 年/月/日 |
|
|||
|
|
|
|||
|
|
#### 3.2.3 天能 485 协议
|
|||
|
|
|
|||
|
|
**协议基础:**
|
|||
|
|
|
|||
|
|
- 传输模式:自定义RS485协议
|
|||
|
|
- 波特率:9600,数据位8,停止位1,无校验
|
|||
|
|
- BMS地址:0x01
|
|||
|
|
- 协议细节:以天能电池官方提供的BMS通讯协议文档为准,仓控板固件中预留协议适配层,支持按配置切换协议实现
|
|||
|
|
|
|||
|
|
**适配策略:**
|
|||
|
|
|
|||
|
|
仓控板BMS通讯模块采用分层设计:
|
|||
|
|
1. **协议抽象层**:统一的数据接口(电压/电流/SOC/温度/告警等)
|
|||
|
|
2. **协议实现层**:星恒Modbus实现、天能自定义协议实现
|
|||
|
|
3. **配置选择层**:根据平台下发的BMS类型选择对应的协议实现
|
|||
|
|
|
|||
|
|
#### 3.2.4 无协议充电模式
|
|||
|
|
|
|||
|
|
当配置为无协议充电模式时,仓控板不通过485_2总线读取BMS数据,充电过程完全由平台下发的固定参数控制:
|
|||
|
|
|
|||
|
|
- 平台下发固定充电电压、充电电流
|
|||
|
|
- 仓控板直接控制电源输出设定值
|
|||
|
|
- 通过监测电源输出电流判断是否充满:电流低于设定阈值时自动停止
|
|||
|
|
- 低电流阈值由平台配置,可在充电过程中动态调整
|
|||
|
|
|
|||
|
|
### 3.3 仓控主板 ↔ 柜控主板 485 通讯
|
|||
|
|
|
|||
|
|
#### 3.3.1 通讯参数
|
|||
|
|
|
|||
|
|
- 波特率:9600
|
|||
|
|
- 半双工主从方式
|
|||
|
|
- 柜控主板(ID128)为主站
|
|||
|
|
- 仓控主板(ID1-6)为从站
|
|||
|
|
- 光耦隔离保护
|
|||
|
|
- 通讯响应延迟 ≤ 0.5s
|
|||
|
|
|
|||
|
|
#### 3.3.2 通讯帧结构
|
|||
|
|
|
|||
|
|
自定义协议帧:
|
|||
|
|
|
|||
|
|
| 字段 | 字节数 | 说明 |
|
|||
|
|
|------|--------|------|
|
|||
|
|
| 帧头 | 2 | 0xAA 0x55 |
|
|||
|
|
| 目标ID | 1 | 0x01-0x06 或 0x80(柜控板) |
|
|||
|
|
| 源ID | 1 | 0x01-0x06 或 0x80 |
|
|||
|
|
| 功能码 | 1 | 指令类型 |
|
|||
|
|
| 数据长度 | 2 | BigEndian |
|
|||
|
|
| 数据区 | N | 具体数据 |
|
|||
|
|
| CRC16 | 2 | Modbus CRC16 |
|
|||
|
|
|
|||
|
|
#### 3.3.3 功能码定义
|
|||
|
|
|
|||
|
|
| 功能码 | 指令 | 方向 | 说明 |
|
|||
|
|
|--------|------|------|------|
|
|||
|
|
| 0x01 | 上传BMS数据 | 仓控→柜控 | 电池SOC/电压/温度/告警/BMS协议类型 |
|
|||
|
|
| 0x02 | 上传温控数据 | 仓控→柜控 | 6路仓体温度+环境温度 |
|
|||
|
|
| 0x03 | 上传电源状态 | 仓控→柜控 | 电源运行参数 |
|
|||
|
|
| 0x04 | 上传设备状态 | 仓控→柜控 | 继电器/通讯/门磁/门锁状态 |
|
|||
|
|
| 0x05 | 上传门磁状态 | 仓控→柜控 | 6路仓体门开/关状态 |
|
|||
|
|
| 0x06 | 上传OTA状态 | 仓控→柜控 | OTA升级进度/结果 |
|
|||
|
|
| 0x81 | 继电器控制 | 柜控→仓控 | 充电继电器通断控制 |
|
|||
|
|
| 0x82 | 电源参数设置 | 柜控→仓控 | 电压/电流/开关/无协议充电参数 |
|
|||
|
|
| 0x83 | 指示灯控制 | 柜控→仓控 | 绿灯/红灯/闪烁 |
|
|||
|
|
| 0x84 | 查询指令 | 柜控→仓控 | 查询全量状态 |
|
|||
|
|
| 0x85 | 平台禁用 | 柜控→仓控 | 禁用/解除禁用 |
|
|||
|
|
| 0x86 | 模式切换 | 平台→柜控 | 切换平台模式/柜控模式 |
|
|||
|
|
| 0x87 | 接触器控制 | 平台→柜控 | 合闸/分闸指令 |
|
|||
|
|
| 0x88 | 门锁控制 | 柜控→仓控 | 开门/锁门,指定仓体(位掩码) |
|
|||
|
|
| 0x89 | OTA升级 | 柜控→仓控 | 固件升级数据包/启动升级/查询版本 |
|
|||
|
|
| 0x8A | BMS类型配置 | 柜控→仓控 | 设置当前BMS协议类型(星恒/天能/无协议) |
|
|||
|
|
| 0x8B | 报警阈值配置 | 柜控→仓控 | 设置关门超时/高温报警阈值 |
|
|||
|
|
|
|||
|
|
## 4. 定制主板设计
|
|||
|
|
|
|||
|
|
### 4.1 仓控主板(ID1-6)
|
|||
|
|
|
|||
|
|
#### 4.1.1 硬件规格
|
|||
|
|
|
|||
|
|
| 模块 | 规格 |
|
|||
|
|
|------|------|
|
|||
|
|
| MCU | 内置MCU控制器,独立运行,支持OTA固件升级 |
|
|||
|
|
| 继电器 | 6路直流继电器,寿命≥10万次 |
|
|||
|
|
| 电子门锁驱动 | 6路,MOSFET输出/继电器,12V电控锁驱动 |
|
|||
|
|
| 门磁检测 | 6路开关量输入,检测仓门开/关状态 |
|
|||
|
|
| 485接口 | 3路隔离485:1路接柜控板(ID128)、1路接BMS(6仓体共用总线)、1路接所属电源模块 |
|
|||
|
|
| 光耦隔离 | 3路485均做光耦隔离 |
|
|||
|
|
| 温控接口 | 6路,适配常用温控传感器(NTC/DS18B20) |
|
|||
|
|
| ID设置 | 4位拨码开关,设置与柜控板通讯的485从站ID,范围1-6 |
|
|||
|
|
| 指示灯接口 | 6路(每仓体1路),支持绿灯/红灯控制 |
|
|||
|
|
|
|||
|
|
#### 4.1.2 接口定义
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────┐
|
|||
|
|
│ 仓控主板 (ID1-6) │
|
|||
|
|
├─────────────────────────────────────┤
|
|||
|
|
│ [拨码开关] ← 设置485从站ID (1-6) │
|
|||
|
|
│ [485_1] ← 柜控主板 (ID128) │
|
|||
|
|
│ [485_2] ← BMS总线 (6仓体共用) │
|
|||
|
|
│ [485_3] ← 所属电源 (1TN协议) │
|
|||
|
|
│ [TEMP1-6] ← 6路仓体温控 │
|
|||
|
|
│ [RELAY1-6] ← 6路直流继电器 │
|
|||
|
|
│ [DOOR_LK1-6]→ 6路电子门锁驱动 │
|
|||
|
|
│ [DOOR_ST1-6]← 6路门磁检测 │
|
|||
|
|
│ [LED1-6] ← 6路仓体指示灯 │
|
|||
|
|
│ [4PIN] ← 充电线(2路正负极+2路485)│
|
|||
|
|
└─────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.1.3 固件功能模块
|
|||
|
|
|
|||
|
|
| 模块 | 功能 |
|
|||
|
|
|------|------|
|
|||
|
|
| 485从站模块 | 响应柜控板(ID128)指令,按拨码开关ID寻址 |
|
|||
|
|
| BMS通讯模块 | 按配置协议(星恒/天能/无协议)读取BMS数据或跳过 |
|
|||
|
|
| 电源通讯模块 | 通过独立485与所属电源1TN协议交互 |
|
|||
|
|
| 继电器控制模块 | 6路独立通断控制 |
|
|||
|
|
| 指示灯控制模块 | 6路独立LED状态控制,关联门锁/充电/告警状态 |
|
|||
|
|
| 温控采集模块 | 6路温度数据采集 |
|
|||
|
|
| ID管理模块 | 拨码开关读取与ID识别 |
|
|||
|
|
| 门锁控制模块 | 6路独立门锁驱动,接收柜控板门锁指令开锁 |
|
|||
|
|
| 门磁监测模块 | 6路门磁状态检测,上传门状态,超时未关门报警 |
|
|||
|
|
| OTA升级模块 | 接收固件升级数据包,校验写入,重启切换 |
|
|||
|
|
|
|||
|
|
#### 4.1.4 核心逻辑流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
初始化:
|
|||
|
|
1. 读取拨码开关 → 获取本机ID (1-6)
|
|||
|
|
2. 初始化3路485接口(9600, 8, 1, none)
|
|||
|
|
3. 初始化继电器 → 全部断开
|
|||
|
|
4. 初始化门锁 → 全部锁闭
|
|||
|
|
5. 初始化指示灯 → 全部绿灯常亮(空闲)
|
|||
|
|
6. 初始化温控接口 → 开始采集
|
|||
|
|
7. 从柜控板获取BMS协议类型配置
|
|||
|
|
8. 从柜控板获取报警阈值配置(关门超时/高温)
|
|||
|
|
9. 注册到柜控板 → 发送上线通知(源ID=本机ID, 目标ID=128)
|
|||
|
|
|
|||
|
|
主循环:
|
|||
|
|
每个周期(100ms):
|
|||
|
|
1. 检查柜控板指令(485_1)
|
|||
|
|
→ 如有指令:解析功能码,执行对应操作
|
|||
|
|
→ 门锁控制(0x88):按位掩码开门/锁门
|
|||
|
|
→ OTA升级(0x89):处理固件升级数据
|
|||
|
|
→ BMS配置(0x8A):切换BMS协议类型
|
|||
|
|
→ 报警阈值配置(0x8B):更新关门超时/高温阈值
|
|||
|
|
2. 按配置的BMS协议类型轮询BMS总线(485_2)
|
|||
|
|
→ 星恒模式:Modbus-RTU读取电池数据
|
|||
|
|
→ 天能模式:自定义协议读取电池数据
|
|||
|
|
→ 无协议模式:跳过BMS读取
|
|||
|
|
→ 解析数据,故障时联动继电器+指示灯
|
|||
|
|
3. 读取6路温控数据
|
|||
|
|
→ 超范围时触发保护
|
|||
|
|
→ 温度超过高温报警阈值 → 上传告警
|
|||
|
|
4. 读取6路门磁状态
|
|||
|
|
→ 检测到开门 → 启动计时
|
|||
|
|
→ 超过设置阈值未关门 → 上传告警
|
|||
|
|
5. 通过485_3查询所属电源状态
|
|||
|
|
→ 读取电压/电流/故障码(1TN协议)
|
|||
|
|
→ 无协议充电模式:监测输出电流,低于阈值通知柜控板停止
|
|||
|
|
6. 上传数据至柜控板(ID128)
|
|||
|
|
→ BMS数据 + 温控 + 电源状态 + 继电器状态 + 门磁状态
|
|||
|
|
7. 更新指示灯状态
|
|||
|
|
|
|||
|
|
充电启动流程:
|
|||
|
|
1. 检测到仓门关闭(门磁闭合)
|
|||
|
|
2. 按配置协议读取BMS数据(无协议模式跳过)
|
|||
|
|
3. 上传数据至柜控板(ID128),等待充电指令
|
|||
|
|
4. 收到允许充电指令 → 闭合继电器
|
|||
|
|
→ 通过485_3发送电源开启+调压调流指令(1TN协议)
|
|||
|
|
→ 无协议模式:使用平台下发的固定电压/电流值
|
|||
|
|
→ 指示灯切换为绿灯闪烁(充电中)
|
|||
|
|
5. 实时同步数据,动态调整电源参数
|
|||
|
|
→ 有BMS模式:根据BMS请求调整
|
|||
|
|
→ 无协议模式:监测电流,低于阈值自动停止
|
|||
|
|
6. 充满/异常 → 断开继电器,关闭电源输出
|
|||
|
|
|
|||
|
|
门开锁流程:
|
|||
|
|
1. 用户扫码 → 平台验证通过
|
|||
|
|
2. 平台下发开门指令至柜控板(TCP)
|
|||
|
|
3. 柜控板转发0x88开门指令至对应仓控板
|
|||
|
|
4. 仓控板解析位掩码 → 驱动对应门锁继电器/MOSFET → 开锁
|
|||
|
|
5. 门锁动作时间到 → 自动复位
|
|||
|
|
6. 用户开门取/放电池
|
|||
|
|
7. 门磁检测到关门 → 上报门已关闭状态
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.2 柜控主板(ID128)
|
|||
|
|
|
|||
|
|
#### 4.2.1 硬件规格
|
|||
|
|
|
|||
|
|
| 模块 | 规格 |
|
|||
|
|
|------|------|
|
|||
|
|
| MCU | 内置MCU控制器,独立运行,支持OTA固件升级 |
|
|||
|
|
| 485接口 | 1路隔离RS485,与6个仓控板通讯(光耦隔离) |
|
|||
|
|
| 485电表接口 | 1路隔离RS485,接DL/T645电表,读取耗电量数据 |
|
|||
|
|
| 4G模块 | Air780E,自定义TCP协议长连接 |
|
|||
|
|
| 烟感接口 | 1路开关量输入 |
|
|||
|
|
| 浸水接口 | 1路开关量输入 |
|
|||
|
|
| 倾倒检测 | 1路开关量输入 |
|
|||
|
|
| 环境温控传感器 | 1路,NTC/DS18B20,用于加热风扇自动温控 |
|
|||
|
|
| 接触器控制 | 1路继电器输出,控制常开接触器(默认断开,给信号吸合) |
|
|||
|
|
| 喷淋电磁阀 | 1路继电器输出,烟感触发时自动打开,喷淋灭火 |
|
|||
|
|
| 加热风扇继电器 | 1路独立继电器输出,220V/10A,自动温控 |
|
|||
|
|
| 电磁泵继电器 | 1路继电器输出,平台远程控制通断 |
|
|||
|
|
| 接触器按钮 | 2个物理按钮:合闸按钮(吸合接触器)、分闸按钮(断开接触器),用于离线时手动操作 |
|
|||
|
|
| 存储 | Flash(存储设备配置参数:BMS类型、报警阈值、无协议充电参数,本地不留充电数据) |
|
|||
|
|
| 主电源 | 来自12V电源(预接触器,常供电) |
|
|||
|
|
| 后备电源 | 后备电池输入,380V总断电时自动切换,维持板子供电与远程通讯 |
|
|||
|
|
| | 平台可远程下发恢复指令 → 吸合接触器恢复充电电源供电 |
|
|||
|
|
|
|||
|
|
#### 4.2.2 接口定义
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────┐
|
|||
|
|
│ 柜控主板 (ID128) │
|
|||
|
|
├─────────────────────────────────────┤
|
|||
|
|
│ [485] ←→ 仓控板ID1-6 │
|
|||
|
|
│ [485_METER]←→ DL/T645电表(耗电量采集)│
|
|||
|
|
│ [4G/TCP] ←→ 后台平台(自定义TCP长连接)│
|
|||
|
|
│ [SMOKE] ← 烟感传感器(开关量) │
|
|||
|
|
│ [WATER] ← 浸水传感器(开关量) │
|
|||
|
|
│ [TILT] ← 倾倒检测(开关量) │
|
|||
|
|
│ [TEMP_AMB] ← 环境温度传感器(NTC/DS18B20)│
|
|||
|
|
│ [CONTACTOR]→ 接触器控制(继电器输出) │
|
|||
|
|
│ [SPRINKLER]→ 喷淋电磁阀控制(继电器输出)│
|
|||
|
|
│ [FAN] → 加热风扇控制(独立继电器输出)│
|
|||
|
|
│ [PUMP] → 电磁泵控制(继电器输出) │
|
|||
|
|
│ [合闸按钮] ← 手动吸合接触器 │
|
|||
|
|
│ [分闸按钮] ← 手动断开接触器 │
|
|||
|
|
│ [PWR_IN] ← 12V电源输入 │
|
|||
|
|
│ [PWR_OUT] → 仓控板供电输出 │
|
|||
|
|
└─────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.2.3 固件功能模块
|
|||
|
|
|
|||
|
|
| 模块 | 功能 |
|
|||
|
|
|------|------|
|
|||
|
|
| 485主站模块 | 与仓控板ID1-6双向通讯,ID寻址 |
|
|||
|
|
| TCP通讯模块 | 与后台平台数据交换(自定义TCP协议长连接) |
|
|||
|
|
| 数据处理模块 | BMS/温控/电源/门磁数据解析转发 |
|
|||
|
|
| 充电控制模块 | 双模式充电控制逻辑(平台/本地),支持无协议充电参数管理 |
|
|||
|
|
| 安全监测模块 | 烟感/浸水/倾倒监测,触发后断开接触器切断380V + 打开喷淋电磁阀 |
|
|||
|
|
| 接触器控制模块 | 控制380V接触器吸合(上电/恢复)/断开(告警/急停),含按钮去抖逻辑 |
|
|||
|
|
| 按钮处理模块 | 合闸→吸合接触器,分闸→断开接触器,离线时手动操控,优先级高于平台指令 |
|
|||
|
|
| 告警联动模块 | 烟感/浸水→断开接触器+打开喷淋→上报平台→记录日志 |
|
|||
|
|
| 加热风扇控制模块 | 自动温控:读取环境温度传感器,<0°C启动加热,≥25°C停止 |
|
|||
|
|
| 电磁泵控制模块 | 接收平台远程指令控制继电器通断 |
|
|||
|
|
| 门锁指令转发模块 | 接收平台开门指令 → 转发对应仓控板(0x88) |
|
|||
|
|
| OTA升级模块 | 接收平台固件包 → 分片转发至仓控板或本地升级 |
|
|||
|
|
| BMS配置管理模块 | 存储/切换BMS协议类型,新配置下发至仓控板 |
|
|||
|
|
| 电表采集模块 | 通过独立485按DL/T645协议读取电表耗电量,定时上报平台 |
|
|||
|
|
|
|||
|
|
#### 4.2.4 核心逻辑流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
初始化:
|
|||
|
|
1. 初始化485主站(9600, 8, 1, none)
|
|||
|
|
2. 初始化4G模块 → 与后台平台建立TCP长连接
|
|||
|
|
3. 初始化烟感/浸水接口(中断模式)
|
|||
|
|
4. 初始化接触器继电器 → 吸合(系统正常上电)
|
|||
|
|
5. 读取存储的配置参数(BMS类型、报警阈值、无协议充电参数)
|
|||
|
|
6. 轮询所有仓控板(ID1-6)上线状态
|
|||
|
|
7. 下发BMS类型配置至所有仓控板
|
|||
|
|
8. 下发报警阈值配置至所有仓控板
|
|||
|
|
9. 上传设备上线通知至平台
|
|||
|
|
|
|||
|
|
主循环:
|
|||
|
|
每500ms:
|
|||
|
|
1. 轮询仓控板ID1-6数据
|
|||
|
|
→ 发送查询指令 → 接收BMS/温控/电源/门磁/设备状态
|
|||
|
|
→ 按ID分类存储
|
|||
|
|
2. 处理后台下行指令(TCP长连接接收)
|
|||
|
|
→ 仓体禁用/解除 → 转发对应仓控板
|
|||
|
|
→ 充电控制指令 → 转发对应仓控板
|
|||
|
|
→ 电磁泵控制 → 通/断控制电磁泵继电器
|
|||
|
|
→ 门锁控制 → 开门指令转发对应仓控板(0x88)
|
|||
|
|
→ OTA升级 → 固件包处理,转发仓控板或本地升级
|
|||
|
|
→ BMS类型配置 → 存储+下发仓控板(0x8A)
|
|||
|
|
→ 报警阈值配置 → 存储+下发仓控板(0x8B)
|
|||
|
|
→ 无协议充电参数 → 存储+转发仓控板
|
|||
|
|
→ 配置更新 → 本地存储+生效
|
|||
|
|
3. 安全监测检查(最高优先级)
|
|||
|
|
→ 烟感触发 → 立即断开接触器 + 打开喷淋电磁阀
|
|||
|
|
→ 浸水触发 → 立即断开接触器
|
|||
|
|
→ 倾倒触发 → 立即断开接触器 + 上传告警
|
|||
|
|
→ 发送急停指令至所有仓控板(断开继电器)
|
|||
|
|
→ 板子仍由12V电源正常供电,通讯不受影响
|
|||
|
|
→ 上传告警至平台
|
|||
|
|
→ 等待人工/平台远程复位才可重新吸合接触器
|
|||
|
|
4. 电表数据采集
|
|||
|
|
→ 通过485_METER按DL/T645协议读取电表耗电量
|
|||
|
|
→ 定时采集(每5分钟),缓存累计数据
|
|||
|
|
→ 上报平台
|
|||
|
|
5. 加热风扇自动温控
|
|||
|
|
→ 读取环境温度传感器
|
|||
|
|
→ 温度 < 0°C → 闭合加热风扇继电器(启动加热)
|
|||
|
|
→ 温度 ≥ 25°C → 断开加热风扇继电器(停止加热)
|
|||
|
|
→ 温度在0-25°C之间 → 保持当前状态(滞回控制)
|
|||
|
|
→ 状态变化时上传平台
|
|||
|
|
5. 接触器状态同步
|
|||
|
|
→ 接触器异常断开 → 上报平台
|
|||
|
|
→ 平台远程恢复 → 吸合接触器,恢复充电电源供电
|
|||
|
|
6. 充电控制逻辑
|
|||
|
|
→ 平台模式(默认):等待平台远程指令,需在线
|
|||
|
|
→ 柜控模式:由平台远程切换为本地模式,离线也可正常充电
|
|||
|
|
· 平台下发"启用本地模式"指令 → 柜控板切换为本地控制
|
|||
|
|
· 本地校验项:BMS握手成功/无协议充电参数合规、电池参数合规、仓体未被禁用
|
|||
|
|
· 符合条件 → 下发允许充电指令
|
|||
|
|
· 不符合条件 → 下发拒绝指令(红灯闪烁)
|
|||
|
|
→ 平台模式/柜控模式可通过平台远程切换
|
|||
|
|
8. 数据上传
|
|||
|
|
→ 实时上报BMS/温控/状态数据供平台监控
|
|||
|
|
→ 上报加热风扇状态(运行/停止)及环境温度
|
|||
|
|
→ 上报电磁泵状态(通/断)
|
|||
|
|
→ 上报各仓体门磁状态(开/关)及关门超时告警
|
|||
|
|
→ 上报烟感/喷淋状态
|
|||
|
|
→ 上报电表耗电量数据
|
|||
|
|
→ 平台仅记录充电记录(起止时间、电量、费用等)
|
|||
|
|
|
|||
|
|
TCP断连处理:
|
|||
|
|
1. 检测到TCP断连 → 触发告警
|
|||
|
|
2. 如已启用柜控模式,离线充电不受影响
|
|||
|
|
3. 如为平台模式 → 充电控制暂停,等待重连
|
|||
|
|
4. 缓存待上传数据(重连后补偿上报)
|
|||
|
|
5. 自动重连(间隔递增:10s/30s/60s/300s)
|
|||
|
|
6. 重连成功 → 补偿上传缓存数据
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 指示灯状态控制
|
|||
|
|
|
|||
|
|
### 5.1 状态定义
|
|||
|
|
|
|||
|
|
| 指示灯状态 | 对应状态 | 触发条件 | 继电器 | 电源输出 |
|
|||
|
|
|-----------|---------|---------|--------|---------|
|
|||
|
|
| 绿灯闪烁 | 充电中 | 正常充电,BMS通讯正常(有协议)或电源输出正常(无协议) | 闭合 | 正常输出 |
|
|||
|
|
| 绿灯常亮 | 仓体空闲 | 无充电任务、无故障、无禁用、门已关闭 | 断开 | 无输出 |
|
|||
|
|
| 红灯常亮 | 平台禁用 | 管理员下发禁用指令 | 断开 | 无输出 |
|
|||
|
|
| 红灯闪烁 | 电池不符合要求/设备告警/门未关 | BMS校验不通过/故障/门长期未关 | 断开 | 无输出 |
|
|||
|
|
|
|||
|
|
### 5.2 状态切换条件
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[绿灯常亮] ──扫码/预约充电──→ [绿灯闪烁]
|
|||
|
|
[绿灯闪烁] ──充满/用户停止──→ [绿灯常亮]
|
|||
|
|
[绿灯常亮] ──平台禁用指令──→ [红灯常亮]
|
|||
|
|
[红灯常亮] ──平台解除禁用──→ [绿灯常亮]
|
|||
|
|
[绿灯常亮] ──插入不合规电池──→ [红灯闪烁]
|
|||
|
|
[红灯闪烁] ──拔掉电池──→ [绿灯常亮]
|
|||
|
|
[绿灯闪烁] ──故障告警──→ [红灯闪烁]
|
|||
|
|
[红灯闪烁] ──故障排除──→ [绿灯常亮]
|
|||
|
|
任何状态 ──烟感/浸水触发──→ [红灯闪烁/常亮]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.3 控制实现
|
|||
|
|
|
|||
|
|
指示灯控制由仓控主板直接驱动,柜控主板通过485下发指示灯控制指令(功能码0x83),仓控板执行具体GPIO控制:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
绿灯控制:GPIO输出PWM(闪烁)/高电平(常亮)/低电平(灭)
|
|||
|
|
红灯控制:GPIO输出PWM(闪烁)/高电平(常亮)/低电平(灭)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. 充电控制逻辑
|
|||
|
|
|
|||
|
|
### 6.1 电池握手流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[用户扫码 → 平台验证 → 下发开门指令]
|
|||
|
|
↓
|
|||
|
|
[仓门打开 → 用户放入电池 → 关闭仓门]
|
|||
|
|
↓
|
|||
|
|
仓控板检测门磁闭合
|
|||
|
|
↓
|
|||
|
|
按配置BMS协议类型读取电池数据:
|
|||
|
|
┌─ 星恒模式:Modbus 03H读取寄存器
|
|||
|
|
│ - 10000-10002: 版本+控制状态
|
|||
|
|
│ - 10003-10027: 电池条码
|
|||
|
|
│ - 10043-10072: 单体电压(30串)
|
|||
|
|
│ - 10074: 总电压
|
|||
|
|
│ - 10080-10089: 温度(10路)
|
|||
|
|
│ - 10091-10099: 告警状态
|
|||
|
|
│ - 10101: SOH
|
|||
|
|
│ - 10102: SOC
|
|||
|
|
│ - 10103-10104: 充电请求参数
|
|||
|
|
├─ 天能模式:自定义协议读取对应数据
|
|||
|
|
└─ 无协议模式:跳过BMS读取,使用平台下发的固定参数
|
|||
|
|
↓
|
|||
|
|
数据有效性校验(SOC 0-100%, 电压40-80V等)
|
|||
|
|
↓
|
|||
|
|
打包数据 → 上传至柜控板(ID128)→ TCP长连接上传平台
|
|||
|
|
↓
|
|||
|
|
等待充电控制指令
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 双模式充电控制
|
|||
|
|
|
|||
|
|
#### 6.2.1 平台控制模式
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
后台平台接收BMS信息 → 管理员判断/自动规则
|
|||
|
|
↓
|
|||
|
|
下发充电允许/禁止指令
|
|||
|
|
↓
|
|||
|
|
柜控板接收 → 转发至对应仓控板
|
|||
|
|
↓
|
|||
|
|
仓控板执行:
|
|||
|
|
允许 → 闭合继电器 → 电源开启+调压调流 → 绿灯闪烁
|
|||
|
|
禁止 → 断开继电器 → 电源关闭 → 红灯闪烁
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 6.2.2 柜控板控制模式
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
后台预设触发条件(特殊ID列表、参数规则等)
|
|||
|
|
↓
|
|||
|
|
柜控板接收BMS信息 → 自动校验条件
|
|||
|
|
↓
|
|||
|
|
符合条件 → 下发充电允许 → 仓控板执行充电启动
|
|||
|
|
不符合条件 → 下发禁止 → 红灯闪烁
|
|||
|
|
↓
|
|||
|
|
校验结果上传至平台
|
|||
|
|
↓
|
|||
|
|
拔掉电池 → 自动恢复绿灯常亮(空闲)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.3 充电过程动态调整
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
每1秒循环:
|
|||
|
|
1. 读取BMS实时数据(有协议模式)/ 读取电源输出电流(无协议模式)
|
|||
|
|
2. SOC ≥ 98% → 满电保护:关闭电源,绿灯常亮
|
|||
|
|
3. 电池温度 > 55℃ 或 < -10℃ → 过温保护:关闭电源
|
|||
|
|
4. 仓体温度 > 高温报警阈值(平台可配置,默认55℃)→ 高温告警上传
|
|||
|
|
5. 告警状态检查:
|
|||
|
|
- 单体过压/欠压 → 保护动作
|
|||
|
|
- 过流 → 降低电流或断电
|
|||
|
|
- 电芯不平衡 → 预警提示
|
|||
|
|
6. 动态调压调流:
|
|||
|
|
- 有协议模式:根据BMS请求电压/电流调整电源输出(功能码0x02/0x04)
|
|||
|
|
- 无协议模式:保持平台下发的固定电压/电流输出
|
|||
|
|
- 电压偏差 ≥ 0.5V 时重新调节
|
|||
|
|
7. 无协议模式低电流检测:
|
|||
|
|
- 输出电流 < 平台设置的停止阈值 → 判定充满,自动断电
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.4 无协议充电模式
|
|||
|
|
|
|||
|
|
当配置为无协议充电模式时,充电过程不依赖BMS通讯,由平台下发固定参数控制:
|
|||
|
|
|
|||
|
|
**配置参数(平台设置):**
|
|||
|
|
|
|||
|
|
| 参数 | 说明 | 范围 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 充电电压 | 固定输出电压 | 40-80V |
|
|||
|
|
| 充电电流 | 固定输出电流 | 5-20A |
|
|||
|
|
| 停止电流阈值 | 低于此值判定充满自动停止 | 0.5-5A |
|
|||
|
|
|
|||
|
|
**充电流程:**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[用户放入电池 → 关闭仓门]
|
|||
|
|
↓
|
|||
|
|
仓控板检测门磁闭合
|
|||
|
|
↓
|
|||
|
|
无BMS握手 → 直接上传"仓体就绪"至平台
|
|||
|
|
↓
|
|||
|
|
平台下发充电允许 + 充电参数(电压/电流/停止电流阈值)
|
|||
|
|
↓
|
|||
|
|
仓控板闭合继电器 → 通过485_3设置电源输出固定电压/电流
|
|||
|
|
↓
|
|||
|
|
指示灯切换为绿灯闪烁(充电中)
|
|||
|
|
↓
|
|||
|
|
每1秒监测电源输出电流
|
|||
|
|
↓
|
|||
|
|
输出电流 < 停止电流阈值 → 判定充满
|
|||
|
|
↓
|
|||
|
|
断开继电器 → 关闭电源输出 → 绿灯常亮
|
|||
|
|
↓
|
|||
|
|
上报充电完成(时长+总输出电量估算)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 软件平台设计
|
|||
|
|
|
|||
|
|
### 7.1 后台管理系统
|
|||
|
|
|
|||
|
|
#### 7.1.1 技术栈建议
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
后端框架:Spring Boot / Node.js (Egg.js/Nest.js) / Python (FastAPI)
|
|||
|
|
数据库:MySQL + Redis + InfluxDB(时序数据)
|
|||
|
|
通信协议:自定义TCP协议长连接(设备通讯)+ HTTP/WebSocket(前端)
|
|||
|
|
前端框架:React / Vue3 + Element Plus / Ant Design
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 7.1.2 核心模块
|
|||
|
|
|
|||
|
|
| 模块 | 功能 |
|
|||
|
|
|------|------|
|
|||
|
|
| 设备管理 | 实时监控、远程重启、参数配置、OTA固件升级(柜控板+仓控板) |
|
|||
|
|
| 仓体控制 | 独立电流/电压设置、禁用/解除、状态查看、远程开门 |
|
|||
|
|
| BMS协议配置 | 设置当前柜体BMS协议类型(星恒/天能/无协议充电) |
|
|||
|
|
| 无协议充电参数配置 | 设置固定充电电压/电流/停止电流阈值 |
|
|||
|
|
| 充电控制模式配置 | 平台/柜控模式切换、特殊ID管理 |
|
|||
|
|
| 用户管理 | 注册/登录、权限分配(管理员/普通/骑手) |
|
|||
|
|
| 数据统计 | 充电量、使用率、故障率、温控数据、告警统计 |
|
|||
|
|
| 故障管理 | 故障记录、工单分配、处理跟踪、解除禁用 |
|
|||
|
|
| 报警阈值管理 | 关门超时阈值配置、高温报警阈值配置、设备告警管理 |
|
|||
|
|
| TCP连接管理 | 连接状态监控、心跳检测、断连告警 |
|
|||
|
|
| 辅助设备控制 | 电磁泵远程通断控制、加热风扇状态监控 |
|
|||
|
|
|
|||
|
|
#### 7.1.3 设备数据模型
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
充电柜 (Cabinet):
|
|||
|
|
- id, 名称, 位置, 状态(在线/离线)
|
|||
|
|
- BMS协议类型(星恒/天能/无协议)
|
|||
|
|
- 无协议充电参数(电压/电流/停止电流阈值)
|
|||
|
|
- 报警阈值(关门超时/高温)
|
|||
|
|
- 6个电源 (Power): 型号, 版本, 状态
|
|||
|
|
- 36个仓体 (Compartment):
|
|||
|
|
- 所属电源, 所属仓控板ID
|
|||
|
|
- 状态(空闲/充电中/禁用/故障/门未关)
|
|||
|
|
- 当前电压/电流设置
|
|||
|
|
- 指示灯状态
|
|||
|
|
- 门磁状态(开/关) · 门锁状态
|
|||
|
|
- 关门超时告警
|
|||
|
|
- 6个仓控板 (CabinBoard):
|
|||
|
|
- ID(1-6), 状态, 固件版本, OTA升级进度
|
|||
|
|
- 6路温控数据
|
|||
|
|
- 6路门磁数据
|
|||
|
|
- 1个柜控板 (CabinetBoard):
|
|||
|
|
- ID(128), 状态, 固件版本, OTA升级进度
|
|||
|
|
- TCP连接状态 · 4G信号强度
|
|||
|
|
- 加热风扇状态(运行/停止) · 环境温度
|
|||
|
|
- 电磁泵状态(通/断)
|
|||
|
|
- 喷淋电磁阀状态(开/关)
|
|||
|
|
- 电表耗电量(kWh) · 电表通讯状态
|
|||
|
|
- 烟感/浸水/喷淋状态
|
|||
|
|
|
|||
|
|
充电记录 (ChargeRecord):
|
|||
|
|
- 仓体ID, 仓控板ID, 电源通道
|
|||
|
|
- 开始时间, 结束时间
|
|||
|
|
- 充电量, 最高温度, 平均电压
|
|||
|
|
- BMS数据快照(SOC/电压/温度)
|
|||
|
|
- 充电状态(正常/异常中断/手动停止)
|
|||
|
|
|
|||
|
|
故障记录 (FaultRecord):
|
|||
|
|
- 仓体ID/主板ID, 故障类型, 故障码
|
|||
|
|
- 发生时间, 处理时间
|
|||
|
|
- 处理状态(待处理/处理中/已解决)
|
|||
|
|
- 故障等级(预警/保护/严重)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7.2 微信小程序
|
|||
|
|
|
|||
|
|
#### 7.2.1 功能页面
|
|||
|
|
|
|||
|
|
| 页面 | 功能 |
|
|||
|
|
|------|------|
|
|||
|
|
| 首页 | 附近充电柜列表/地图,空闲舱位显示 |
|
|||
|
|
| 扫码充电 | 扫描仓体二维码,启动充电 |
|
|||
|
|
| 预约充电 | 选择仓体,预约时间段 |
|
|||
|
|
| 充电进度 | 实时显示SOC/电压/温度/充电时间 |
|
|||
|
|
| 消息通知 | 充电完成、故障告警、系统通知 |
|
|||
|
|
| 个人中心 | 充电记录、用户信息、反馈 |
|
|||
|
|
|
|||
|
|
#### 7.2.2 仓体状态展示
|
|||
|
|
|
|||
|
|
小程序同步显示仓体指示灯状态及门锁状态:
|
|||
|
|
- 绿灯闪烁 → "充电中"
|
|||
|
|
- 绿灯常亮 + 门锁图标开 → "空闲(门已开)"
|
|||
|
|
- 绿灯常亮 + 门锁图标关 → "空闲(门已关)"
|
|||
|
|
- 红灯 → "禁用/故障"
|
|||
|
|
|
|||
|
|
扫码开门流程:
|
|||
|
|
1. 用户扫描仓体二维码
|
|||
|
|
2. 小程序显示仓体信息和操作按钮
|
|||
|
|
3. 点击"开门"按钮 → 平台验证 → 下发开门指令
|
|||
|
|
4. 门锁打开,用户放入/取出电池
|
|||
|
|
5. 关门后系统自动检测门磁闭合
|
|||
|
|
|
|||
|
|
## 8. 安全防护设计
|
|||
|
|
|
|||
|
|
### 8.1 电气安全
|
|||
|
|
|
|||
|
|
| 防护类型 | 实现方式 | 触发动作 |
|
|||
|
|
|---------|---------|---------|
|
|||
|
|
| 过充保护 | SOC监测 + 电压监测 | SOC≥98%自动断电 |
|
|||
|
|
| 过温保护 | 温控传感器 + BMS温度 | 超过平台设置高温报警阈值(可配置)时告警+断电 |
|
|||
|
|
| 过流保护 | 电源故障码监测 | 超过设定值断电 |
|
|||
|
|
| 短路保护 | 电源故障码监测 | 即时断电 |
|
|||
|
|
| 漏电保护 | 漏保 | 快速切断380V输入 |
|
|||
|
|
| 浪涌保护 | 浪涌保护器件 | 吸收浪涌冲击 |
|
|||
|
|
| 烟感保护 | 开关量烟感传感器 | 断开接触器切断380V + 打开喷淋电磁阀 + 告警 |
|
|||
|
|
| 浸水保护 | 开关量浸水传感器 | 断开接触器切断380V + 告警 |
|
|||
|
|
| 门未关报警 | 门磁传感器+计时 | 超过平台设置关门超时阈值(可配置)时上传告警 |
|
|||
|
|
|
|||
|
|
### 8.2 数据安全
|
|||
|
|
|
|||
|
|
| 安全类型 | 措施 |
|
|||
|
|
|---------|------|
|
|||
|
|
| 存储加密 | 用户信息、BMS数据加密存储 |
|
|||
|
|
| 通讯校验 | 1TN和校验 + Modbus CRC16校验 |
|
|||
|
|
| 网络传输 | 自定义TCP协议加密传输 |
|
|||
|
|
| 权限管控 | 管理员/普通用户分级权限 |
|
|||
|
|
|
|||
|
|
### 8.3 防护联动流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[烟感/浸水触发]
|
|||
|
|
↓
|
|||
|
|
柜控板检测到开关量变化(中断)
|
|||
|
|
↓
|
|||
|
|
烟感触发 → 立即断开接触器(切断充电电源380V输入)+ 打开喷淋电磁阀(简易喷淋)
|
|||
|
|
浸水触发 → 立即断开接触器(切断充电电源380V输入)
|
|||
|
|
↓
|
|||
|
|
发送0x81急停指令至所有仓控板(ID1-6):继电器全部断开
|
|||
|
|
↓
|
|||
|
|
柜控板+仓控板仍由12V电源正常供电(预接触器),4G通讯在线
|
|||
|
|
↓
|
|||
|
|
所有仓体指示灯切换为红灯(告警)
|
|||
|
|
↓
|
|||
|
|
上传告警至后台平台(即时推送)
|
|||
|
|
↓
|
|||
|
|
管理员接收通知 → 判断是否为误报警
|
|||
|
|
↓
|
|||
|
|
误报警 → 平台下发恢复指令 → 关闭喷淋电磁阀 → 柜控板吸合接触器 → 充电电源恢复供电
|
|||
|
|
↓
|
|||
|
|
真实告警 → 现场排查处理 → 灭火后平台关闭喷淋 → 故障排除后恢复
|
|||
|
|
↓
|
|||
|
|
各仓体恢复空闲(绿灯常亮)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 9. 性能指标
|
|||
|
|
|
|||
|
|
| 指标 | 要求 |
|
|||
|
|
|------|------|
|
|||
|
|
| 仓控-柜控通讯延迟 | ≤ 0.5s |
|
|||
|
|
| 仓控-电源通讯延迟 | ≤ 0.3s |
|
|||
|
|
| TCP数据上传延迟 | ≤ 1s |
|
|||
|
|
| 指示灯状态切换延迟 | ≤ 0.5s |
|
|||
|
|
| 平台指令执行延迟 | ≤ 1s |
|
|||
|
|
| 门锁响应延迟(平台→开门) | ≤ 1.5s |
|
|||
|
|
| 门磁检测上报延迟 | ≤ 1s |
|
|||
|
|
| OTA升级成功率 | ≥ 99% |
|
|||
|
|
| 烟感→喷淋联动延迟 | ≤ 0.5s |
|
|||
|
|
| 通讯故障率 | ≤ 0.1% |
|
|||
|
|
| MTBF | ≥ 8000小时 |
|
|||
|
|
| 设备故障率 | ≤ 0.5% |
|
|||
|
|
| 继电器寿命 | ≥ 10万次 |
|
|||
|
|
| 指示灯寿命 | ≥ 50000小时 |
|
|||
|
|
| 工作温度 | -10℃ ~ +70℃ |
|
|||
|
|
| 工作湿度 | 10% ~ 90% |
|