打工人福音⚡:公牛充电交互协议,建议收藏!

分享《一套免费开源充电桩物联网系统,是可以立马拿去商用的!》

协议原文件下载地址:

链接: https://pan.baidu.com/s/1kW15Nfe9cjPDFLGPYJ-zUg?pwd=agq2 提取码: agq2

1 总则

1.1 协议概述

本协议适用于公司所有充电产品包括交直流充电桩、电瓶车桩,交流桩及电瓶车桩在本协议中部分数 据无需上送,具体内容在下面协议部分均有标注。

1.2 通信接口

充电设备和充电运营管理系统之间的通信接口采用基于 TCP/IP Socket 的通信方式实现,按照长连接 工作模式。两个系统可部署在同一个或者不同的企业网络环境中,可以通过局域网或者互联网实现互相连 接通信。
充电设备通信联接方式支持有线或无线连接运营平台服务器或者多个充电设备经过集中器与运营平台 连接。
充电设备支持服务器的直接 IP 地址与网络域名解析,地址与连接端口均为可设置参数。

1.3 接入流程

详见上电流程。

2 通信协议结构

本协议的通信协议结构如图 1 所示。本协议采用的 TCP/IP 传输定义与标准定义一致。
在这里插入图片描述

3 应用层报文帧格式

3.1 应用层数据结构

在这里插入图片描述数据结构定义说明:
● 前导域代表一帧数据的开始,固定为 0x5A、0xA5;
● 版本域为协议版本号,用于协议有升级时,解析新老协议差异内容;本协议版本号为 1.0.0.01,两字节分别为 0x11、0x27(十进制的 10001);
● 序号域即数据包的发送顺序号,用于业务实现收发一致性校验。从 0 开始顺序增加,如是应答 数据包,则与询问数据包序号保持一致,当充电设备与平台网络断开重新建立连接或者溢出后 归0;
● 加密标志只针对消息体(数据单元) ,0x00:不加密,0x01:AES128(CBC);
● 命令字定义了上下行帧类型,表示不同的功能要求,充电设备的帧类型码为奇数,运营平台的帧类型码为偶数;
● 长度域即前导域到校验域的整个数据帧长度,加密时,按加密后的长度,长度不超过 1036 字节;
● 数据域即具体数据帧内容;
● 校验域为从前导域到数据域的 CRC 校验,校验多项式为 0x180D ,低字节在前,高字节在后,计算方式见附录。

3.2 数据格式定义

数据格式包括 BCD 码、ASCII、BIN 码(BIN 码均为低位在前高位在后)。协议中小数值均乘倍率 (保留小数点位数) 上送平台(例如: 电压为 220.1, 保留一位小数, 上送到平台值为 2201,即 0x899)。

3.3 名词解释

● 充电卡:平台默认充电卡为 M1 卡(不带储值),读卡器读取到的卡号为印刷在卡面上的逻 辑卡号,用于充电设备与服务器数据交互。IC 卡或者 CPU 卡均采用平台 M1 卡的鉴权模式,不使用数据储存与写入功能。
● 交易流水号:交易流水号为一次充电操作过程的统一标记,从远程启动充电或者卡鉴权回复 时产生到最后设备结束充电的交易记录均使用同一个流水号,由平台产生(离线模式由设备按此规则生成),生成规则为 格式设备号(7bytes) +枪号(1byte) +年月日时分秒 (6bytes) +自增序号(2bytes);示例 :15010600019236012001061803423060。
● 计损比例:计损比例定义在费率帧中,此项非零时,充电设备需要对上送平台充电量加上此 比例,如<实时监测数据>中“计损电度”,则为“电度”基础上加上此比例得到的值。同理 见<交易记录>中“计损尖电量”、“计损峰电量”、 “计损平电量”、 “计损谷电量”、
“计损总电量”(计损比例置 0,则表示不计损)。
● 设备编号:由平台生成提供给设备使用,不支持设备企自行生成的设备编号。示 例:1501060001923601
● 枪号:由 7 个字节设备编号+1个字节的枪号生成。示例: 1501060001923601/1501060001923602

4 帧类型定义一缆表

​充电设备的帧类型码为奇数,运营平台的帧类型码为偶数;帧类型码分段定义,已定义的帧类型码 不可重定义为其他定义;

在这里插入图片描述

5 通信协议流程

5.1 上电流程

充电设备在上电或者离线恢复后连接到平台,首先上送充电设备登陆认证,平台对设备的信息进行校验,并回复登陆认证应答,如果不符合则会断开当前建立的连接,如果验证通过,则设备先检查是否有离线状态下本地储存的实时监测数据或者交易数据,如果有则先上送到平台进行处理,随后充电设备发起充电计费模型的请求,平台检测计费模型与当前运营费率是否一致,并回复计费模型请求应答,如果不一致,设备需要向平台请求新的计费模型。
在这里插入图片描述

5.2 app 充电流程

app 充电流程与刷卡充电流程互通,即 app 充电可以用卡结束,app 鉴权时会将用户绑定的卡信息下发到充电设备,用于卡结束验证,卡充电可以用 app 结束充电。
在这里插入图片描述

5.3 刷卡充电

在这里插入图片描述

5.4 离线充电模式

在这里插入图片描述

6 注册心跳帧类型码数据定义

6.1 充电设备登录认证

在这里插入图片描述

6.2 登录认证应答

在这里插入图片描述

6.3 充电设备心跳包

在这里插入图片描述

6.4 心跳包应答

在这里插入图片描述

6.5 计费模型验证请求

在这里插入图片描述

6.6 计费模型验证请求应答

在这里插入图片描述

6.7 充电设备计费模型请求

在这里插入图片描述

6.8 计费模型请求应答

在这里插入图片描述

7 实时数据帧类型码数据定义

7.1 读取实时监测数据

在这里插入图片描述

7.2 上传实时监测数据

在这里插入图片描述

7.3 充电握手

在这里插入图片描述

7.4 参数配置

在这里插入图片描述

7.5 充电结束

在这里插入图片描述

7.6 错误报文

在这里插入图片描述

7.7 充电阶段 BMS 中止

在这里插入图片描述

7.8 充电阶段充电机中止

在这里插入图片描述

7.9 充电过程 BMS 需求与充电机输出

在这里插入图片描述

7.10 充电过程 BMS 信息

在这里插入图片描述

8 运营交互帧类型码数据定义

8.1 充电设备主动申请启动充电

在这里插入图片描述

8.2 运营平台确认启动充电

在这里插入图片描述

8.3 运营平台远程控制启机

在这里插入图片描述

8.4 远程启动充电命令回复

在这里插入图片描述

8.5 运营平台远程停机

在这里插入图片描述

8.6 远程停机命令回复

在这里插入图片描述

8.7 交易记录

在这里插入图片描述

8.8 交易记录确认

在这里插入图片描述

8.9 远程账户余额更新

在这里插入图片描述

8.10 余额更新应答

在这里插入图片描述

8.11 离线卡数据同步

在这里插入图片描述

8.12 离线卡数据同步应答

在这里插入图片描述

8.13 离线卡数据清除

在这里插入图片描述

8.14 离线卡数据清除应答

在这里插入图片描述

8.15 离线卡数据查询

在这里插入图片描述

8.16 离线卡数据查询应答

在这里插入图片描述

9 运营平台设置帧类型码数据定义

9.1 充电设备工作参数设置

在这里插入图片描述

9.2 充电设备工作参数设置应答

在这里插入图片描述

9.3 对时设置

在这里插入图片描述

9.4 对时设置应答

在这里插入图片描述

9.5 计费模型设置

在这里插入图片描述

9.6 计费模型应答

在这里插入图片描述

9.7 二维码信息设置

在这里插入图片描述

9.8 二维码信息应答

在这里插入图片描述

10 车位锁通信协议定义

地锁状态变化需要传输给平台,若地锁出现故障,则传输故障码至平台,若检测出现故障则,默认地锁为降下状态;若为升降出现故障,则保持现有状态

10.1 地锁数据上送

在这里插入图片描述

10.2 遥控地锁升锁与降锁命令

在这里插入图片描述

10.3 充电设备返回数据(上行)

在这里插入图片描述

11 电设备远程维护帧类型码数据定义

11.1 远程重启

在这里插入图片描述

11.2 远程重启应答

在这里插入图片描述

11.3 远程更新

在这里插入图片描述

11.4 远程更新应答

在这里插入图片描述

12 附录

12.1 充电停止原因代码表

在这里插入图片描述

12.2 CRC16 校验的计算方法

CRC(Cyclical Redundancy Check)由两字节组成,生成函数如下:

1、CRC 计算函数
WORD ModbusCRC(BYTE * pData, BYTE len)
{
BYTE byCRCHi = 0xff;
BYTE byCRCLo = 0xff;
BYTE byIdx;
WORD crc;
while(len--)
{
byIdx = byCRCHi ^* pData++;
byCRCHi = byCRCLo ^ gabyCRCHi[byIdx];
byCRCLo = gabyCRCLo[byIdx];
}
crc = byCRCHi;
crc <<= 8;
crc += byCRCLo;
return crc;
}
CRC 码表高字节
BYTE gabyCRCHi[] =
{
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40
};

CRC 码表高字节

BYTE gabyCRCLo[] =
{
0x00,0xc0,0xc1,0x01,0xc3,0x03,0x02,0xc2,0xc6,0x06,
0x07,0xc7,0x05,0xc5,0xc4,0x04,0xcc,0x0c,0x0d,0xcd,
0x0f,0xcf,0xce,0x0e,0x0a,0xca,0xcb,0x0b,0xc9,0x09,
0x08,0xc8,0xd8,0x18,0x19,0xd9,0x1b,0xdb,0xda,0x1a,
0x1e,0xde,0xdf,0x1f,0xdd,0x1d,0x1c,0xdc,0x14,0xd4,
0xd5,0x15,0xd7,0x17,0x16,0xd6,0xd2,0x12,0x13,0xd3,
0x11,0xd1,0xd0,0x10,0xf0,0x30,0x31,0xf1,0x33,0xf3,
0xf2,0x32,0x36,0xf6,0xf7,0x37,0xf5,0x35,0x34,0xf4,
0x3c,0xfc,0xfd,0x3d,0xff,0x3f,0x3e,0xfe,0xfa,0x3a,
0x3b,0xfb,0x39,0xf9,0xf8,0x40,0x28,0xe8,0xe9,0x29,
0xeb,0x2b,0x2a,0xea,0xee,0x2e,0x2f,0xef,0x2d,0xed,
0xec,0x2c,0xe4,0x24,0x25,0xe5,0x27,0xe7,0xe6,0x26,
0x22,0xe2,0xe3,0x23,0xe1,0x21,0x20,0xe0,0xa0,0x60,
0x61,0xa1,0x63,0xa3,0xa2,0x62,0x66,0xa6,0xa7,0x67,
0xa5,0x65,0x64,0xa4,0x6c,0xac,0xad,0x6d,0xaf,0x6f,
0x6e,0xae,0xaa,0x6a,0x6b,0xab,0x69,0xa9,0xa8,0x68,
0x78,0xb8,0xb9,0x79,0xbb,0x7b,0x7a,0xba,0xbe,0x7e,
0x7f,0xbf,0x7d,0xbd,0xbc,0x7c,0xb4,0x74,0x75,0xb5,
0x77,0xb7,0xb6,0x76,0x72,0xb2,0xb3,0x73,0xb1,0x71,
0x70,0xb0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,
0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9c,0x5c,
0x5d,0x9d,0x5f,0x9f,0x9e,0x5e,0x5a,0x9a,0x9b,0x5b,
0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4b,0x8b,
0x8a,0x4a,0x4e,0x8e,0x8f,0x4f,0x8d,0x4d,0x4c,0x8c,
0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,
0x43,0x83,0x41,0x81,0x80,0x40
};

12.3 协议需知

在这里插入图片描述

协议原文件下载地址:

链接: https://pan.baidu.com/s/1kW15Nfe9cjPDFLGPYJ-zUg?pwd=agq2 提取码: agq2

分享《一套免费开源充电桩物联网系统,是可以立马拿去商用的!》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663651.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vueRouter路由总结

https://blog.csdn.net/qq_24767091/article/details/119326884

CUDA学习(2)

什么是CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;&#xff0c;统一计算设备架构&#xff0c;英伟达推出的基于其GPU的通用高性能计算平台和编程模型。 借助CUDA&#xff0c;开发者可以充分利用英伟达GPU的强大计算能力加速各种计算任务。 软件生…

MathType软件2024最新简体中文汉化版本下载

在数字化时代背景下&#xff0c;教育与科研领域正经历着深刻的变革。随着在线教育和远程工作的兴起&#xff0c;数学作为基础学科之一&#xff0c;其内容的高效、精准编辑和呈现变得尤为重要。MathType软件应运而生&#xff0c;以其强大的数学公式编辑器功能&#xff0c;广泛应…

校园疫情防控|基于SprinBoot+vue的校园疫情防控系统(源码+数据库+文档)

校园疫情防控系统 目录 基于SprinBootvue的校园疫情防控系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台功能模块 5.2.1管理员功能 5.2.2学生功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

基于单片机的汽车防盗报警系统设计与实现

摘要&#xff1a; 为了有效保护车辆&#xff0c;防止车辆被盗&#xff0c;汽车防盗报警系统的设计成为研究的热点问题 。 基于 STC89C52 单片机设计了一套汽车防盗报警系统&#xff0c;该系统由硬件和软件两部分组成&#xff0c;通过高效集成电路形成完整的控制系统&#xff…

快解析内网穿透,无需公网IP

今天聊聊一个公网IP地址可以带来什么&#xff1f; 公网IP是全球可路由的地址&#xff0c;通俗的说&#xff0c;如果你设置的防火墙允许,你的设备有公网地址&#xff0c;那么你就可以在世界上的任何地方通过互联网访问到你的设备&#xff0c;如果你的电脑有公网地址&#xff0c…

第5章 锁与进程间通信(3)

目录 5.4 其他IPC机制 5.4.1 信号 5.4.2 管道和套接字 5.5 小结 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 5.4 其他IPC机制 5.4.1 信号 kill命令&#xff1a; 作用&#xff1a;发送指定信号。 信号分为&#xff1a; 传统32个信号。 用于实…

JavaWeb笔记整理+图解——Filter过滤器

欢迎大家来到这一篇章——Filter过滤器 监听器和过滤器都是JavaWeb服务器三大组件(Servlet、监听器、过滤器)之一,他们对于Web开发起到了不可缺少的作用。 ps:想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记,里面整理了大量详细的知识点和图解,可以帮你快速掌…

[SWPU 2019]神奇的二维码、buuctf部分web题

目录 [SWPU 2019]神奇的二维码 [LitCTF 2023]Http pro max plus [SWPUCTF 2021 新生赛]finalrce ​[鹏城杯 2022]简单包含 [SWPUCTF 2022 新生赛]ez_ez_php(revenge) [GKCTF 2020]cve版签到 cve-2020-7066&#xff1a; [SWPU 2019]神奇的二维码 解码看看&#xff0c;是…

让AI学相机对焦: Learning to AutoFocus

前言 分析来自谷歌发表在 CVPR 2020 上的论文 Learning to Autofocus &#xff1a;https://arxiv.org/pdf/2004.12260 目前网上对这篇论文的分析较少&#xff0c;有的分析并没有指出关键点&#xff0c;如&#xff1a;论文解读&#xff1a; Learning to AutoFocus-CSDN博客&am…

Iphone自动化指令每隔固定天数打开闹钟关闭闹钟(一)

注意&#xff1a;因为是第一次用iphone的快捷指令&#xff0c;不是很明白&#xff0c;所以之后多次运行发现有bug&#xff0c;所以快捷指令部分在下一章重新写&#xff0c;我用两个日期测试了&#xff0c;没问题&#xff0c;这一章可以当做熟悉快捷指令的一些操作用&#xff0c…

算法学习笔记(7.3)-贪心算法(最大切分乘问题)

目录 ##问题描述 ##问题思考 ##贪心策略确定 ##代码实现 ##时间复杂度 ##正确性验证 ##问题描述 给定一个正整数 &#x1d45b; &#xff0c;将其切分为至少两个正整数的和&#xff0c;求切分后所有整数的乘积最大是多少 ##问题思考 假设我们将 &#x1d45b; 切分为 &…

Memory测试工具-stressapptest详解

✨前言&#xff1a; stressapptest 是一个用于在各种系统组件上施加压力的工具&#xff0c;特别专注于内存和CPU。通过运行各种模式的访问测试&#xff0c;stressapptest 旨在模拟高负载下的系统行为&#xff0c;并帮助发现潜在的错误&#xff0c;比如硬件故障、过热或系统组件…

第二证券股市资讯:重磅信号!五大利好来袭!

商场中&#xff0c;向好的变化正在发生。 5月29日&#xff0c;商场迎来多则重磅利好&#xff1a; 一、IMF上调本年我国经济增加预期至5%&#xff1b; 二、国务院印发《2024&#xff0d;2025年节能降碳举动计划》&#xff0c;光伏、新动力轿车等多个职业迎来方针利好&#xf…

Linux中部署MinIO

Linux中部署MinIO 下载MinIO可执行程序&#xff1a; wget https://dl.min.io/server/minio/release/linux-amd64/minio 添加执行权限&#xff1a; chmod x minio 创建存储目录&#xff0c;例如/data&#xff1a; mkdir -p /data 运行MinIO服务器&#xff0c;需要设置MIN…

Java设计模式 _行为型模式_访问者模式

一、访问者模式 1、访问者模式 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型模式。它允许在不修改已有类结构的情况下&#xff0c;向类中添加新的操作。访问者模式通过将操作封装在一个访问者对象中&#xff0c;使得可以在不改变各个元素类的前提下&#x…

【信息学奥赛】在一个包含N个整数的数组中找到第一个质数

【信息学奥赛】在一个包含N个整数的数组中找到第一个质数 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 编写一个函数&#xff0c;用于在一个包含N个整数的数组中找到第一个质数&#xff0c;若有则返回函数的地址&#xff1b;否则返回NUL…

fps游戏如何快速定位矩阵

fps游戏如何快速定位矩阵 矩阵特点: 1、第一行第一列值的范围在**-1 ---- 1**之间&#xff0c;如果开镜之后值会变大。 2、第一行第三列的值始终为 0。 3、第一行第四列 的值比较大 &#xff0c; >300或者**<-300**。 根据这三个特点&#xff0c;定位矩阵已经足够了…

Javaweb第九次作业

采用XML映射文件的形式来映射sql语句&#xff1b;采用动态sql语句的方式&#xff0c;实现条件查询的分页。 controller Slf4j RestController RequestMapping("supermarket111") public class SupermarketFenyeController {AutowiredSupermarketFenyeService super…

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现 很多应用都有首页通过下拉刷新&#xff0c;继续下拉进入新的活动会场进入方式。在Flutter中&#xff0c;也可以通过pull_to_refresh来实现控制刷新页&#xff0c;继续下拉进入新的活动会场页面 一、引入pull_to_refres…