跳转到内容

开放标准/多功能交流电池/数据规范

来自维基教科书,开放世界中的开放书籍

此部分描述了从控制头到交流电池组以及反之的数据传输。

数据格式

[编辑 | 编辑源代码]

数据传输仅为单向,但通过所有电池组进行链式传输。因此,可以在链中轻松地寻址 1..10 个电池组,而无需区分地址。

数据传输始终由主控制单元发起。它将数据发送到第一个电池组。然后,第一个电池组将数据发送到下一个电池组,依此类推。最后一个电池组将数据返回到主控制单元。

应该可以使用简单的微控制器激活交流电池组。因此,传输应通过 UART 接口完成。

逻辑电平:0V = 隐性电平,显性电平为 3..3,5V,最大电流为 10mA。

通信速度:125kHz(1MHz 的分数)

数据格式:8 位 LSB 优先,偶校验,1 个起始位,2 个停止位。每个帧都包含一个校验和,该校验和是对字节进行 mod256 求和,并对位进行反转。

数据传输

[编辑 | 编辑源代码]

数据传输分为三组:主控到所有,主控到专用电池组,以及电池组到主控。


主控到所有

[编辑 | 编辑源代码]

如果主控要将数据发送到所有电池组,则使用此方法。

主控发送一个报头来传达数据的含义。然后会传输一个或多个数据字节(参见表格)。在所有数据字节之后,添加一个校验和(对字节进行 mod256 求和并反转位)。然后会进行至少 2 个字节的断开,以信号传达传输的结束(如果无法从报头中获取长度)。

电池组仅将此消息转发到下一个电池组,无需修改。

主控到所有消息

[编辑 | 编辑源代码]

报头 0x02:平均电流对于电池管理非常重要,因为交流电池组没有自己的电流传感器。此消息必须至少每秒发送一次。

报头 数据字节 含义
0x02 2 个短整型 流过的平均电流。-512A..0A..+511A,分辨率为 15.625mA/增量
0x0D 32 字节字符串 将当前用户标识写入非易失性存储器
0x10
0x23 1 个字节 紧急停机。数据内容:0xFA
0x3E
0x46

写入链式数据

[编辑 | 编辑源代码]

此方法用于将不同的数据写入电池组。

主控发送一个报头来传达数据的含义。然后会传输多个针对所有电池组的数据字节(含义:参见表格)。第一个电池组在报头之后直接从主控接收其相关数据。然后,它将报头和下一个数据(不包括自身相关数据)转发到第二个电池组,并生成一个新的正确校验和。每个电池组的消息都会缩短。如果字节数正确,则仅将报头和校验和返回到主控。




写入链式数据消息

[编辑 | 编辑源代码]
报头 数据字节 含义
0x5B 每个开关电池 1 个 设置电池旁路的放电限值。0...250 增量 = 0..100%,分辨率为 0.4%/增量。251...255 = 电池旁路
0x68 每个开关电池 1 个 设置电池旁路的充电限值。0...250 增量 = 0..100%,分辨率为 0.4%/增量。251...255 = 电池旁路
0x75
0x8A
0x97
0xA4


通过设置限值,可以覆盖内置的电池管理,并通过控制头对其进行优化。通常,例如在放电模式下,放电电池会失效且不再使用。因此,可能的输出电压会下降。电池管理可以按时禁用(旁路)最空的电池,以便所有电池都具有相同的剩余电量。相同的办法也可以用于充电。

读取链式数据

[编辑 | 编辑源代码]

此方法用于从电池组读取不同的数据。

主控发送一个报头来传达请求数据的含义,以及一个校验和。第一个电池组添加请求的数据,并将报头、其数据和一个新的校验和转发到第二个电池组。下一个电池组也附加其数据,依此类推。在最后一个电池组之后,主控会接收链中所有电池组的数据。使用此方法,可以了解链中包含多少个电池组以及它们包含多少个开关电池。





读取链式数据消息

[编辑 | 编辑源代码]
报头 数据字节 含义
0xB9 每个开关电池 1 个 读取当前容量。0...250 增量 = 0..100%,分辨率为 0.4%/增量。251...255 = 电池缺陷。
0xC1 每个电池组 2 个整型 读取电池组的电流限值。0..511A,分辨率为 15,625mA/增量(可能取决于温度)
0xDC 每个电池组 3 个字节 读取温度:最小工作温度、实际温度、最大工作温度。比例:0...250 = -50..+200 °C,251...255:N/A。
0xEF 每个电池组 32 字节字符串 读取供应商名称(用于租赁管理)
0xF2 每个电池组 32 字节字符串 读取用户标识(用于租赁管理)
0xFD 每个电池组 32 字节字符串 读取序列号和类型
华夏公益教科书