智能充电桩服务系统软硬件通讯协议

该协议内容遵循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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改 Ubuntu .cache 和 pip cache 默认路径

修改 Ubuntu .cache 和 pip cache 默认路径 非常不建议修改 .cache 默认路径,除非你知道修改后的影响。 执行下面命令进行修改, vi /root/.bashrc--- 追加 export XDG_CACHE_HOME/u01/.cache export PIP_CACHE_DIR/u01/.cache ---完结!

vue3使用pinia 实现权限code存取

文章目录 前言一、pinia 简要认识二、实现思路三、详细实现步骤1.用pinia 定义user store 用来存储用户相关的数据,安装 **js-cookie **来辅助存在cookie里2. 在登录后获取用户的userId 与 token 后,调用定义好的 getUserPermisson 获取用户的权限code,并…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(2)如何迭代开发提示词

迭代/Iterative 在机器学习中,您经常有一个想法,然后实现它。编写代码,获取数据,训练模型,这就给您一个实验结果。然后您可以查看该输出,进行错误分析,找出哪些地方工作或不工作,然后…

VMware/kali使用小贴士(持续更新(吧

关于截屏 kali截屏快捷键 关于虚拟机和主机切屏 因为kali不全屏看还挺难受的,全屏了又很难切回主机 虚拟机全屏时,可以先Alt Ctrl取消对VM的控制(光标移到上方白条也是同理),然后Alt Tab切换窗口

郁金香2021年游戏辅助技术(初级班)(上)

郁金香2021年游戏辅助技术初级班(上) %p、size_t、%zd、%llu、FindWindow、GetWindowText、SetWindowTextGetWindowThreadProcessId、OpenProcess、ReadProcessMemory封接读内存接口函数 int R4(void* 地址)跨进程向目标进程内存地址写入数值 WriteProce…

【每日一题】递枕头

文章目录 Tag题目来源题目解读解题思路方法一:模拟方法二: O ( 1 ) O(1) O(1) 解法 写在最后 Tag 【模拟】【 O ( 1 ) O(1) O(1) 公式】【2023-09-26】 题目来源 2582. 递枕头 题目解读 编号从 1 到 n 的 n 个人站成一排传递枕头。最初,排…

华南理工大学电子与信息学院23年预推免复试面试经验贴

运气较好,复试分数90.24,电科学硕分数线84、信通83、专硕电子与信息74. 面试流程: 1:5min ppt的介绍。其中前2min用英语简要介绍基本信息,后3min可用英语也可用中文 介绍具体项目信息如大创、科研、竞赛等&#xff08…

出现 conda虚拟环境默认放在C盘 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法3.1 方法一3.2 方法二1. 问题所示 通过conda配置虚拟环境的时候,由于安装在D盘下,但是配置的环境默认都给我放C盘 通过如下命令:conda env list,最后查看该环境的确在C盘下 2. 原理分析 究其根本原因,这是因为默认路径没有足够的…

编程每日一练(多语言实现):判断偶数

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现 一、实例描述 利用单条件单分支选择语句判断输入的一个整数 是否是偶数。 运行程序,输入一个 整数18, 然后按回车键,将提示该数字是偶数…

linux使用操作[2]

文章目录 版权声明网络传输ping命令wget命令curl命令端口linux端口端口命令和工具 进程管理查看进程关闭进程 主机状态top命令内容详解磁盘信息监控 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相…

Android ConstraintLayout app:layout_constraintHorizontal_weight

Android ConstraintLayout app:layout_constraintHorizontal_weight <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:…

【已解决】qt死活不响应鼠标移动到按钮事件

本博文源于笔者正在研究的内容&#xff0c;这个问题大概捣鼓了一个下午&#xff0c;问题是这样子&#xff1a;我有一个按钮&#xff0c;我应用程序运行时&#xff0c;我鼠标放到按钮上&#xff0c;按钮就会被填充图标。怀揣着这样一个想法&#xff0c;我搜啊搜&#xff0c;整啊…

verilog学习笔记(1)module实例化2

移位寄存器多路选择器 我的代码&#xff1a; module top_module ( input clk, input [7:0] d, input [1:0] sel, output [7:0] q );wire [7:0] w1;wire [7:0] w2;wire [7:0] w3;my_dff8 my_dff8_1(.clk(clk),.d(d),.q(w1));my_dff8 my_dff8_2(.clk(clk),.d(w1),.q(w2));my_d…

前端知识总结

在前端开发中&#xff0c;y x是一种常见的自增运算符的使用方式。它表示将变量x的值自增1&#xff0c;并将自增后的值赋给变量y。 具体来说&#xff0c;x是一种后缀自增运算符&#xff0c;表示将变量x的值自增1。而y x则是将自增前的值赋给变量y。这意味着在执行y x之后&am…

【每日一题】ARC098D - Xor Sum 2 | 思维 | 简单

题目内容 原题链接 给定一个长度为 n n n 的数组 a a a&#xff0c;问有多少个连续子数组的和满足区间加法和等于区间异或和。 数据范围 1 ≤ n ≤ 2 ⋅ 1 0 5 1\leq n\leq 2\cdot 10^5 1≤n≤2⋅105 0 ≤ k < 2 20 0\leq k<2^{20} 0≤k<220 题解 考虑异或是不进…

前端教程-H5游戏开发

Egret EGRETIA RC 版本正式发布 从端到云一站式区块链游戏开发工作流 官网 Laya Air 在渲染模式上&#xff0c;LayaAir 支持 Canvas 和 WebGL 两种方式&#xff1b;在工具流的支持程度上&#xff0c;主要是提供了 LayaAir IDE。LayaAir IDE 包括代码模式与设计模式&#xff…

【MySQL】表的约束

文章目录 1. 表的约束概述2. 空属性 not null3. 默认值 default4. 列描述 comment5. zerofill6. 主键 primary key7. 自增长 auto_increment8. 唯一键 unique9. 外键 foreign key 1. 表的约束概述 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要…

软考高级系统架构设计师系列论文真题九:论软件多层架构的设计

软考高级系统架构设计师系列论文真题九:论软件多层架构的设计 一、论软件多层架构的设计二、理论素材准备三、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系列之:论文题目类型、论文考试大纲、历…

基于微信小程序的英语互助小程序设计与实现(亮点:小组制打卡、模拟考试答题、错题本、学习论坛)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

Java 接口多实现动态调用

简单定义一个接口,做数据插入 public interface ImportingData<T> {AjaxResult addData(T t); }目前本文使用的是根据泛型类实现动态调用,在引入时必须明确是那个实体类, 还有种方法就是给每一个实现类定义业务类型的枚举,这时候子啊接口里面就得多写一个返回枚举的实现…