-
图文详情
-
产品属性
-
相关推荐
一、概述
KC1000是金凯博专为蓄电池监控领域开发的新产品。本系统具有测量高、测试速度快、运行稳定可靠、易于操作维护等优点。本系统配置灵活、定制性强,可广泛适用于通讯、电力以及UPS后备蓄电池的监控等各个方面。
二、系统介绍
一套KC1000电池监控系统包含上位机管理软件和多条K-BUS通信控制总线。每条K-BUS包含一个通讯转换器(KC1000A)和不多于254个监控探头(KC1000B)。
系统连接
1—待测电池
2— KC1000B电池监控探头
3—KC1000A通讯转换器
4—通讯总线
将KC1000B通过K-BUS通讯总线串行连接到通讯转换器KC1000A上,再通过KC1000A的RS232或RS485与上位机相连。本系统不从电池取电,确保测量和电池的安全性。
2.2 通讯转换器KC1000A
通讯转换器KC1000A将K-BUS通讯信号转换为上位机能够识别的RS232或RS485,一个转换器多可接入254个电池监控探头(KC1000B)。通讯转换器KC1000A有自己的电源系统,并且为总线上的所有测试探头供电。
2.3 电池监控探头KC1000B
电池监控探头KC1000B实现对蓄电池电参数(电压、内阻)和外壳温度的监控测量,并通过K-BUS传送到上位机。KC1000B工作于从状态,被动接受外部命令,并执行相应测量动作。可根据运行指示灯的闪动频率来判断系统运行状态。
亮 | 灭 | 状态 |
2s | 2s | 没有ID(灯闪很慢) |
0.5s | 0.5s | 正常运行(灯闪速普通) |
0.2s | 0.2s | 电压或者温度不正常(灯闪非常频繁,紧急状态) |
2.3.1 KC1000B功能特点
■ KC1000B可同时监控多种电池指标包括电池电压,电池内阻和电池温度(选配)
■ 具有外部通讯接口,可通过K-BUS通讯总线连接主控设备(本产品为从设备)
■ 多可将254个KC1000B接入同一K-BUS,每一个探头具有ID号
■ KC1000B不从电池上取电保证测量度和系统安全性
注:KC1000B不分析测量数据。
2.3.2 KC1000B校准
校准的数据格式如下:
$$ + id + 类型(V/T/t/N) + 空格(1个) + 实际值 + #
所有参数校正都需要两次,下面分别说明:
a>:电压校正:$$ 001V1 8.0 #
$$ | 001 | V | 1 | 空格(1个) | 8.0 | # |
帧头 | 模块Id | 电压(大写) | 编号 |
| 实际电压 | 结束符 |
b>:热端温度校正:$$255T2 1.620#
$$ | 255 | T | 2 | 空格(1个) | 1.620 | # |
帧头 | 对网内所有ID | 热端温度(大写) | 编号 |
| 实际电压(MV) | 结束符 |
c>:冷端温度校正:$$255t2 30.1#
$$ | 255 | t | 2 | 空格(1个) | 30.1 | # |
帧头 | 对网内所有ID | 冷端温度 | 编号 |
| 实际温度(摄氏度) | 结束符 |
d>:内阻校正:$$255N2 20#
$$ | 255 | N | 2 | 空格(1个) | 20 | # |
帧头 | 对网内所有ID | 内阻 | 编号 |
| 实际内阻(m欧) | 结束符 |
说明:
若校正的时候使用一对一的校正方式,则id必须为被校正模块的ID号,每个模块收到命令后,都会返回执行结果,非255且不是自己id的校正数据,模块会附上自己的”id err!”字样,否则返回”id OK!”,
若需要校正使用1对多,如网内连接了200个模块,同时接了10v电压,校正电压的时候,id请设置为255,校正所有模块,模块也会如上面一样返回执行结果。
校正格式如上表,对于每个参数校正,除了冷端温度外,其他的都需要使用两个实际值进行校正,如电压,次用8v,第二次用3v完整校正过程。其他T/N同样方式。举例如下:
电压校正:
$$ 001V1 8.0 #
$$ 001V2 3.0 #
热端温度校正:
$$255T1 1.620#
$$255T2 0.6#
内阻校正:
$$255T1 1#
$$255T2 250#
2.3.3 KC1000B指标
項目 | 范围 | (温度系数0.015%/℃) |
电压 | -2V~20V | 0.5% |
温度 | -20℃~85℃ | ±2℃ |
内阻 | 0.05m ~250mΩ | 测量重复性±2% |
三、K-BUS通讯协议
主从控制模式:所有电池监控探头(KC1000B)均为从机,上位机可通过广播、点播指令发送测量命令并读取测量结果。
3.1请求帧格式
3.1.1命令结构
每条命令由3字节组成
Byte 1 | Byte 2 | Byte 3 |
地址/ID号 | 指令 | 校验和 |
注:a、首先传送的是byte1;
b、校验和是用3个字节连续异或产生的。
3.1.2命令各部分解释
1)byte 1 : 地址/ID号
总线上多可以连接254个模块,每个模块都被指派总线地址/ID号。这个字节指定了命令的目的地址(目标单元ID)。
各地址分配如下:
字节1值 | 意义 |
0x00 | 发送给单元#0的命令;所有单元出厂时的默认ID均为0 |
0x01 … … 0xFE | 发送给单元#1的命令 … … 发送给单元#254的命令 |
0xFF | 发送给所有单元(广播模式)的命令;仅适用于特定指令 |
2)字节2:指令
这个字节指定了对应地址单元要执行的操作。
基本指令集:
字节2值 | 意义 |
0x40 | 测量电压并存储测量值 |
0x41 | 测量温度并存储测量值 |
0x42 | 测量内阻并存储测量值 |
|
|
0x20 | 传送存储的电压值 |
0x21 | 传送存储的温度值 |
0x22 | 传送存储的内阻值 |
|
|
0x60 | 测量并传送电压(+存储) |
0x61 | 测量并传送温度(+存储) |
0x62 | 测量并传送阻抗(+存储) |
|
|
0xA0 | 指派ID |
0xFF | 软启动 |
|
|
0x00 .. 0xFF | 其他动作或传送数据
|
注:为简单起见,上表中并不是所有指令,只是一些基本指令。
3)字节3:校验和
对字节1和字节2进行‘逐位异或’生成校验和。模块必须通过对数据包内的前两个字节逐位异或来确认这种校验字节的完整性。
3.1.3 提示
1)可以同时向总线上的所有KC1000A(ID=0xFF)发送测量电压或温度指令(0x40或0x41)。这样很快就能分别从每个单元收集测量值。这种方式非常有效和有用,当电池系统正在放电时,它可以‘快照’全部电池状态。不能采用广播模式发送测量阻抗指令(0x42)。此类带整体ID的命令会被忽略。
2) 发送测量命令后不必立即发送传送命令。KC1000A会存储测量值直到收到传送请求。
3) 对于电压和温度测量命令,正如KC1000A开展的测量本身一样,在短时间(小于 10 ms)内完成,因此任何新收到的测量命令都将被存储起来,待上一命令一完成后执行。
4)阻抗测量从收到指令开始算起需要6 s完成。在此期间,建议不要与总线上的任何单元通信。正在测量阻抗时,任何新收到的测量命令都会终止当前正在进行的事务,执行新命令。在对同一KC1000A单元两次发送阻抗测试间隔必须大于10分钟。此外,如果出现以下2种情况中的任何一种,应该避免阻抗测量:电压大于14.4V(高电压范围)或低于2.5V(低电压范围);温度高于120°F(49°C)。实际上,每天阻抗测量已经足够,因为这种参数不会迅速改变,此外,阻抗测量会导致局部温度升高(所以任何在测量阻抗后马上进行的温度测量都没有意义)。此外还建议不要在电池放电后48小时以内开展任何阻抗测量,因为这样得到的值不准确。
3.2应答帧
3.2.1 命令格式
模块传送的任何响应均是4字节包,大端格式(MSB优先):
字节1 | 字节2 | 字节3 | 字节4 |
地址/ID | 数据A(MSB) | 数据B(LSB) | 校验和 |
3.2.2命令各部分解释
1)字节1 :地址/ID
单元回答总是自身ID在前。
字节1值 意义
0x00
..
..
0xFE
来自单元#0的响应(提示:所有单元出厂时的默认ID均为0)
..
..
来自单元#254的响应
2)字节2、3 :数据A、B
该响应还包括对应测量参数(V、T或Z)的纯数据返回,或者发送给主控设备的信息。
数据A的第7位为标志位,用它表示以下状态:
CLEAR:数据包包含测量信息
SET: 数据包包含状态信息
注意:返回数据的格式为IEEE754无符号半浮点型,因为不请求负值。它包括:1个标志位,4个指数位(Exp),11个尾数位(man)。
2个数据字节的15个位组合如下:
数据A(字节2)
数据B(字节 3) | bit 7(MSB) | 整体标志 |
bit 6 | Exp #3(MSB) | |
bit 5 | Exp #2 | |
bit 4 | Exp #1 | |
bit 3 | Exp #0(LSB) | |
bit 2 bit 1 bit 0 | Man #10:2^(-1)(MSB) Man #9:2^(-2) Man #8:2^(-3) | |
bit 7(MSB) bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 | Man #7:2^(-4) Man #6:2^(-5) Man #5:2^(-6) Man #4:2^(-7) Man #3:2^(-8) Man #2:2^(-9) Man #1:2^(-10) Man #0:2^(-11)(LSB) |
数据解码法
指数是一个整数,范围 = 0 - 15 (0000,1111)
尾数是一个二进制小数,范围 = 0.0 - <1.0 (0....0,1....1)
Man #10为MSB,值为2^(-1)
…
Man #0为LSB,值为2^(-11)
当 1 指数14 时:值=2^(Exp-7)*1.Man
当 指数 = 0 且尾数 0 时: 值=2^(Exp-6)*0.Man
当 指数 = 0 且尾数 = 0 时: 值=0
当 指数 = 15 且尾数 = 0 时: 值=“无穷”
当 指数 = 15 且尾数 0 时: 值=“NaN”(不是一个数)
因此,小值是0,值是255,9375
模块采用的测量单位为:
电压值:伏(V)
温度值:华氏度(F)
阻抗值:毫欧(mΩ)
下面列举了一些解码值:
参数 | 数据A,数据B | 标志,指数,尾数 | 值 |
电压 | 0x55,0xA0 | 0 1010 10110100000 | 13.625 V |
电压 | 0x41,0x00 | 0 1000 00100000000 | 2.25 V |
温度 | 0x69,0xD0 | 0 1101 00111010000 | 78.5 °F |
阻抗 | 0x3C,0x80 | 0 0111 10000000000 | 1.5625 mO |
模块单元传送的“无穷”值表示溢出测量,“NaN”值表示非常不的测量——如温度或电压过高时测得的阻抗值、以及距离上次阻抗测量不到10分钟测得的新阻抗值。
收到测量命令时,模块单元不确认该命令。
收到传送命令时,模块单元传送存储的后指定的测量值,这个值会一直保留,直到进行同一参数的新测量。
收到测量传送命令时,模块单元进行测量并传送测量值。
当响应仅包括发送给控制器的状态信息而不包含测量值时,数据格式总是2个字节,以首字节的MSB位7为标志,SET及任何未用位被清除为0。
3) 字节4:校验和
对字节1、字节2 和字节3‘逐位异或’生成校验和。控制器必须通过对数据包内的前3个字节逐位异或来确认这种校验字节的完整性。
3.2.3 示例
- SEND ID(发送ID):0xA0,0x00
提醒主控设备指派ID命令。表示该单元请求发送新ID。
- ID CHANGED(ID变更):0xC0, 0xID
主控设备听从发送新ID的响应。新ID必须包含于响应内。具体来说,在发送响应前,ID不会从旧的变成新的。
- TRANSMIT twice(传送2次):0x90, 0x00
如果单元确定它相继接收到2次传送命令(同一测量类型),它不返回同一值,而是返回一个带标志set的状态值(0x90 0x00),以向主控设备表明已经完成过传送。
- “READY” announcement(“准备就绪”宣告):0x80, 0xSW
成功启动后,单元发出“READY(准备就绪)”宣告。注意:此时,系统控制器必须为监听模式。这只是对总线的未经请求的传送,允许和要求单元这样做。
其目的是向OCS发送确认消息,表明单元已经复位,以及在系统安装阶段,向OCS发送信号提醒总线上出现新单元。
发布准备就绪宣告的条件(需要符合以下条件之一):
a, 保存在非易失性存储器内的ID注册值为0表示该单元未使用过/未被指派过;
b, RESET标志的状态为有效表示OCS请求复位。一旦接收到复位命令,模块单元就会在执行软复位之前做RESET(复位)标志。完成READY(准备就绪)宣告后,该标志变成无效的;
c, READY(准备就绪)宣告包括软件版本号、SW,代码如下:
bits <4..0> = SWMin4 .. SWMin0:revision minor part(Min)
bits <7..5> = SWMaj2 .. SWMaj0:revision major part(Maj)
那么软件版本号为“Maj.Min”,例如:
0x2a = 表示 1.10;0x2b = 表示 1.11。
四、上位机使用说明
上位机软件实现了整个系统的控制和测量结果分析功能。可实现对多条K-BUS总线的控制。上位机软件支持通过RS232、RS485、LAN、GPRS等多种接口实现系统通信功能。具体功能请参阅上位机软件使用手册。