975 lines
28 KiB
Markdown
975 lines
28 KiB
Markdown
|
|
# 充电桩与网关 UDP JSON 通讯协议
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
充电桩与网关之间通过 **以太网 UDP** 通信,使用 **JSON** 格式进行数据交换。
|
|||
|
|
|
|||
|
|
| 项目 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 传输层 | UDP |
|
|||
|
|
| 网关端口 | 6001 |
|
|||
|
|
| 桩IP范围 | 10.12.19.101 ~ 106 |
|
|||
|
|
| 数据格式 | JSON |
|
|||
|
|
| 编码 | UTF-8 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 通讯流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
充电桩上电
|
|||
|
|
↓
|
|||
|
|
发送 online(上电) ──────→ 网关回复 charger_id
|
|||
|
|
↓
|
|||
|
|
正常运行时,每 5~10 秒
|
|||
|
|
发送 heartbeat(心跳) ──→ 网关回复
|
|||
|
|
↓
|
|||
|
|
┌─── 网关下发 start charging(启动充电)
|
|||
|
|
│
|
|||
|
|
充电桩周期上报实时数据 ←──── 网关可下发 end charging(停止充电)
|
|||
|
|
(realtime data / charge process real / bms info real)
|
|||
|
|
│
|
|||
|
|
└─── 充电结束 → 上报 settlement bill(结算账单)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 指令列表
|
|||
|
|
|
|||
|
|
| # | 标题 | cmd | 方向 | 触发方式 |
|
|||
|
|
|---|------|-----|------|----------|
|
|||
|
|
| 1 | 桩上电 | `online` | 桩 → 网关 → 桩 | 上电即发 |
|
|||
|
|
| 2 | 心跳 | `heartbeat` | 桩 → 网关 → 桩 | 5~10秒周期 |
|
|||
|
|
| 3 | 启动充电 | `start charging` | 网关 → 桩 → 网关 | 网关主动下发 |
|
|||
|
|
| 4 | 停止充电 | `end charging` | 网关 → 桩 → 网关 | 网关主动下发 |
|
|||
|
|
| 5 | 主动停止充电 | `proactive end charging` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 6 | 实时数据上报 | `realtime data` | 桩 → 网关 → 桩 | 周期上送 |
|
|||
|
|
| 7 | BMS信息上报 | `bms info` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 8 | 充电参数配置 | `charge config` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 9 | 充电错误报文 | `charge error` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 10 | BMS中止充电 | `bms stop` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 11 | 充电机中止充电 | `charger stop` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
| 12 | 充电过程BMS需求与输出 | `charge process real` | 桩 → 网关 → 桩 | 15秒周期 |
|
|||
|
|
| 13 | 充电过程BMS信息 | `bms info real` | 桩 → 网关 → 桩 | 15秒周期 |
|
|||
|
|
| 14 | 结算账单上传 | `settlement bill` | 桩 → 网关 → 桩 | 桩主动上报 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 通用字段说明
|
|||
|
|
|
|||
|
|
所有 JSON 消息均包含以下固定字段:
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `id` | Number | 桩编码 (1~6) |
|
|||
|
|
| `cmd` | String | 指令标识,见指令列表 |
|
|||
|
|
| `type` | String | `"request"` 请求帧 / `"response"` 回复帧 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 桩上电
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
|
|||
|
|
充电桩上电后立即发送,网关回复桩的唯一ID。
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "online",
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 |
|
|||
|
|
| cmd | String | 是 | "online" |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "online",
|
|||
|
|
"charger_id": "32010203040506",
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 |
|
|||
|
|
| cmd | String | 是 | "online" |
|
|||
|
|
| charger_id | String | 是 | 桩唯一ID |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 心跳
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **周期**:5~10 秒
|
|||
|
|
|
|||
|
|
桩定期上报各枪实时状态。
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "heartbeat",
|
|||
|
|
"gun": [
|
|||
|
|
{ "id": 1, "state": 0 },
|
|||
|
|
{ "id": 2, "state": 0 }
|
|||
|
|
],
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "heartbeat" |
|
|||
|
|
| gun | Array | 是 | 枪口列表 |
|
|||
|
|
| gun[].id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| gun[].state | Number | 是 | 枪状态:0 离线;1 故障;2 空闲;3 充电 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "heartbeat",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "heartbeat" |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 启动充电
|
|||
|
|
|
|||
|
|
> **方向**:网关 → 充电桩 → 网关
|
|||
|
|
|
|||
|
|
网关向充电桩下发启动充电指令,同步下发**计费模型**。
|
|||
|
|
|
|||
|
|
**Request (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "start charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"fee": [
|
|||
|
|
[1, 0, 6, 0.3, 0.5],
|
|||
|
|
[2, 6, 10, 0.8, 0.8],
|
|||
|
|
[3, 10, 15, 1.2, 0.8],
|
|||
|
|
[4, 15, 24, 0.6, 0.6]
|
|||
|
|
],
|
|||
|
|
"limit_amount": 0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "start charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| fee | Array | 是 | 计费模型数组,每行:[计费段, 开始时间, 结束时间, 电费, 服务费] |
|
|||
|
|
| limit_amount | Float | 是 | 停止金额(元)。0 为不限制 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**fee 数组格式:**
|
|||
|
|
|
|||
|
|
每行固定5个元素:
|
|||
|
|
```
|
|||
|
|
[计费段, 开始时间(小时), 结束时间(小时), 电费单价, 服务费单价]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 计费段 | 含义 |
|
|||
|
|
|--------|------|
|
|||
|
|
| 1 | 尖 |
|
|||
|
|
| 2 | 峰 |
|
|||
|
|
| 3 | 平 |
|
|||
|
|
| 4 | 谷 |
|
|||
|
|
|
|||
|
|
**Response (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "start charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"result": 0,
|
|||
|
|
"error_code": 0,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "start charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| result | Number | 是 | 启动结果:0=失败;1=成功 |
|
|||
|
|
| error_code | Number | 是 | 错误码:0=无;1=设备编号不匹配;2=枪已在充电;3=设备故障;4=设备离线;5=未插枪 |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 停止充电
|
|||
|
|
|
|||
|
|
> **方向**:网关 → 充电桩 → 网关
|
|||
|
|
|
|||
|
|
**Request (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "end charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "end charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "end charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"result": 0,
|
|||
|
|
"error_code": 0,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "end charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| result | Number | 是 | 停止结果:0 失败;1 成功 |
|
|||
|
|
| error_code | Number | 是 | 错误码:0 无;1 枪未在充电;2 其他故障 |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 主动停止充电
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
|
|||
|
|
充电桩主动上报停止充电(如用户刷卡停止、车辆BMS中止等)。
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "proactive end charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "proactive end charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "proactive end charging",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "end charging" |
|
|||
|
|
| transaction_id | String | 是 | 订单编码 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 充电桩实时数据上报
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **周期**:待机 5 分钟、充电 15 秒
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "realtime data",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"state": 0,
|
|||
|
|
"gun_back": 0,
|
|||
|
|
"gun_insert": 1,
|
|||
|
|
"voltage": 2222,
|
|||
|
|
"current": 2222,
|
|||
|
|
"cable_temp": 85,
|
|||
|
|
"cable_code": "1234567890123456",
|
|||
|
|
"soc": 85,
|
|||
|
|
"battery_temp": 95,
|
|||
|
|
"charge_time": 45,
|
|||
|
|
"remain_time": 30,
|
|||
|
|
"charge_kwh": 12.3456,
|
|||
|
|
"loss_kwh": 12.4567,
|
|||
|
|
"charge_amount": 18.6851,
|
|||
|
|
"fault": 0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "realtime data" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位,待机时填充0 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| state | Number | 是 | 枪状态:0 离线;1 故障;2 空闲;3 充电 |
|
|||
|
|
| gun_back | Number | 是 | 枪是否归位:0 否;1 是;2 未知 |
|
|||
|
|
| gun_insert | Number | 是 | 是否插枪:0 否;1 是 |
|
|||
|
|
| voltage | Float | 是 | 输出电压,单位0.1V。待机时为0 |
|
|||
|
|
| current | Float | 是 | 输出电流,单位0.1A。待机时为0 |
|
|||
|
|
| cable_temp | Number | 是 | 枪线温度,单位℃,偏移量-50。待机时为0 |
|
|||
|
|
| cable_code | String | 是 | 枪线编码 16位,没有时填充0 |
|
|||
|
|
| soc | Number | 是 | 电池SOC百分比 0~100,待机/交流桩为0 |
|
|||
|
|
| battery_temp | Number | 是 | 电池组最高温度,单位℃,偏移量-50。待机/交流桩为0 |
|
|||
|
|
| charge_time | Number | 是 | 累计充电时间,单位分钟。待机时为0 |
|
|||
|
|
| remain_time | Number | 是 | 剩余时间,单位分钟。待机/交流桩为0 |
|
|||
|
|
| charge_kwh | Float | 是 | 充电度数(kWh),精确到小数点后4位。待机时为0 |
|
|||
|
|
| loss_kwh | Float | 是 | 计损充电度数(kWh)。未设置计损比例时等于charge_kwh |
|
|||
|
|
| charge_amount | Float | 是 | 已充金额(元),精确到小数点后4位 |
|
|||
|
|
| fault | Number | 是 | 硬件故障位图(16bit),见下方说明 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**fault 故障位图:**
|
|||
|
|
|
|||
|
|
| Bit | 故障 |
|
|||
|
|
|-----|------|
|
|||
|
|
| 1 | 急停 |
|
|||
|
|
| 2 | 无模块 |
|
|||
|
|
| 3 | 温度高 |
|
|||
|
|
| 4 | 防雷故障 |
|
|||
|
|
| 5 | DC20中断 |
|
|||
|
|
| 6 | FC08中断 |
|
|||
|
|
| 7 | 电表中断 |
|
|||
|
|
| 8 | 读卡器中断 |
|
|||
|
|
| 9 | RC10中断 |
|
|||
|
|
| 10 | 风扇故障 |
|
|||
|
|
| 11 | 熔断器故障 |
|
|||
|
|
| 12 | 接触器故障 |
|
|||
|
|
| 13 | 门打开 |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "realtime data",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "realtime data" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. BMS信息上报
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms info",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"protocol_version": "0001.01",
|
|||
|
|
"battery_type": 3,
|
|||
|
|
"rated_capacity": 600.0,
|
|||
|
|
"rated_voltage": 3600.0,
|
|||
|
|
"manufacturer": "CATL",
|
|||
|
|
"battery_sn": "BT123456",
|
|||
|
|
"production_year": 2023,
|
|||
|
|
"production_month": 6,
|
|||
|
|
"production_day": 15,
|
|||
|
|
"charge_count": 1250,
|
|||
|
|
"ownership": 1,
|
|||
|
|
"reserved": 0,
|
|||
|
|
"vin": "LSVAA4182E2123456",
|
|||
|
|
"software_version": "FFFFFF.07DF.0B.0A.10",
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "bms info" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| protocol_version | String | 是 | BMS通信协议版本号。格式:`byte3.byte2-byte1`,例:"0001.01"=V1.1 |
|
|||
|
|
| battery_type | Number | 是 | 电池类型:1铅酸;2氢电池;3磷酸铁锂;4锰酸锂;5钴酸锂;6三元材料;7聚合物锂离子;8钛酸锂;255其他 |
|
|||
|
|
| rated_capacity | Float | 是 | 额定容量,单位0.1Ah。例:600.0=60.0Ah |
|
|||
|
|
| rated_voltage | Float | 是 | 额定总电压,单位0.1V。例:3600.0=360.0V |
|
|||
|
|
| manufacturer | String | 是 | 电池生产厂商名称,最长4字节 |
|
|||
|
|
| battery_sn | String | 是 | 电池组序号,最长4字节 |
|
|||
|
|
| production_year | Number | 是 | 生产年份,1985偏移量。例:2023=1985+38 |
|
|||
|
|
| production_month | Number | 是 | 生产月份,1~12 |
|
|||
|
|
| production_day | Number | 是 | 生产日,1~31 |
|
|||
|
|
| charge_count | Number | 是 | 电池组充电次数,0次偏移量 |
|
|||
|
|
| ownership | Number | 是 | 电池产权标识:0租赁;1车自有 |
|
|||
|
|
| reserved | Number | 是 | 预留位 |
|
|||
|
|
| vin | String | 是 | 车辆识别码VIN,17位字符 |
|
|||
|
|
| software_version | String | 是 | BMS软件版本号。格式:`byte8.byte7-byte5.byte4-byte3-byte2-byte1` |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms info",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. 充电参数配置
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **依据**:GBT-27930 充电桩与BMS参数配置阶段报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge config",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"bms_max_cell_voltage": 4.20,
|
|||
|
|
"bms_max_current": 250.0,
|
|||
|
|
"bms_rated_energy": 60.0,
|
|||
|
|
"bms_max_voltage": 750.0,
|
|||
|
|
"bms_max_temp": 95,
|
|||
|
|
"bms_soc": 85.0,
|
|||
|
|
"bms_current_voltage": 680.0,
|
|||
|
|
"pile_max_voltage": 750.0,
|
|||
|
|
"pile_min_voltage": 200.0,
|
|||
|
|
"pile_max_current": 250.0,
|
|||
|
|
"pile_min_current": 10.0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "charge config" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| bms_max_cell_voltage | Float | 是 | BMS单体最高允许充电电压,单位0.01V,范围0~24V |
|
|||
|
|
| bms_max_current | Float | 是 | BMS最高允许充电电流,单位0.1A,-400A偏移量 |
|
|||
|
|
| bms_rated_energy | Float | 是 | BMS标称总能量,单位0.1kWh,范围0~1000kWh |
|
|||
|
|
| bms_max_voltage | Float | 是 | BMS最高允许充电总电压,单位0.1V |
|
|||
|
|
| bms_max_temp | Number | 是 | BMS最高允许温度,单位℃,-50℃偏移量,范围-50~200℃ |
|
|||
|
|
| bms_soc | Float | 是 | BMS荷电状态SOC,单位0.1%,范围0~100% |
|
|||
|
|
| bms_current_voltage | Float | 是 | BMS当前电池电压,单位0.1V |
|
|||
|
|
| pile_max_voltage | Float | 是 | 电桩最高输出电压,单位0.1V |
|
|||
|
|
| pile_min_voltage | Float | 是 | 电桩最低输出电压,单位0.1V |
|
|||
|
|
| pile_max_current | Float | 是 | 电桩最大输出电流,单位0.1A,-400A偏移量 |
|
|||
|
|
| pile_min_current | Float | 是 | 电桩最小输出电流,单位0.1A,-400A偏移量 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge config",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. 充电错误报文
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **依据**:GBT-27930 充电桩与BMS充电错误报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge error",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"charger_spn2560_00_timeout": 0,
|
|||
|
|
"charger_spn2560_aa_timeout": 0,
|
|||
|
|
"charger_time_sync_timeout": 0,
|
|||
|
|
"charger_ready_timeout": 0,
|
|||
|
|
"charger_status_timeout": 0,
|
|||
|
|
"charger_stop_timeout": 0,
|
|||
|
|
"charger_statistics_timeout": 0,
|
|||
|
|
"bms_identify_timeout": 0,
|
|||
|
|
"battery_param_timeout": 0,
|
|||
|
|
"bms_ready_timeout": 0,
|
|||
|
|
"battery_status_timeout": 0,
|
|||
|
|
"battery_demand_timeout": 0,
|
|||
|
|
"bms_stop_timeout": 0,
|
|||
|
|
"bms_statistics_timeout": 0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
所有超时字段取值:0=正常;1=超时;2=不可信状态
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| charger_spn2560_00_timeout | 接收SPN2560=0x00的充电机辨识报文超时 |
|
|||
|
|
| charger_spn2560_aa_timeout | 接收SPN2560=0xAA的充电机辨识报文超时 |
|
|||
|
|
| charger_time_sync_timeout | 接收时间同步和充电机最大输出能力报文超时 |
|
|||
|
|
| charger_ready_timeout | 接收充电机完成充电准备报文超时 |
|
|||
|
|
| charger_status_timeout | 接收充电机充电状态报文超时 |
|
|||
|
|
| charger_stop_timeout | 接收充电机中止充电报文超时 |
|
|||
|
|
| charger_statistics_timeout | 接收充电机充电统计报文超时 |
|
|||
|
|
| bms_identify_timeout | 接收BMS和车辆的辨识报文超时 |
|
|||
|
|
| battery_param_timeout | 接收电池充电参数报文超时 |
|
|||
|
|
| bms_ready_timeout | 接收BMS完成充电准备报文超时 |
|
|||
|
|
| battery_status_timeout | 接收电池充电总状态报文超时 |
|
|||
|
|
| battery_demand_timeout | 接收电池充电要求报文超时 |
|
|||
|
|
| bms_stop_timeout | 接收BMS中止充电报文超时 |
|
|||
|
|
| bms_statistics_timeout | 接收BMS充电统计报文超时 |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge error",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 10. BMS中止充电
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **依据**:GBT-27930 充电桩与BMS充电阶段BMS中止报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms stop",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"stop_reason_soc": 0,
|
|||
|
|
"stop_reason_total_voltage": 0,
|
|||
|
|
"stop_reason_cell_voltage": 0,
|
|||
|
|
"stop_reason_charger": 0,
|
|||
|
|
"fault_insulation": 0,
|
|||
|
|
"fault_connector_temp": 0,
|
|||
|
|
"fault_bms_temp": 0,
|
|||
|
|
"fault_connector": 0,
|
|||
|
|
"fault_battery_temp": 0,
|
|||
|
|
"fault_relay": 0,
|
|||
|
|
"fault_voltage_detect": 0,
|
|||
|
|
"fault_other": 0,
|
|||
|
|
"error_current": 0,
|
|||
|
|
"error_voltage": 0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
所有字段取值:0=正常;1=中止/异常
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| stop_reason_soc | 达到SOC目标值中止 |
|
|||
|
|
| stop_reason_total_voltage | 达到总电压设定值中止 |
|
|||
|
|
| stop_reason_cell_voltage | 达到单体电压设定值中止 |
|
|||
|
|
| stop_reason_charger | 充电机主动中止 |
|
|||
|
|
| fault_insulation | 绝缘故障 |
|
|||
|
|
| fault_connector_temp | 输出连接器过温 |
|
|||
|
|
| fault_bms_temp | BMS元件过温 |
|
|||
|
|
| fault_connector | 充电连接器故障 |
|
|||
|
|
| fault_battery_temp | 电池组温度过高 |
|
|||
|
|
| fault_relay | 高压继电器故障 |
|
|||
|
|
| fault_voltage_detect | 检测点2电压检测故障 |
|
|||
|
|
| fault_other | 其他故障 |
|
|||
|
|
| error_current | 电流过大 |
|
|||
|
|
| error_voltage | 电压异常 |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms stop",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 11. 充电机中止充电
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **依据**:GBT-27930 充电桩与BMS充电阶段充电机中止报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charger stop",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"stop_reason_condition": 0,
|
|||
|
|
"stop_reason_manual": 0,
|
|||
|
|
"stop_reason_abnormal": 0,
|
|||
|
|
"stop_reason_bms": 0,
|
|||
|
|
"fault_charger_temp": 0,
|
|||
|
|
"fault_connector": 0,
|
|||
|
|
"fault_internal_temp": 0,
|
|||
|
|
"fault_power_transfer": 0,
|
|||
|
|
"fault_emergency": 0,
|
|||
|
|
"fault_other": 0,
|
|||
|
|
"error_current": 0,
|
|||
|
|
"error_voltage": 0,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
所有字段取值:0=正常;1=中止/异常
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| stop_reason_condition | 达到充电机设定的条件 |
|
|||
|
|
| stop_reason_manual | 人工中止 |
|
|||
|
|
| stop_reason_abnormal | 异常中止 |
|
|||
|
|
| stop_reason_bms | BMS主动中止 |
|
|||
|
|
| fault_charger_temp | 充电机过温 |
|
|||
|
|
| fault_connector | 充电连接器故障 |
|
|||
|
|
| fault_internal_temp | 充电机内部过温 |
|
|||
|
|
| fault_power_transfer | 所需电量不能传送 |
|
|||
|
|
| fault_emergency | 充电机急停 |
|
|||
|
|
| fault_other | 其他故障 |
|
|||
|
|
| error_current | 电流不匹配 |
|
|||
|
|
| error_voltage | 电压异常 |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charger stop",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 12. 充电过程BMS需求与充电机输出
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **周期**:15 秒
|
|||
|
|
> **依据**:GBT-27930 充电过程BMS需求、充电机输出报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge process real",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"bms_voltage_demand": 680.0,
|
|||
|
|
"bms_current_demand": 250.0,
|
|||
|
|
"bms_charge_mode": 2,
|
|||
|
|
"bms_voltage_measure": 678.5,
|
|||
|
|
"bms_current_measure": 248.0,
|
|||
|
|
"bms_max_cell_voltage": 4.15,
|
|||
|
|
"bms_max_cell_group": 3,
|
|||
|
|
"bms_soc": 85,
|
|||
|
|
"bms_remain_time": 30,
|
|||
|
|
"pile_voltage_output": 680.0,
|
|||
|
|
"pile_current_output": 250.0,
|
|||
|
|
"charge_time": 45,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "charge process real" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| bms_voltage_demand | Float | 是 | BMS电压需求,单位0.1V |
|
|||
|
|
| bms_current_demand | Float | 是 | BMS电流需求,单位0.1A,-400A偏移量 |
|
|||
|
|
| bms_charge_mode | Number | 是 | 充电模式:1恒压;2恒流 |
|
|||
|
|
| bms_voltage_measure | Float | 是 | BMS充电电压测量值,单位0.1V |
|
|||
|
|
| bms_current_measure | Float | 是 | BMS充电电流测量值,单位0.1A,-400A偏移量 |
|
|||
|
|
| bms_max_cell_voltage | Float | 是 | 最高单体蓄电池电压,单位0.01V,范围0~24V |
|
|||
|
|
| bms_max_cell_group | Number | 是 | 最高单体电压所在组号,范围0~15 |
|
|||
|
|
| bms_soc | Number | 是 | 当前SOC,单位%,范围0~100 |
|
|||
|
|
| bms_remain_time | Number | 是 | 估算剩余充电时间,单位分钟,范围0~600 |
|
|||
|
|
| pile_voltage_output | Float | 是 | 电桩电压输出值,单位0.1V |
|
|||
|
|
| pile_current_output | Float | 是 | 电桩电流输出值,单位0.1A,-400A偏移量 |
|
|||
|
|
| charge_time | Number | 是 | 累计充电时间,单位分钟,范围0~600 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "charge process real",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 13. 充电过程BMS信息
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
> **周期**:15 秒
|
|||
|
|
> **依据**:GBT-27930 充电过程BMS信息报文
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms info real",
|
|||
|
|
"transaction_id": "32010200000000111511161555350260",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"max_cell_voltage_no": 128,
|
|||
|
|
"max_battery_temp": 45,
|
|||
|
|
"max_temp_point_no": 8,
|
|||
|
|
"min_battery_temp": 25,
|
|||
|
|
"min_temp_point_no": 3,
|
|||
|
|
"cell_voltage_status": 0,
|
|||
|
|
"soc_status": 0,
|
|||
|
|
"charge_current_status": 0,
|
|||
|
|
"battery_temp_status": 0,
|
|||
|
|
"insulation_status": 0,
|
|||
|
|
"connector_status": 0,
|
|||
|
|
"charge_enable": 1,
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "bms info real" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| max_cell_voltage_no | Number | 是 | 最高单体电压所在编号,1偏移量,范围1~256 |
|
|||
|
|
| max_battery_temp | Number | 是 | 最高电池温度,单位℃,-50℃偏移量,范围-50~200℃ |
|
|||
|
|
| max_temp_point_no | Number | 是 | 最高温度检测点编号,1偏移量,范围1~128 |
|
|||
|
|
| min_battery_temp | Number | 是 | 最低电池温度,单位℃,-50℃偏移量 |
|
|||
|
|
| min_temp_point_no | Number | 是 | 最低温度检测点编号,1偏移量 |
|
|||
|
|
| cell_voltage_status | Number | 是 | 单体电压过高/过低:0正常;1过高;2过低 |
|
|||
|
|
| soc_status | Number | 是 | SOC过高/过低:0正常;1过高;2过低 |
|
|||
|
|
| charge_current_status | Number | 是 | 充电过电流:0正常;1过流;2不可信 |
|
|||
|
|
| battery_temp_status | Number | 是 | 电池温度过高:0正常;1过高;2不可信 |
|
|||
|
|
| insulation_status | Number | 是 | 绝缘状态:0正常;1异常;2不可信 |
|
|||
|
|
| connector_status | Number | 是 | 输出连接器连接状态:0正常;1异常;2不可信 |
|
|||
|
|
| charge_enable | Number | 是 | 充电禁止:0禁止;1允许 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "bms info real",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 14. 结算账单上传
|
|||
|
|
|
|||
|
|
> **方向**:充电桩 → 网关 → 充电桩
|
|||
|
|
|
|||
|
|
充电结束生成结算账单上传。若未收到响应,间隔30秒重试一次,最多重试3次。收到成功响应后,充电桩本地删除该账单。
|
|||
|
|
|
|||
|
|
**Request (充电桩 → 网关):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "settlement bill",
|
|||
|
|
"transaction_id": "55031412782305012018061910262392",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"start_time": 1584349487,
|
|||
|
|
"end_time": 1584349487,
|
|||
|
|
"billing": [
|
|||
|
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
|||
|
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
|||
|
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
|||
|
|
[1.30000, 0.0000, 0.0000, 0.0000]
|
|||
|
|
],
|
|||
|
|
"meter_start": 0.0000,
|
|||
|
|
"meter_end": 0.0000,
|
|||
|
|
"total_energy": 0.0000,
|
|||
|
|
"total_energy_loss": 0.0000,
|
|||
|
|
"total_amount": 0.0000,
|
|||
|
|
"vin": "",
|
|||
|
|
"trade_type": 2,
|
|||
|
|
"trade_time": 1584349487,
|
|||
|
|
"stop_reason": 0,
|
|||
|
|
"card_physical_id": "D14B0A54",
|
|||
|
|
"type": "request"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "settlement bill" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| start_time | Number | 是 | 充电开始时间,Unix时间戳(秒) |
|
|||
|
|
| end_time | Number | 是 | 充电结束时间,Unix时间戳(秒) |
|
|||
|
|
| billing | Array | 是 | 尖峰平谷计费数组,4行,顺序:[尖,峰,平,谷],每行:[单价(.5f), 电量(.4f), 计损电量(.4f), 金额(.4f)] |
|
|||
|
|
| meter_start | Float | 是 | 电表总起值(kWh),四位小数 |
|
|||
|
|
| meter_end | Float | 是 | 电表总止值(kWh),四位小数 |
|
|||
|
|
| total_energy | Float | 是 | 总电量(kWh),四位小数 |
|
|||
|
|
| total_energy_loss | Float | 是 | 计损总电量(kWh),四位小数 |
|
|||
|
|
| total_amount | Float | 是 | 消费金额(元),含电费和服务费,四位小数 |
|
|||
|
|
| vin | String | 是 | 电动汽车VIN码,17位ASCII |
|
|||
|
|
| trade_type | Number | 是 | 交易标识:1=app启动;2=卡启动;4=离线卡启动;5=VIN码启动 |
|
|||
|
|
| trade_time | Number | 是 | 交易时间,Unix时间戳(秒) |
|
|||
|
|
| stop_reason | Number | 是 | 停止原因,见云快充附录13.1 |
|
|||
|
|
| card_physical_id | String | 是 | 物理卡号,默认为空 |
|
|||
|
|
| type | String | 是 | "request" |
|
|||
|
|
|
|||
|
|
**billing 数组格式:**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[尖, 峰, 平, 谷] ← 4行,固定顺序
|
|||
|
|
│
|
|||
|
|
└─ [单价(.5f), 电量(.4f), 计损电量(.4f), 金额(.4f)]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Response (网关 → 充电桩):**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"cmd": "settlement bill",
|
|||
|
|
"transaction_id": "55031412782305012018061910262392",
|
|||
|
|
"gun_id": 1,
|
|||
|
|
"result": 1,
|
|||
|
|
"type": "response"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| id | Number | 是 | 桩编码 (1~6) |
|
|||
|
|
| cmd | String | 是 | "settlement bill" |
|
|||
|
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
|||
|
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
|||
|
|
| result | Number | 是 | 账单上传结果:1=成功;0=失败 |
|
|||
|
|
| type | String | 是 | "response" |
|
|||
|
|
|
|||
|
|
> **重试机制**:若未收到响应,间隔30秒重试一次,最多重试3次。收到成功响应后,本账单在充电桩本地删除。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 附录:协议汇总表
|
|||
|
|
|
|||
|
|
| 编号 | cmd | 请求方 | 响应方 | 触发方式 |
|
|||
|
|
|------|-----|--------|--------|----------|
|
|||
|
|
| 1 | online | 充电桩 | 网关 | 上电 |
|
|||
|
|
| 2 | heartbeat | 充电桩 | 网关 | 5~10s周期 |
|
|||
|
|
| 3 | start charging | 网关 | 充电桩 | 网关下发 |
|
|||
|
|
| 4 | end charging | 网关 | 充电桩 | 网关下发 |
|
|||
|
|
| 5 | proactive end charging | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 6 | realtime data | 充电桩 | 网关 | 周期上送 |
|
|||
|
|
| 7 | bms info | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 8 | charge config | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 9 | charge error | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 10 | bms stop | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 11 | charger stop | 充电桩 | 网关 | 桩主动 |
|
|||
|
|
| 12 | charge process real | 充电桩 | 网关 | 15s周期 |
|
|||
|
|
| 13 | bms info real | 充电桩 | 网关 | 15s周期 |
|
|||
|
|
| 14 | settlement bill | 充电桩 | 网关 | 充电结束 |
|