18650/三元锂电池组保护板
MODBUS
通 信 规 约
1.物理接口
RS485波特率为9600BPS,字符格式采用8位数据位,1位停止位,无校验。 2.帧结构 8Bit地址 8Bit功能码 nX8Bit数据 16BitCRC校验码 采用Modbus规约的RTU(Remote Terminal Unit)方式。 功能码
支持功能码03(读数据),06(写状态)。 CRC校验码
CRC(Cyclical Redundancy Check)对地址,功能码和数据进行校验,由两字节组成,CRC由传输设备生成,附加在数据帧中,如果由接收到数据计算出来的校验和与附加在数据后的校验和不一致,则有错误发生。关于CRC生成函数,请参阅附录B内容。
3. 命令解释(支持功能码03) 3.1 查询数据,功能码03 查询命令帧格式
Field Name Slave Address Function Starting Address Hi Starting Address Lo No. of Points Hi No. of Points Lo CRCLO CRCHI
从机响应帧格式
Example (HEX) Address 03 00 01 00 02 Description 地址可设定,请参照说明 功能码3 起始寄存器高字节 起始寄存器低字节,起始地址1 读取寄存器个数高字节 读取寄存器个数低字节,读两个寄存器值 CRC低字节 CRC高字节 Field Name Slave Address Function Byte Count Data Hi Data Lo Data Hi Data Lo CRCLO CRCHI 写入命令帧格式
Field Name Slave Address Function Starting Address Hi Starting Address Lo Data Hi Data Lo CRCLO CRCHI
从机响应帧格式(返回原值)
Field Name Slave Address Function Starting Address Hi Starting Address Lo Data Hi Data Lo CRCLO CRCHI
附录A寄存器数据地址定义
Example (HEX) Address 0x03 0x 04 0x 01 0x 2B 0x 01 0x 11 Description 地址可设定,请参照说明 功能码3 返回字节数 第1个数据高位值 第1个数据低位值 第2个数据高位值 第2个数据低位值 CRC低字节 CRC高字节 3.2 写入数据,功能码06,目前只支持写MOS管状态(55=0x37)
Example (HEX) Address 0x 06 0x 00 0x 37 0x 00 0x xx Description 地址可设定,请参照说明 功能码6 寄存器高字节 寄存器低字节 具体见寄存器下面说明 CRC低字节 CRC高字节 Example (HEX) Address 0x 06 0x 00 0x 37 0x 00 xx Description 地址可设定,请参照说明 功能码6 具体见寄存器下面说明 CRC低字节 CRC高字节 数据类型 模拟量AI AI量地址定义
地址 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 地址范围 0~40 信号名称 单体过压 释放电压 单体欠压 释放电压 整组过压 释放电压 整组欠压 释放电压 充电高温 释放温度 充电低温 释放温度 放电高温 释放温度 放电低温 释放温度 充电过流 放电过流 总电压 充放电流 剩余容量 1号电池电压 2号电池电压 3号电池电压 4号电池电压 5号电池电压 6号电池电压 7号电池电压 8号电池电压 9号电池电压 10号电池电压 11号电池电压 12号电池电压 13号电池电压 14号电池电压 15号电池电压 16号电池电压 17号电池电压 18号电池电压 19号电池电压 20号电池电压 说明 单位是mV,单节过压保护值,单体最高大于该值则发生保护,关闭充电MOS 单位是mV,单体过压保护状态解除电压 单位是mV,单节欠压保护值,最低单体小于于该值则发生保护,关闭放电MOS 单位是mV, 单体欠压压保护状态解除电压 单位是10mV,原因见注1,整组过压设置值 单位是10mV,原因见注1、整组过压释放值 单位是10mV,原因见注1、整组欠压设置值 单位是10mV,原因见注1、整组欠压释放值 单位为0.1k,见注2,充电高温保护设置值 单位为0.1k,见注2、充电高温保护释放值 单位为0.1k,见注2、充电低温保护设置值 单位为0.1k,见注2、充电低温保护释放值 单位为0.1k,见注2、放电高温保护设置值 单位为0.1k,见注2、放电高温保护释放值 单位为0.1k,见注2、放电低温保护设置值 单位为0.1k,见注2、放电低温保护解除温度值 单位10mA,见注3、充电过流保护值 单位10mA,见注3、放电过流保护值 单位10mV,见注1、整组实际电压 单位10mA,见注3 单位10mAh,见注4 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 21号电池电压 22号电池电压 23号电池电压 24号电池电压 25号电池电压 26号电池电压 27号电池电压 28号电池电压 29号电池电压 30号电池电压 电池温度1 电池温度2 标称容量 RSOC FET状态 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位mV 单位为0.1k,见注2 单位为0.1k,见注2 单位10mAh,见注4 高字节预留,低字节表示剩余容量百分比1就表示1%,最大100。 高字节预留,低字节用来表示MOS,bit0表示充电,bit1表示放电,该字节支持读写功能,如果写入该值则为1是关闭,为0是打开,具体见注5. 注1:整组电压单位采用10mV原因:因为2个字节最大为65535,如果单位为mV,当电池串数为16串时,有可能超过65535mV,所以采用10mV为单位发送,最大就会支持655.35V的整组电压
注2:单位为0.1k,具体计算方式如下:(发送值 – 2731)/10 = 实际温度,即0℃时,发送值为2731,25℃时发送值为 250 + 2731 = 2981;-10℃时发送值为 : -100 +2731 = 2631;
注3:电流单位采用10mA,带符号位,充电为正,放电为负;也是因为会存在电流会存在超出32767mA的范围,所以采用10mA的单位,最大支持范围为327.67A,比如充电电流为10A,则发送值为1000;如放电电流为10A ,实际发送值为65535 – 1000 = 64535;
注4:剩余容量单位采用10mAh也是因为数据最大为65535,如果单位为mAh,最大只支持65.535Ah,会存在超出范围,则所以单位都采用10mAh,这样最大会支持655.35Ah。
注5:55寄存器直接读写功能:
读功能:查询时,当最低字节的低2位表示MOS的开关状态,bit0为充电,bit1为放电,其他预留,比如当查询到0x03则表示充放电都是打开的,可以进行充放电,当查询到为0x02表示充电MOS关闭,放电是打开,该状态下无法充电。 写功能:当对该寄存器写0x03则表示把软件把充放电都强制关闭; 当写0x02则表示关闭放电管,取消软件关闭充电管;