智能充电桩服务系统软硬件通讯协议_两轮充电桩通信协议-程序员宅基地

技术标签: 充电桩  通讯协议  modbus-rtu  

该协议内容遵循modbus-rtu协议,如有不足,还请各路大神指正。

1、设备链接服务器或与服务器心跳

设备主机上电:设备主机自动向服务器发送 “00” 指令,请求注册或设备与服务器通讯心跳(每10秒)。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口数据长度(字节)

端口编号

端口状态

端口编号

端口状态

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

00

04

01

00

02

01

69

说明:端口数据长度包括端口编号和端口状态,如有12个端口,则数据长度是24字节

端口状态:00空闲, 01可用, 02关闭, 03充电中。

设备主机:未收到“01”指令,说明服务器未连接成功,设备每隔3秒向服务器发送1次“00” 指令,直至收到服务器回复“01”指令,说明注册成功。

此处如果分不清注册连接和心跳,可分为两个协议来使用,需确认。

2、设备链接服务器后,服务器回复连接成功并发送校时时间

服务器:收到“00”指令后注册,回复“01”指令,说明注册成功并要求同步网络时间。

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

01

22

08

01

18

06

23

69

说明:协议中时间年月日时分秒都是十进制下的值

3、卡信息查询

设备主机上报:用户刷卡,查询人员信息,发送“02”指令,请求查询。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

芯片号1

芯片号2

芯片号3

芯片号4

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

02

01

0E

FA

36

69

说明:芯片号码由“芯片号码1”“芯片号码2”“芯片号码3”“芯片号码4”组成,即示例中芯片号为:“010EFA36”。

4、人脸信息查询

设备主机上报:用户刷脸,查询人员信息,发送“03”指令,请求查询。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

人脸数据

字节长度

人脸信息01

人脸信息02

人脸信息03

人脸信息04

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

03

04

01

0E

FA

36

69

说明:人脸信息字节长度是指后面“人脸信息01”,“人脸信息02”,“人脸信息03”,.....等数据组合的字节长度。

5、设备刷卡和人脸识别后,服务器返回人员信息

服务器:收到刷卡“02”或人脸识别“03”查询人员信息后,回复“04”指令,并返回人员信息。

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

会员号

01

会员号

02

会员号

03

余额千万位百万位

余额十万位万位

余额千位百位

余额

十位个位

余额

小数位

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

04

22

08

01

00

00

23

12

56

69

说明:会员号是由“会员号01”“会员号02”“会员号03”组成,即示例中会员号是“220801”,余额是由“余额千万位百万位”“余额十万位万位”“余额千位百位”“余额十位个位”“余额小数位”组成,即实例中余额为“2312.56”元。

6、服务器控制设备开始充电

服务器:小程序端用户开启充电或设备前用户刷卡或刷脸后按键启动充电,发送“05”指令,设备指定端口开启充电。

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

端口编号

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

05

02

69

说明:通知设备指定端口号开启充电,端口编号十六进制,表达第几号端口。

7、服务器通知设备停止充电

服务器:小程序端用户停止充电或设备前用户刷卡或刷脸后按键停止充电,发送“06”指令,设备指定端口开启充电。

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

端口编号

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

06

02

69

说明:通知设备指定端口号停止充电,端口编号十六进制,表达第几号端口。

8、服务器通知设备充电或关闭/开启端口后,设备回复服务器端口状态

设备主机上报:服务器通知设备主机开启充电成功后或者关闭端口号后或开启端口号后,回复“07”指令,上报端口状态。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

07

01

00

69

说明:设备开启充电后,向服务器上报端口状态,端口状态:00空闲, 01可用, 02关闭, 03充电中。

9、服务器通知设备停止充电后,设备上报数据给服务器

设备主机上报:服务器通知设备主机停止充电成功后,回复“08”指令,上报端口状态,上报功率和电量。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

功率高位

功率低位

电量高位

电量低位

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

08

01

00

69

说明:设备停止充电后,向服务器发送当前设备端口状态,功率,电量信息。

10、服务器查询设备所有端口状态

服务器:查询设备状态,发送“09”指令。

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

09

69

11、设备响应服务器查询端口状态

设备主机上报:服务器查询设备状态,发送“09”指令后,回复“0A”指令,上报端口状态。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口数据长度(字节)

端口编号

端口状态

端口编号

端口状态

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0A

04

01

00

02

01

69

说明:通知服务器端口状态,端口编号十六进制,端口状态:00空闲, 01可用, 02关闭, 03充电中。

12、电枪插入,设备上报服务器

电枪插入车辆后,设备向服务器发送指令“0B”指令,告知服务器当前插入设备的端口号。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0B

01

69

说明:通知设备指定端口号开启充电,端口编号十六进制,表达第几号端口。

13、电枪拔开,设备上报服务器

电枪插入车辆后,设备向服务器发送指令“0C”指令,告知服务器当前插入设备的端口号。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0C

01

69

说明:通知设备指定端口号开启充电,端口编号十六进制,表达第几号端口。

14、电量充满后,设备自动断电

设备判断充满电后,自动断电,向服务器发送“0D”指令,告知服务器端口订单已充满

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0D

01

69

说明:服务器收到该指令后,是否需服务器发送停止指令给设备,具体看设备定

15、低功率充电心跳

低功率充电桩开始充电后,发送心跳数据到服务器,指令“0E

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

功率高位

功率低位

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0E

01

00

69

说明:端口编号十六进制,端口状态:00空闲, 01可用, 02关闭, 03充电中。

功率需要硬件补充完整,此处可以使用高位低位来表达功率数据,整数部分,小数部分。

16、大功率充电心跳

低功率充电桩开始充电后,发送心跳数据到服务器,指令“0F

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

功率高位

功率低位

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

0F

01

00

69

说明:端口编号十六进制,端口状态:00空闲, 01可用, 02关闭, 03充电中。

功率需要硬件补充完整,此处可以使用高位低位来表达功率数据,整数部分,小数部分。

17、汽车交流心跳

汽车交流充电桩开始充电后,发送心跳数据到服务器,指令“10

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

电量高位

电量低位

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

10

01

00

69

说明:端口编号十六进制,端口状态:00空闲, 01可用, 02关闭, 03充电中。

电量需要硬件补充完整,此处可以使用高位低位来表达电量数据,整数部分,小数部分。

18、汽车直流心跳

汽车交流充电桩开始充电后,发送心跳数据到服务器,指令“11

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

端口状态

电量高位

电量低位

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

11

01

00

69

说明:端口编号十六进制,端口状态:00空闲, 01可用, 02关闭, 03充电中。

电量需要硬件补充完整,此处可以使用高位低位来表达电量数据,整数部分,小数部分。

19、关闭端口

管理端控制设备某个端口关闭,发送指令“12

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

端口编号

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

12

02

69

说明:端口编号十六进制。

20、开启端口

管理端控制设备某个端口关闭,发送指令“13

头标识符

数据起始符

命令字

数据长度高位字节

数据长度低位字节

端口编号

crc16校验高位字节

crc16校验低位字节

结束符

FA

F5

96

13

02

69

说明:端口编号十六进制。

21、刷卡或刷脸后,设备选择端口

设备点击某个端口按钮后,通知服务器,发送指令“14”,等待服务器返回指令。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

14

01

69

说明:端口编号十六进制。

22、刷卡或刷脸后,设备开启充电

设备点击某个端口按钮后,通知服务器,发送指令“15”,服务器校验通过后,发回指令可以开始充电,设备点击开始充电,通知服务器,等待服务器返回充电指令。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

15

01

69

说明:端口编号十六进制。此场景需确定设备是否有开始按钮,若没有此按钮,则在协议【刷卡或刷脸后,设备选择端口,发送指令“14”】后,服务器就会下发充电指令。具体看硬件设备定

23、设备端点击结束充电按钮

点击结束前,需设备先选择结束那个端口的充电订单,即选择端口号,发送“16”指令。

设备编号(15字节)

头标识符

数据起始符

命令字

数据长度

高位字节

数据长度

低位字节

端口编号

crc16校验

高位字节

crc16校验

低位字节

结束符

383630303539303530393532303633

FA

F5

96

16

01

69

说明:端口编号十六进制。

补充说明:

不论是从那个终端发起操作,统一使用场景有:开始充电、停止充电、开启端口、关闭端口

  1. 服务器开始充电指令与设备开启充电后上报指令
  2. 服务器停止充电指令与设备停止充电后上报指令
  3. 服务器开启端口指令与设备端口状态上报指令
  4. 服务器关闭端口指令与设备端口状态上报指令

指令集:

场景

指令

设备连接服务器

0x00

设备与服务器心跳通讯

0x00

服务器响应连接并发送服务器时间

0x01

易充卡信息查询

0x02

人脸信息查询

0x03

刷卡或人脸查询的人员信息及余额

0x04

服务器通知设备开始充电

0x05

服务器通知设备停止充电

0x06

服务器通知设备开始充电、开启端口、关闭端口后,设备执行后端口状态上报

0x07

设备停止充电后,数据上报服务器

0x08

服务器查询设备所有端口状态

0x09

设备所有端口状态上报

0x0A

电枪插入,设备上报给服务器

0x0B

电枪拔开,设备上报给服务器

0x0C

电量充满后,设备主动断电

0x0D

低功率设备充电心跳

0x0E

大功率设备充电心跳

0x0F

汽车交流桩充电心跳

0x10

汽车直流桩充电心跳

0x11

服务器通知设备关闭端口

0x12

服务器通知设备开启端口

0x13

刷卡或刷脸后,设备上点击端口按钮

0x14

刷卡或刷脸后,设备上点击开始充电按钮

0x15

设备上点击结束充电按钮

0x16

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014029277/article/details/133343476

智能推荐

5个超厉害的资源搜索网站,每一款都可以让你的资源满满!_最全资源搜索引擎-程序员宅基地

文章浏览阅读1.6w次,点赞8次,收藏41次。生活中我们无时不刻不都要在网站搜索资源,但就是缺少一个趁手的资源搜索网站,如果有一个比较好的资源搜索网站可以帮助我们节省一大半时间!今天小编在这里为大家分享5款超厉害的资源搜索网站,每一款都可以让你的资源丰富精彩!网盘传奇一款最有效的网盘资源搜索网站你还在为找网站里面的资源而烦恼找不到什么合适的工具而烦恼吗?这款网站传奇网站汇聚了4853w个资源,并且它每一天都会持续更新资源;..._最全资源搜索引擎

Book类的设计(Java)_6-1 book类的设计java-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏18次。阅读测试程序,设计一个Book类。函数接口定义:class Book{}该类有 四个私有属性 分别是 书籍名称、 价格、 作者、 出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是 书籍名称、 价格、 作者、 出版年份 。裁判测试程序样例:import java.util.*;public class Main { public static void main(String[] args) { List <Book>_6-1 book类的设计java

基于微信小程序的校园导航小程序设计与实现_校园导航微信小程序系统的设计与实现-程序员宅基地

文章浏览阅读613次,点赞28次,收藏27次。相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了校园导航的标准化、制度化、程序化的管理,有效地防止了校园导航的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正建筑速看等信息。课题主要采用微信小程序、SpringBoot架构技术,前端以小程序页面呈现给学生,结合后台java语言使页面更加完善,后台使用MySQL数据库进行数据存储。微信小程序主要包括学生信息、校园简介、建筑速看、系统信息等功能,从而实现智能化的管理方式,提高工作效率。

有状态和无状态登录

传统上用户登陆状态会以 Session 的形式保存在服务器上,而 Session ID 则保存在前端的 Cookie 中;而使用 JWT 以后,用户的认证信息将会以 Token 的形式保存在前端,服务器不需要保存任何的用户状态,这也就是为什么 JWT 被称为无状态登陆的原因,无状态登陆最大的优势就是完美支持分布式部署,可以使用一个 Token 发送给不同的服务器,而所有的服务器都会返回同样的结果。有状态和无状态最大的区别就是服务端会不会保存客户端的信息。

九大角度全方位对比Android、iOS开发_ios 开发角度-程序员宅基地

文章浏览阅读784次。发表于10小时前| 2674次阅读| 来源TechCrunch| 19 条评论| 作者Jon EvansiOSAndroid应用开发产品编程语言JavaObjective-C摘要:即便Android市场份额已经超过80%,对于开发者来说,使用哪一个平台做开发仍然很难选择。本文从开发环境、配置、UX设计、语言、API、网络、分享、碎片化、发布等九个方面把Android和iOS_ios 开发角度

搜索引擎的发展历史

搜索引擎的发展历史可以追溯到20世纪90年代初,随着互联网的快速发展和信息量的急剧增加,人们开始感受到了获取和管理信息的挑战。这些阶段展示了搜索引擎在技术和商业模式上的不断演进,以满足用户对信息获取的不断增长的需求。

随便推点

控制对象的特性_控制对象特性-程序员宅基地

文章浏览阅读990次。对象特性是指控制对象的输出参数和输入参数之间的相互作用规律。放大系数K描述控制对象特性的静态特性参数。它的意义是:输出量的变化量和输入量的变化量之比。时间常数T当输入量发生变化后,所引起输出量变化的快慢。(动态参数) ..._控制对象特性

FRP搭建内网穿透(亲测有效)_locyanfrp-程序员宅基地

文章浏览阅读5.7w次,点赞50次,收藏276次。FRP搭建内网穿透1.概述:frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。2.简单的图解:3.准备工作:1.一个域名(www.test.xyz)2.一台有公网IP的服务器(阿里云、腾讯云等都行)3.一台内网主机4.下载frp,选择适合的版本下载解压如下:我这里服务器端和客户端都放在了/usr/local/frp/目录下4.执行命令# 服务器端给执_locyanfrp

UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)_uva12534-程序员宅基地

文章浏览阅读687次。题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是_uva12534

免费SSL证书_csdn alphassl免费申请-程序员宅基地

文章浏览阅读504次。1、Let's Encrypt 90天,支持泛域名2、Buypass:https://www.buypass.com/ssl/resources/go-ssl-technical-specification6个月,单域名3、AlwaysOnSLL:https://alwaysonssl.com/ 1年,单域名 可参考蜗牛(wn789)4、TrustAsia5、Alpha..._csdn alphassl免费申请

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

推荐文章

热门文章

相关标签