二轮充电桩协议商用通讯协议

文章目录

  • 一、基础通信协议框架
  • 二、命令的定义
    • 各数据单位定义:
  • 三、设备上传
    • 3.0.1、设备心跳包(01 指令)
    • 3.0.2、设备注册包(20 指令)
    • 3.0.3、设备获取服务器时间(22 指令)
    • 3.1、设备心跳包(21 指令)
    • 3.2、刷卡操作(02 指令)
    • 3.3、结算消费信息上传(03 指令)
    • 3.4.1、充电端口订单确认(04 指令)
    • 3.4.2、端口充电时功率心跳包(06 指令)
    • 3.4.3、分机测试模式专用(09 指令)(服务器无需处理,不会发送给服务器)
    • 3.4.4、分机设置主机模块服务器地址(0A 指令)(服务器无需处理,不会发送给服务器)
  • 四、服务器下发
    • 4.1、查询设备联网状态(81 指令)
    • 4.2、服务器开始、停止充电操作(82 指令)
    • 4.2.1、服务器修改充电时长/电量(8a 指令)
    • 4.3.1、设置运行参数 1.1( 83 指令)
    • 4.3.2、设置运行参数 1.2( 84 指令)
    • 4.4.1、设置最大充电时长 、最大充电功率(85 指令)
    • 4.4.2、设置用户卡参数(86 指令)
    • 4.4.3、复位重启设备(87 指令)
    • 4.4.4、存储器清零(88 指令)
    • 4.4.5、播放语音(89 指令)
    • 4.4.6、设置设备的工作模式(8D 指令)
    • 4.8.1、设备固件升级(E0 升级分机指令)(E1 升级电源板指令)(E2 主机统一升级)(参考 01 指令中的设备类型表)
    • 4.8.2、设备固件升级(F8 指令)
    • 4.9.1、服务器查询当前设备参数(90 、91 、92、93、94 指令)
    • 4.9.2、服务器读取 EEPROM 的数据(8B 指令)
    • 4.9.3、服务器写入 EEPROM 的数据(8C 指令)
    • 4.9.4、服务器修改二维码地址(8E 指令)(最新固件才支持)


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

一、基础通信协议框架

在这里插入图片描述

1 、 为了减少包头和数据内容重叠概率,采用 3 字节包头,  为 DNY
注 2 、 长度=物理 ID+消息 ID+命令+数据(n) +校验(2),每包最多 256 字节
注 3 、 为了保证每条命令传输的正确性,采用 2 字节无符号累加和校验,校验从包头到数据的内容
注 4 、 此协议无其它注释情况下,均默认采用“小端模式 ”
注 5 、 无特别注释下,均默认每条命令至多重新发送 1 次,故需加入无应答 、重发机制,应答超时为 15 秒
注 6 、 服务器和设备之间的通信,数据可能会被分包发送,所以服务器端要做粘包分包处理。
注 7 、 服务器发给同一台设备时,每条命令之间必须有 0.5 秒以上的延时

二、命令的定义

1 、 为了防止命令重复,加入消息 ID,每条命令的消息 ID 必须不同,但重发的命令的消息 ID 必须相同。
注 2 、 为了防止命令错误,应答时的消息 ID,必须和发送方的消息 ID 保持一致
注 3 、 为了区分各个功能,加入命令,最大支持 255 条命令
注 4 、 设备物理 ID 和设备上的二维码中的一致,无重复,不丢失

各数据单位定义:

1 、 所有金额以“分 ”为单位;

2 、 所有日期以国际通用时间戳为准,例如 1519865912 则表示北京时间 2018/3/1 8:58:32;

3 、 所有时长(相对时间) 以“秒“ 为单位;

4 、 电压以 0.1V 为单位,例如 2212,则表示是 221.2V;

5 、 所有功率以“0.1W“ 为单位,例如数据是 2342, 则表示是 234.2W;

6 、 所有耗电量以“0.01 度“ 为单位,例如数据是 135, 则表示是 1.35 度;

7 、温度以 1 摄氏度为单位,温度数值需要减 65 才是准确数值,(0 是无温度传感器, 65 是 0 度)

三、设备上传

3.0.1、设备心跳包(01 指令)

这是老版本指令, 和 20 、21 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。

设备发送:
在这里插入图片描述

如:44 4E 59 1D 00 3B 37 AB 04 B9 00 01 7E 00 8C 08 02 00 03 00 00 E4 00 00 00 3B 02 29 07 02 20 00 6D 05

服务器应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 B9 00 01 00 D0 02

1 、 应答=0 成功,其它值错误
注 2 、 固件版本:见 20 指令中的描述
注 3 、 电压:见 21 指令中的描述
注 4 、 端口数量:见 21 指令中的描述
注 5 、 各端口状态:见 21 指令中的描述
注 6 、 各端口峰值功率:开始充电后出现的峰值功率,和“端口数量 ”匹配,如端口数量是 16,则“各端口峰值功率 ”为 32 字节;
注 7 、 各端口当前功率:发送心跳包时当前采集到的功率;2 个字节表示此端口当前输出的功率,和“端口数量 ”匹配,如端口数量是 16,则“各端口当前功率 ”为 32 字节;
注 8 、 虚拟 ID:见 20 指令中的描述
注 9 、 信号强度:见 21 指令中的描述
注 10 、当前环境温度:见 21 指令中的描述
注 11 、工作模式:见 20 指令中的描述
注 12 、设备类型:
注 13 、此为心跳包, 间隔时间默认为 3 分钟,方便服务器管理 SocketIP
注 14 、设备如 2 次收不到服务器应答,则进入离线状态

注 12 、设备类型:
在这里插入图片描述

3.0.2、设备注册包(20 指令)

这是新版本指令, 和 01 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。

设备发送:
在这里插入图片描述

如:44 4E 59 13 00 3B 37 AB 04 B9 00 20 7E 00 02 14 21 00 00 00 E4 00 91 04

服务器应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 B9 00 20 00 EF 02

1 、 此命令在设备每次上电后发送,如果服务器无应答则每隔状态心跳包时间(默认 3 分钟)发送一次,如服务器有应答则不再发送。
注 2 、 如以上信息任何一个字段有变动,设备必须重新执行发送流程
注 3 、 固件版本,如 100 则表示 V1.00 版本
注 4 、 端口数量:表示设备总共有多少个端口
注 5 、 虚拟 ID:需要内部组网的设备的本地地址,如 485 、 LORA 系列,如不需组网的设备,默认为 00
注 6 、 设备类型:见 01 指令中的设备类型表
注 7 、 工作模式:00=联网,01=刷卡,仅适用于 AP262 、AP360 机型
注 8 、 电源板版本号:电源板的固件版本号,如没有电源板的机型则为 0

3.0.3、设备获取服务器时间(22 指令)

设备发送:
在这里插入图片描述

如:44 4E 59 09 00 3B 37 AB 04 B9 00 22 F0 02

服务器应答:
在这里插入图片描述

如:44 4E 59 0D 00 3B 37 AB 04 B9 00 22 09 0E A9 5F 13 04

1 、 此命令设备每次上电后就会发送,直至服务器应答后就停止发送 。如服务器无应答,则每隔 3 分钟发送一次请求。
注 2 、 每 12 小时从服务器获取一次时间,如服务器不应答则每隔 3 分钟发送一次请求。

3.1、设备心跳包(21 指令)

这是新版本指令, 和 01 相对应 。 上电后发送此指令,如服务器不应答,则 3 次后不再发送。

设备发送:
在这里插入图片描述

如:44 4E 59 10 00 3B 37 AB 04 01 00 21 98 08 02 00 00 09 05 EE 02

服务器应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 21 00 38 02

1 、 应答=0 成功,其它值错误
注 2 、 电压:设备的当前电压(心跳包期间的任意一个时间点的电压)
注 3 、 端口数量:表示设备总共有多少个端口,和后面的“端口状态 ”配套
注 4 、 各端口状态:一个字节表示一个端口,和“端口数量 ”匹配,如端口数量是 16,则“各端口状态 ”为 16 字节;  每个字节表示的意思,0=空闲,1=充电中,2=有充电器但未充电(用户未启动充电), 3=有充电器但未充电(已充满电), 4=该路无法计量,5=浮充,6=存储器损坏,7=插座弹片卡住故障,8=接触不良或保险丝烧断故障,9=短路,0x0A=霍尔开关损坏( 即插入检测传感器)。0x0B=( 预检-继电器坏或保险丝断), 0x0C=(预检-继电器粘连), 0x0D=(预检-负载短路)。
注 5 、 信号强度:仅适合能获取信号强度的机型 。00 则为有线组网或无信号强度功能。
注 6 、 当前环境温度:表示当前设备内的温度,可能和真正的当前环境温度有一定的误差,如 00 则表示无此功能
注 7 、 此为心跳包, 间隔时间默认为 3 分钟,方便服务器管理 SocketIP
注 8 、 设备如 2 次收不到服务器应答,则进入离线状态

3.2、刷卡操作(02 指令)

设备发送:
在这里插入图片描述

如:44 4E 59 11 00 3B 37 AB 04 01 00 02 7A 8D 05 DD 00 01 00 00 0A 04

服务器应答:
在这里插入图片描述

如:44 4E 59 14 00 3B 37 AB 04 01 00 02 7A 8D 05 DD 00 00 10 27 00 00 01 44 04

1 、 新/旧卡: =0(旧卡)=1(新卡),通知服务器此卡为全新卡片 。设备先使用用户卡密码读卡,如果读取成功,则为旧卡;失败则尝试使用新卡密码读取,如果读取成功,则为新卡;如果都错误,则无任何反应;=2(余额卡), 说明此卡为刷卡设备使用的余额卡,此功能为把原来的刷卡设备转为联网设备使用
注 2 、 余额/有效期:分为 2 种,其一金额,其二时间戳 。卡片“余额/有效期“ 的具体使用情况,需看设备处于哪种费率模式(计时计量计次为余额,包月为有效期)3 、 账户状态:=00 正常(无语音), =01 未注册(语音“未注册卡”)=02 请绑卡(语音“请再次刷卡”)=03 请解卡(语音“请再次刷卡”)=04 包月用户重复刷卡(语音“请勿重复充电”)=05 包月用户已超限制次数(语音“超出限额次数”)=06 余额不足(语音“余额不足”)=07 包月用户已过有效期(语音“ 已过有效期”)=08 端口故障(语音“端口故障”), =09 清除余额卡内金额且把联网卡扇区密码改为用 户卡(语音“请再次刷卡”), =0A 包月用户已超限制时长(语音“超出限额时长”)=0B 请勿跨公众号(语音“请勿跨公众号使用”), =0C  此设备未注册(语音“此设备未注册”)=0D 请购买包月(语音“请购买包月”)=0E 跨区充电,余额不足(语音“跨区充电,余额不足”)=0F 包月设备,无法使用(语音“包月设备,无法使用”)=10 包月设备,跨区无法使用(语音“包月设备,跨区无法使用”)=11 临时设备,无法使用(语音“ 临时设备,无法使用”)=12 临时设备,跨区无法使用(语音“ 临时设备,跨区无法使用”);涂黄部分仅适用于 AP262 、AP360 机型
注 4 、 费率模式:=0 计时模式,=1 包月模式,=2 计量,=3 计次 。用于指示设备如何理解“余额/有效期 ”中的数据
注 5 、 端口号:=0xFF 则表示仅查询余额,服务器应答时应和设备发送的保持一致 。不是 0xFF 则为刷卡充电请求。
注 6 、 设备业务流程:先判断“账户状态”,如正常则判断“端口号”,如是查询余额则根据费率模式报出余额或有效期,如“端口号”是充电命令则不做任何动作,等待服务器下一条的充电操作请求。
注 7 、 服务器端一般遵循如下原则:新卡+未绑定用户=1(未注册卡), 新卡+ 已绑定用户=2(请绑卡), 旧卡+未绑定用户=3(请解卡), 旧卡+ 已绑定用户=0(正常)。如不考虑离线刷卡充电,则不要使用“请绑卡和请解卡”。

3.3、结算消费信息上传(03 指令)

设备发送:
在这里插入图片描述

如:44 4E 59 28 00 3B 37 AB 04 01 00 03 10 0E E8 03 30 00 01 01 00 00 00 00 01 20 19 09 01 18 00 00 13 00 30 38 01 02 03 04 05 E8 03 44 05

服务器应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 03 00 1A 02

注 1 、 充电时长:整个充电过程的时长

注 2 、 最大功率:整个充电过程中出现的最大功率

注 3 、 耗电量:整个充电过程消耗的电量

注 4 、 在线/离线启动:=0 表示离线刷卡启动充电 ;=1 表示在线服务器指令启动;3=验证码启动(仅支持带按键和屏幕的机型)。
在这里插入图片描述
备注:

1 、主机都带有 RTC 功能,上电时默认为 197011 日 08:00:00(北京时间),每隔 12 小时从服务器校准一次时间
2 、年月日时分秒为 10 进制,卡号为 16 进制,验证码为 10 进制,设备号为 10 进制,端口号为 10 进制
3 、该订单编号规则仅适用于 AP262 、AP360 及将来的新款机型。

注 5 、 卡号/验证码:在线启动时则卡片 ID 为全 0,离线启动时根据“在线/离线启动”中的标志,内容不同,验证码功能仅适用于 AP350 和 AP360系列机型。

注 6 、 停止原因:1(充满自停) 2(达到最大充电时间) 3(达到预设时间) 4(达到预设电量)5(用户拔出) 6(负载过大),7(服务器控制停止) 8 (动态过载) 9(功率过小) 0A(环境温度过高) 0B(端口温度过高) 0C(过流)0D(用户拔出 -1 ,可能是插座弹片卡住)0E
(无功率停止,可能是接触不良或保险丝烧断故障),0F(预检 -继电器坏或保险丝断)
,注 :0A 仅适用于 AP262 、AP360; 0B 仅适用于 AP262.

注 7 、 第二最大功率:开始充电 5 分钟内出现的最大功率

注 8 、 验证码:物理 ID 、 当前时间戳(规整到分钟)、端口号进行 CRC32 校验,取 10 进制最后 6 位,有效时间正负 2 分钟。

typedef __packed struct
{
uint32_t phyid;//物理 ID
uint32_t tt;//RTC 时间戳
uint8_t num;//端口号
}calc_code_ch_t;//验证码充电结构体
check_code = CRC32Calculate(&set, sizeof(set));
check_code = check_code%1000000;//取 10 进制低 6 位
tt = tt-(tt%60);

注 9 、 此命令存到 EEPROM 中,必须要收到服务器应答才能删除,断电 2 秒后发送一次 。如没收到服务器应答则每隔 30 分钟发送一次给服务
器,有应答后下一条则为 1 分钟后发送。

3.4.1、充电端口订单确认(04 指令)

这是老版本指令, 和 06 相对应,有 06 指令时无此命令(2019 年 6 月份后生产的机型已无此指令)

设备发送:
在这里插入图片描述
服务器应答:
在这里插入图片描述

1 、 此命令在开始充电后发送,如果服务器无应答则每隔心跳包时间发送一次,直至充电结束,如服务器有应答则不再发送。如果中间出现停电,重新来电后会再次发送。
注 2 、 此命令有可能在 82 命令的应答前发出,所以服务器端应做好相应处理。
注 3 、 在线/离线启动:参考 03 命令中的解释。
注 4 、 卡片 ID:参考 03 命令中的解释
注 5 、 充电时长:到当前为止, 已经充电多长时间
注 6 、 订单编号:参考 03 命令中的解释 。不同点:离线启动时,结束时间为当前时间戳(需主机带 RTC 功能)

3.4.2、端口充电时功率心跳包(06 指令)

这是新版本指令, 和 04 相对应,有 04 指令时无此命令

设备发送:
在这里插入图片描述

如:44 4E 59 32 00 3B 37 AB 04 0A 00 06 01 01 10 0E 30 00 01 E8 03 B0 04 20 03 E8 03 20 19 09 01 18 00 00 13 00 30 38 01 02 03 04 05 01 00 E8 03 98 08 C7 01 55 00 DA
08

服务器应答:无须应答

1 、 此命令设备开始充电后(82 命令应答后)每隔设 5 分钟发送 1 次(无重发机制), 充电结束后即停止发送;
注 2 、 端口号:当前充电的端口号 。注 :00 表示 1 号端口,01 表示 2 号端口
注 3 、 各端口状态:1=充电中,  5=浮充
注 4 、 充电时长:开始充电到当前为止, 已经充电多长时间
注 5 、 累计电量:开始充电到当前为止, 已经消耗的电量
注 6 、 在线/离线启动:=0 表示启动时,处于离线状态  ;=1 表示启动时,处于在线状态;3=验证码启动(仅支持带按键和屏幕的机型)
注 7 、 实时功率:心跳包发送时的当前功率
注 8 、 心跳包期间最大功率:心跳包期间出现过的最大功率
注 9 、 心跳包期间最小功率:心跳包期间出现过的最大功率
注 10 、心跳包期间平均功率:心跳包期间的平均功率
注 11 、订单编号:参考 03 命令中的解释。
注 12 、该时间段内消耗电量:此数据需除以 4800 后才是真实的电量。
注 13 、峰值功率:整个充电过程中出现过的最大功率,有些版本无此字段
注 14、 电压:设备的当前电压
注 15、 电流:设备的当前电流,可以计量芯片采集也可以通过计算得出,0.001A 为单位,1000 表示 1A 电流。
注 16、 环境温度:设备的当前环境温度,仅针对有此功能的机型
注 17、 端口温度:设备的当前充电端口的温度,仅针对有此功能的机型

3.4.3、分机测试模式专用(09 指令)(服务器无需处理,不会发送给服务器)

设备发送:
在这里插入图片描述

3.4.4、分机设置主机模块服务器地址(0A 指令)(服务器无需处理,不会发送给服务器)

设备发送:
在这里插入图片描述

四、服务器下发

4.1、查询设备联网状态(81 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 09 00 3B 37 AB 04 01 00 81 97 02

设备应答:无须应答

1、 此命令应用于注册网络后,通信过程中,服务器主动查询设备状态
注 2、 此命令会触发设备立即发送“注册包”20、“设备心跳包”01 和 21 指令

4.2、服务器开始、停止充电操作(82 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 26 00 3B 37 AB 04 02 00 82 00 64 01 00 00 01 01 00 00 12 34 56 78 12 34 56 78 12 34 56 78 12 34 56 78 80 70 88 13 F8 08

设备应答:
在这里插入图片描述

如:44 4E 59 1D 00 3B 37 AB 04 02 00 82 00 12 34 56 78 12 34 56 78 12 34 56 78 12 34 56 78 01 00 00 FE 06

1 、 费率模式:=0 计时,=1 包月,=2 计量,=3 计次 。包月 、计次默认充满自停,计时 、计量可手动设置时长和电量。
注 2 、 余额/有效期:当费率模式为计时 、计量 、计次时,数据为余额;当费率模式为包月时,数据为有效期(时间戳)
注 3 、 充电命令=0(停止充电)=1(开始充电)设备充电与否依据此字段
注 4 、 端口号:如 0 -15 则代表第 1 路-第 16 路,FF=设备智能选择端口(服务器下发);
注 5 、 充电时长 :告知设备的充电时长 。如是 0x0000 则说明是充满自停;其他数值则按照时长充电,且充满不会自停,并且不受设置的“最大充电时间 ”限制。
注 6 、 充电电量:告知设备的充电电量 。如是 0x0000 则说明是充满自停;其他数值则按照电量充电,且充满不会自停,但受设置的“最大充电时间 ”限制。
注 7 、 订单编号设备会保存, 当充电结束时通过结算消费信息返回给服务器,服务器端自行判断是否使用。
注 8 、 最大充电时长 、最大充电功率 :动态设置此参数,如果参数为 0 表示不修改 。作为 85 指令的补充,85 指令设置完后是保存在设备存储器中,上电的时候读入到内存中 。82 指令下发的是直接修改内存中参数。
注 9 、 二维码灯:0=打开,1=关闭 。此设置是针对下一次插头插入时是否点亮二维码背光灯,保存在内存中,断电重启后就会失效。
注 10 、应答:执行开始充电命令,=0 执行成功(启动或停止充电),=1 端口未插充电器(不执行),=2 端口状态和充电命令相同(不执行),=3 端口故障(执行),=4 无此端口号(不执行),=5 有多个待充端口(响应 FF 充电命令,不执行),=6 多路设备功率超标(不执行),7=存储器损坏,8=(预检-继电器坏或保险丝断),9=(预检-继电器粘连)(执行给充电),0x0A=(预检-负载短路)。
注 11 、待充端口:当应答=5 的时候,此数据才是有效的 。按照 bit 定义各待充端口状态,0=非待充,1=待充。
注 12 、设备业务流程:充电命令=1 如执行充电则报出余额/有效期 。充电命令=0 则停止充电,此时除了端口号会忽略其他数据,如执行停止充电命令,应答完毕后会一定时间内跟一条结算消费信息。

4.2.1、服务器修改充电时长/电量(8a 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 0D 00 3B 37 AB 04 02 00 8A 00 01 80 70 96 03

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 02 00 8A 00 A2 02

1 、 原充电模式不管是何种充电模式,收到此命令后将立即转为定时/定量充电
注 2 、 费率模式:=0 定时无充满自停,=1 定时带充满自停,=2 计量带充满自停。
注 3 、 充电时长/电量:根据费率模式中的数据判断是时长还是电量 。如该值小于设备已经运行的数值,设备将立即断电,03 结算指令中断电原因为 03(达到预设时间)或 04(达到预设电量)。另:费率模式=1 时如已经过了设备判断充满自停的时间,则充满自停会失效。
注 4 、 应答:0=成功,1=此端口未在充电,2=设置值小于现运行值,3=无此费率模式/无此端口号

4.3.1、设置运行参数 1.1( 83 指令)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 应答:0=成功,1=参数错误
注 2 、 用于设置设备的运行参数,跟业务逻辑无关
注 3 、 浮充百分比为 1 -100,如 15 代表”充电功率“ 的 15%

4.3.2、设置运行参数 1.2( 84 指令)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 应答:0=成功,1=参数错误
注 2 、 用于设置设备的运行参数,跟业务逻辑无关
注 3 、 动态过载应使用智能模糊判断,具体算法见另外文件说明, 因为某些充电器功率会突然增大,导致误断电,在 20216 月份之后, 已经关闭断电功能。
注 4 、 拔出干扰功率及时间:在单位时间内功率小于拔出干扰功率,则认为用户已经拔出了充电器,断电。
注 5 、 浮充识别第二次时间点:在此时长之前则用 83 指令中的浮充参数,之后则使用浮充第二次识别时间 。如:开始充电 10800 秒之内,则需要 1800 秒判断是否进入浮充;充电 10800 秒之后,则需要 300 秒判断是否进入浮充。
注 6 、 “ 判断最小功率时间点 ”内,峰值功率一直小于“最小功率”,则断电
注 7 、 第二最大功率时间点:设置记录第二最大功率的时长,会影响 03 指令中的“第二最大功率 ”
注 8 、 环境报警温度/端口报警温度:达到此温度则直接断电,需要 30 秒的判断时间 。从 20216 月份之后, 因为误断电的原因, 已经关闭断电功能。
注 9 、 打开/关闭判断用户拔出(光耦):此功能仅适用于带插入检测功能的 10/16 路设备,相当于 AP350 的 14561456 功能
注 10 、二维码灯:0=打开,1=关闭 。此设置成功后将会一直保存,断电重启后依然有效。

4.4.1、设置最大充电时长 、最大充电功率(85 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 0D 00 3B 37 AB 04 02 00 85 A0 8C 20 4E 3A 04

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 02 00 85 00 9D 02

1 、 应答:0=成功,1=设置参数超过设备极限值 。(双路 、 多路=2000W,大功率=3500W)
注 2 、 最大充电时间:充满自停和离线启动时,均受其约束 。如服务器下发充电时长,则不受其约束。

4.4.2、设置用户卡参数(86 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 16 00 3B 37 AB 04 02 00 86 00 18 53 71 25 01 70 FF FF FF FF FF FF 80 0A

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 02 00 86 00 9E 02

1 、 用户卡密码和新卡密码,均为 16 进制
注 2 、 应答:0=成功,1=参数错误

4.4.3、复位重启设备(87 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 09 00 3B 37 AB 04 01 00 87 9D 02

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 87 00 9E 02

1 、 此命令应用于服务器复位重启设备
注 2 、 设备会尽力应答服务器,但服务器仍有可能收不到
注 3 、 应答=0 ,收到复位命令

4.4.4、存储器清零(88 指令)

服务器发送:
在这里插入图片描述

如:44 4E 59 09 00 3B 37 AB 04 01 00 88 9E 02

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 88 00 9F 02

1 、 此命令应用于设备把存储器清零—— 除了物理 ID 、虚拟 ID 、升级指令不用清零,其他的数据全部清零。
注 2 、 应答=0 ,执行成功

4.4.5、播放语音(89 指令)

此命令为保留指令, 暂时不可用

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 是否打断:0 表示不打断正在播放的语音,1 表示打断正在播放的语音,并马上播放本次语音。
注 2 、 语音长度:即后面语音组合的段数。
注 3 、 语音组合:即播放的语音组合。
注 4 、 应答:0 表示成功,1 表示失败。

4.4.6、设置设备的工作模式(8D 指令)

注: 由此功能的机型才会支持

在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 8D 00 A4 02

设备应答:
在这里插入图片描述

如:44 4E 59 0A 00 3B 37 AB 04 01 00 8D 00 A4 02

1 、 工作模式:00=联网,01=刷卡
注 2 、 应答:0=执行成功,1=设备不支持切换,其他=失败

4.8.1、设备固件升级(E0 升级分机指令)(E1 升级电源板指令)(E2 主机统一升级)(参考 01 指令中的设备类型表)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 服务器直接发送第 1 包启动升级。
注 2 、 总包数,如一个固件为 640 字节,则总包数为  640/ 200 = 3.2 = 43 、 当前包,从 1 开始,为第一包 , 当前包等于总包数时, 固件发送完毕
注 4 、 应答:0=成功,可以发送下一包;其他=错误,重新发送设备请求的当前包
注 5 、 当前包:当前成功收到的数据包

服务器注意事项:鉴于我们的经验,服务器应做重发机制,如 30 秒未收到设备的应答,应重发当前包,可做 3 次重发。

4.8.2、设备固件升级(F8 指令)

这是老版本设备使用的升级指令

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 总包数,如一个固件为 640 字节,则总包数为  640/ 256 = 2.5 = 32 、 当前包,从 1 开始,为第一包 , 当前包等于总包数时, 固件发送完毕
注 3 、 应答=0 成功,可以发送下一包;=1 错误,重新发送当前包
注 4 、 当前包:当前成功收到的数据包
注 5 、 如果 2 次重传,依然不成功,则需重新升级
注 6 、 当设备发 05 指令时,需要从第一包开始重发

4.9.1、服务器查询当前设备参数(90 、91 、92、93、94 指令)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述
服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述
服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述
服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述
服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

4.9.2、服务器读取 EEPROM 的数据(8B 指令)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 数据长度最大为 322 、 是否成功:0=成功,其他=失败

4.9.3、服务器写入 EEPROM 的数据(8C 指令)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 数据长度最大为 32,需要和 EEPROM 数据内容对应
注 2 、 是否成功:0=成功,其他=失败

4.9.4、服务器修改二维码地址(8E 指令)(最新固件才支持)

服务器发送:
在这里插入图片描述
设备应答:
在这里插入图片描述

1 、 主界面类型:0=主界面为端口状态显示,1=主界面为二维码显示。
注 2 、 保留:暂时没有用到的字节。
注 3 、 二维码数据:固定为 72 字节的 buff,实际二维码数据最大为 71 个字符,最后一个字节必需为 0x00,如二维码数据不足 71 字节必需使用 0x00 填充。
注 4 、 是否成功:0=成功,其他=失败

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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue的靓车汽车销售网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

ChatGPT在数据处理中的应用

ChatGPT在数据处理中的应用 今天的这篇文章,让我不断体会AI的强大,愿人类社会在AI的助力下走向更加灿烂辉煌的明天。 扫描下面二维码注册 ​ 数据处理是贯穿整个数据分析过程的关键步骤,主要是对数据进行各种操作,以达到最终的…

【Git】:标签功能

标签功能 一.标签操作二.推送远程标签 标签 tag ,可以简单的理解为是对某次commit的⼀个标识,相当于起了⼀个别名。例如,在项⽬发布某个版本的时候,针对最后⼀次commit起⼀个v1.0这样的标签来标识⾥程碑的意义。这有什么⽤呢&…

uniapp微信小程序解决上方刘海屏遮挡

问题 在有刘海屏的手机上,我们的文字和按钮等可能会被遮挡 应该避免这种情况 解决 const SYSTEM_INFO uni.getSystemInfoSync();export const getStatusBarHeight ()> SYSTEM_INFO.statusBarHeight || 15;export const getTitleBarHeight ()>{if(uni.get…

Ubuntu系统本地部署Inis博客结合内网穿透实现远程访问本地站点

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

统计图雷达图绘制方法

统计图雷达图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制,饼图环形图绘制较难。 还有一种雷达图的绘制也较难,今提供雷达图的绘制方法供参考。 本方法采用C语言的最基本功能: &am…

GoLand 相关

goland 下载依赖 go mod tidy:保持依赖整洁 go mod tidy 命令的作用是清理未使用的依赖,并更新 go.mod 以及 go.sum 文件。 go mod tidy 和 go mod vendor 两个命令是维护项目依赖不可或缺的工具。go mod tidy 确保了项目的 go.mod 文件精简且准确&…

精通Django模板(模板语法、继承、融合与Jinja2语法的应用指南)

模板: 基础知识: ​ 在Django框架中,模板是可以帮助开发者快速⽣成呈现给⽤户⻚⾯的⼯具模板的设计⽅式实现了我们MVT中VT的解耦(M: Model, V:View, T:Template),VT有着N:M的关系,⼀个V可以调⽤任意T,⼀个…

【Git企业实战开发】Git常用开发流操作总结

【Git企业实战开发】Git常用开发流操作总结 大家好 我是寸铁👊 总结了一篇Git常用开发流操作总结的文章✨ 喜欢的小伙伴可以点点关注 💝 现在刚做项目的伙伴,可能你之前学过git,但是一实战发现不熟悉 没关系,看寸铁这篇…

vscode与vue环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理),此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号: 配置系统变量 因为在执…

【计算机考研择校】双非跨考推荐院校名单

各个层次计算机考研院校的推荐汇总: 添加图片注释,不超过 140 字(可选) 本人双非科班出身备考408成功上岸,在这里也想给想考408的学弟学妹们一些很中肯的,学习建议。 我是科班水过408的四门课 说实话&am…

C#中的关键字params的用法

C#中有一个关键字params,它相对于一些主要关键字来说,还算是较为低频的,但也会用到。我们可以了解和学习下。 一、定义及约束 params关键字的作用在于可以让方法参数的数目可变。 params的参数类型必须是一维数组。 一旦在方法加入了para…

制造业客户数据安全解决方案(数据防泄密需求分析)

机械行业是历史悠久的工业形式,与国民经济密切相关,属于周期性行业,是我国最重要的工业制造行业之一。即使网络经济与IT信息技术在世界范围内占据主导地位,依然离不开一个发达的、先进的物质基础,而机械行业正是为生成…

Unity编辑器内工程文件重命名|Project视图文件名修改

Unity编辑器内文件重命名 前言大项内容一使用方法代码展示 总结 前言 本文代码可以一键更改Project视图的文件名字 在当前文件名的状态下增加一段字符区分文件。 大项内容一 功能是因为在给其他人导入项目资源时有重复的资源的时候,资源会产生覆盖的问题。所以直…

【前端素材】推荐优质后台管理系统Powerx平台模板(附源码)

一、需求分析 1、定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作,用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心,管理员可以通过后台系统进行各种管理…

【PyTorch][chapter 16][李宏毅深度学习][Neighbor Embedding][t-SNE]

前言: 前面LLE 讲了两个点在高维空间距离相近,通过降维后也要保持这种关系 但是如果两个点在高维空间距离很远(不属于K邻近),降维后有可能叠加在一起了. t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种降维技术&…

ubuntu20配置protobuf 2.5.0

python安装protobuf包 sudo pip2 install protobuf2.5.0github克隆获取安装包 wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz解压并进入该目录 tar -zxvf Protobuf-2.5.0.tar.gz cd protobuf-2.5.0配置安装环境 sudo …

3.测试教程 - 基础篇

文章目录 软件测试的生命周期软件测试&软件开发生命周期如何描述一个bug如何定义bug的级别bug的生命周期如何开始第一次测试测试的执行和BUG管理产生争执怎么办(处理人际关系) 大家好,我是晓星航。今天为大家带来的是 测试基础 相关的讲解…

rt-thread 目录结构

移植适配可能需要修改的部分用红色标记,蓝色表示还需继续调查,绿色会在bring up后修改

【PostgreSQL】Windows安装PostgreSQL数据库图文详细教程

Windows安装PostgreSQL数据库图文详细教程 一、前言二、PostgreSQL简介三、软件下载四、安装步骤4.1 安装向导4.2 选择安装目录4.3 选择组件4.4 选择数据存放目录4.5 选择密码4.6 选择端口号4.7 等待安装完成4.8 取消勾选,安装完成 五、启动教程5.1 搜索pgAdmin4&am…