青岛特某电新能源有限公司-充电业务流程及数据交互规范-集控前置-精简版V1.0
1 范围
本流程规定了特某电充电终端所属的集控器与特某电云平台前置之间的充电相关业务流程,明确两端之间的请求和响应。
2 术语
云平台:云平台是提供包括充电设备接入,充电设备信息采集,充电设备管 理,充电设备运维管理等服务,面向用户提供充电服务的支撑系统。
充电站:有充电终端,并能够提供充电服务的站点。一个充电站可能只有一 台充电终端桩,也可能有很多台充电终端。
集控器:安装在充电站内部的一个组件,提供承上启下的通信功能,业务管 理功能,用户交互功能,充电计量等功能等。
充电终端:对电动汽车提供充电服务的终端设备,包括直流充电终端和交流 充电终端。
充电卡:刷卡充电的卡片,主要分为两种:
- 鉴权卡:卡片本身只存储身份识别信息,只作为身份识别及鉴权。用鉴权卡 来支持支付功能时,通常关联到后台账号,卡关联的账号余额都在后台,消费及充值都在后台完成。
- 钱包卡:卡片本身不仅存储了身份信息,也存储了余额信息,可用于离线支付。消费及充值都在卡片本地完成。(扩展待考虑)
地锁:能通过网络进行控制和状态召唤的智能地锁。
EV:Electrical Vehicle,新能源电动汽车。
[推荐一套企业级开源充电桩平台:完整代码包含多租户、硬件模拟器、多运营商、多小程序,汽车
电动自行车、云快充协议;——(慧哥)慧知开源充电桩平台;(慧哥)慧知开源充电桩平台 -
企业级完整代码包含多租户、硬件模拟器、多运营商、多小程序,汽车 电动自行车、 云快充1.5
云快充1.6、SpringCloud、MySQL、uniapp、redis;]
3 通信协议
3.1 通信协议结构
本标准的通信协议结构如下图,本标准通信基于 TCP/IP 之上,位于 OSI 参考模型 应用层(第 7 层)。本标准定义的应用层帧结构,后文采用“报文”简称。
传输层在 TCP 上使用 TLS 加密机制。
应用层(3.2 中 Payload 的报文体)使用 Protobuf 进行编解码。
3.2 报文结构定义
报文结构定义:
注:
低字节不为0x00 的情况下,高字节为0x00;
高字节不为0x00 的情况下,低字节为0x00。
报文头里的整型字段的字节序使用大端方式。
3.3 传输机制
发起方发送请求报文,接收方回复响应报文或错误报文,错误报文的错误码解释了 接收方为何无法正确地处理请求报文。
3.4 消息类型定义
MessageType 定义,标记 “ ○”符号的响应为可选项,可以不响应。
所有的消息(请求和响应)都定义了类型代码。
请求消息的类型代码小于 0x80;
类型代码加上 0x80 就是对应消息的响应类型代码。
错误响应类型代码为 0xFF。
接收方回复错误消息时 payload 是一个字节,内容 为 ErrorCode。
注:
1.不单独定义"终端启动充电结果通知"和"终端结束充电结果通知"消息,使用"订单上传"替代。
2. 实时数据上送方法:充电机状态、状态数据,遥测数据,在链路建立成功后,云端总召一 次。正常充电过程中,云端可以按照周期(30S)召唤遥测、状态数据,如果是直流终端,则 可以召唤BMS 数据。
3.P—云平台;D—集控器
3.5 消息体定义
每条消息的域(字段)编号做了规定,该域的限定也做了规定,限定包括:
0 - 可选,表示该域可为空。基本类型用默认值表示空,复杂类型用 null 表示空。
1 - 必选,表示该域是必填的。
*-\重复,表示该域是个元素可重复的列表,列表的大小允许为 0。
3.5.1 心跳(0x00)
3.5.2 上线申请(0x02)
3.5.3 离线通知(0x04)
3.5.4 平台侧启动充电指令(0x11)
3.5.5 平台侧停止充电指令(0x13)
3.5.6 设备侧启动充电申请(0x10)
3.5.7 设备侧停止充电申请(0x12)
3.5.8 订单上传(0x16)
3.5.9 充电机状态变化通知(0x20)
3.5.10 充电机状态召唤(0x21)
3.5.11 账户详情获取(0x22)
3.5.12 账户信息同步申请(0x24)
3.5.13 BMS 参数通知(0x26)
3.5.14 遥测数据召唤(0x31)
3.5.15 状态数据召唤(0x33)
3.5.16 BMS 数据召唤(0x35)
3.5.17 遥测数据通知(0x32)
3.5.18 状态数据通知(0x34)
3.5.19 BMS 数据通知(0x36)
3.5.20 未被确认所有订单召唤(0x41)
3.5.21 指定编号订单召唤(0x43)
3.5.22 清空集控器中白名单信息命令.下发(0x49)
3.5.23 错误(0xFF)
3.6 类型定义
3.6.1 类类型
3.6.1.1 AccountInfo-账户信息
账户信息根据不同的用户 ID 对不同的用户的账单信息进行存储,用户的账目详情 可以被划分为很多的类型,用户的当前账目状态如下:
类:
3.6.1.2 AccountingStrategy-计费策略
类:
3.6.1.3 BillInfo-订单详情
类:
3.6.1.4 CarInfo-汽车状态信息
类:
3.6.1.5 CardInfo-充电卡的状态信息
类:
3.6.1.6 ChargerState-充电机工作状态
类:
3.6.1.7 ChargeFrozen-充电冻结电量
类:
3.6.1.8 DischargeFrozen-放电冻结电量
类:
3.6.1.9 BmsShakehands-握手阶段 BMS 信息
类:
3.6.1.10 BmsConfig-参数配置阶段 BMS 信息
类:
3.6.1.11 BmsChargeFinish-充电结束阶段 BMS 信息
类:
3.6.1.12 BmsErrorFrame-BMS 错误报文
类:
3.6.1.13 BmsCharging-充电阶段 BMS 信息
类:
3.6.1.14 QueueSequence-终端排队序号
类:
3.6.2 枚举类型
3.6.2.1 AccountType-账户类型
枚举类型:
3.6.2.2 BoolEnum—布尔枚举
枚举类型:
3.6.2.3 BillStatus –订单状态
枚举类型:
3.6.2.4 ChargerStateEnum-充电机工作状态枚举
枚举类型:
3.6.2.5 ErrorCode-错误代码
枚举类型:
3.6.2.6 FailReason-失败原因
枚举类型:
3.6.2.7 MeasureType-遥测数据项
枚举类型:
3.6.2.8 OfflineReason-集控器离线原因
枚举类型:
3.6.2.9 RegistrationStatus-注册结果
枚举类型:
3.6.2.10 StartChargeType –充电类型
枚举类型:
3.6.2.11 ChargeRequestType-充电请求类型
枚举类型:
3.6.2.12 ChargeDischarge–充放电类型
枚举类型:
3.6.2.13 StartChargeWay-启动方式
枚举类型:
3.6.2.14 StateType-状态数据类型
枚举类型:
3.6.2.15 SendReason-数据传送原因
枚举类型:
3.6.2.16 SyncAccountType –需要同步的账户类型
枚举类型:
3.6.2.17 ChargingMode –充电类型
枚举类型:
3.6.2.18 CtrlHardwareType –集控硬件类型
枚举类型:
3.6.3 其他类型
3.6.3.1 DateTime
int64类型,使用UTC时间,精确到毫秒,例如: 1528937212794表示2018-06-14 08:46:52:794
4 消息流程定义
一组消息为一问一答形式,某些消息的响应可选,一个完整的流程流程一般由一组 或多组消息组成。
4.1 接入平台流程
4.2 心跳流程
4.3 集控器上线初始化流程
先召唤所有的离线订单,再召唤所有的当前充电机工作状态。
4.4 平台侧发起充电流程
4.5 设备侧发起充电流程
4.6 平台召唤数据流程
以遥测为例:
4.7 平台下发数据流程
以下发充电计划曲线为例(响应为可选项):
4.8 集控器主动上报数据
以充电机状态变化通知为例(响应为可选项):
4.9 集控器请求数据
以账户信息请求为例(响应为可选项):
4.10 集控白名单同步流程
1)集控第一次出厂上电,和平台握手成功后,发送账户信息同步申请请求(0x24), 请求账户信息,SyncTime 填 0,Size 填 100。
否则 SyncTime 填最后一次平台回复的账户信息同步申请.响应(0xA4)的 SyncTime。 SyncTime 需要在集控持久化。
2)平台收到后,从数据库中读取集控制定时间之后的信息,如果小于 100 条,则全部打 包在一起,SyncTime 写最后一条账户的更新时间。如果大于 100 条,则只发送 100 条,
SyncTime 写第 100 条条账户的更新时间。
3)集控收到后,如果账户条数小于 100 条,则结束;否则,继续请求,SyncTime 填平台 回复的 SyncTime。后面间隔 3S 继续请求下 100 条。
账户同步建议增加全量更新账户的功能。
应用场景:怎么同步都无法保持一致,因此人工进行白名单的同步。
实现方式:协议中增加平台下发集控账户清空的指令,集控收到后发起白名单请求,申请 时间为 0。平台提供界面给具备权限的人员使用。
附录 A
充电中止原因说明
附录 B
设备发起充电时平台的响应结果说明
附录 C
故障代码说明