JK BMS 发送失败(Sending failure):原因与逐步解决方法
JK BMS 的发送失败错误 "This parameter does not apply to the connected device. (Sending failure)"(此参数不适用于所连接的设备,发送失败),意思是固件拒绝了某一个数值。这不是蓝牙问题。BMS 会把每个数值和它当前保存的设置进行比较,任何违反其内部规则的数值都会被拒绝。
大多数情况下,原因是以下四种之一:电压顺序链被打破、写入顺序不对、数值超出当前固件允许的范围,或者充电计时超过 18.2 h。这四种问题都可以在导入之前从文件中找出来。
为什么会出现 JK BMS 发送失败
JK app 不会一次性发送整个文件,而是逐项写入设置。每次写入都会和 BMS 当时保存的数值比较,而不是和你文件中的数值比较。所以一个文件即使最终状态完全正确,也可能在中途失败。
错误提示是通用的,不会告诉你是哪个参数出了问题。这也是为什么很多人搜索“jk bms 单体过压 发送失败”或“jk bms 设置保存不了”,却找不到明确答案。
原因一:电压顺序链不是严格递增
固件要求单体电压满足两条有序的链。每个“小于”都是严格小于,相等的数值同样会被拒绝。
| 顺序链 | 含义 |
|---|---|
| 单体过压恢复 < SOC-100% 电压 < 请求充电电压(RCV) | SOC-100% 必须介于过压恢复和请求充电电压之间 |
| 单体欠压保护 < SOC-0% 电压 < 单体欠压恢复 | SOC-0% 必须介于欠压保护和欠压恢复之间 |
其他成对参数也遵循同样的严格规则:单体过压恢复必须低于单体过压保护,单体欠压恢复必须高于单体欠压保护,请求浮充电压(RFV)必须低于 RCV,RCV 必须低于单体过压保护。温度恢复值也必须位于对应保护值的安全一侧。
一个常见的陷阱是把 SOC-100% 电压设成和 RCV 相同,例如都设为 3.55 V。看上去没问题,但固件会拒绝。把其中一个调整 0.01 V 即可。
这些顺序链规则已在一台运行 19.26 固件的 JK PB2A16S20P 实机上验证。其他型号可能更严格或更宽松,请把它们当作最低要求。
原因二:写入顺序越过了现有数值
假设你的 BMS 当前保存的是单体过压恢复 3.40 V、SOC-100% 电压 3.45 V、RCV 3.50 V。你想改成 OVPR 3.50 V、SOC-100% 3.55 V、RCV 3.60 V。最终这组数值是有效的。
如果 app 先写入过压恢复,BMS 会把 3.50 V 和它仍然保存的 SOC-100% 电压 3.45 V 比较。此时顺序链被打破,写入失败。如果先提高 SOC-100% 电压同样会失败,因为它会超过当前 3.50 V 的 RCV。唯一安全的办法是把修改拆成几个步骤。
我们无法确定 app 实际使用的写入顺序,所以编辑器规划的步骤在任何顺序下都是安全的。只有当两项修改无论谁先写入都不会互相违反规则时,编辑器才会把它们放在同一步骤里。
在浏览器中通过蓝牙写入就不用再猜了。编辑器自己发送这些步骤,逐项写入设置,每一步之后回读 BMS,并在第一个被拒绝的数值处停止,同时指出它的名称。
原因三:数值超出固件范围
有些字段在不同固件上保存的数值不同。最典型的是短路保护延时。V15 固件的文件里保存的是 1500 µs 这样的数值,而 V19 及更新的固件保存的是一个很小的数(默认 5),大于 50 的值都会被拒绝。一台 19.26 固件的 PB2A16S20P 会拒绝带有 1500 的文件。
如果你把旧设备导出的文件导入到新设备,请先检查这个字段。稳妥的做法是保留设备当前的延时,或者直接在 JK app 中设置,而不是通过文件写入。短路保护相关字段见 JK BMS 过流保护设置。
原因四:充电计时超过 18.2 h
RCV 时间和 RFV 时间字段接受 0 至 18.2 h。它们以秒为单位存储在 16 位数值中,所以无法写入更大的数。如果论坛上的预设使用了更长的计时,请降到 18.2 h 或以下。
逐步解决方法
在 Chrome 或 Edge 中,最快的办法是跳过导入:在编辑器中连接 BMS,完成修改后点击“写入 BMS”。编辑器会规划顺序,写入并校验每一步。如果你的浏览器不支持 Web Bluetooth,请使用文件方式:
- 在 JK app 中导出 BMS 当前的设置。这就是你的 BMS 现在保存的文件。
- 在 JK Preset Studio 编辑器 中打开它。文件不会上传,始终保留在你的浏览器中。
- 进行修改,或者加载你之前尝试导入的文件。
- 查看校验错误。每条错误都会指出该字段以及与之冲突的另一个字段。修正顺序链,直到没有错误为止。
- 打开下载对话框。如果你的修改需要多个写入步骤,它会为每个步骤提供一个文件。
- 按顺序导入这些步骤文件。每个步骤文件都包含之前步骤的修改,最后一个文件包含全部修改。等每次导入完成后再进行下一次。
编辑器只修改你改动过的字段,并重新计算校验和,所以文件中的未知字节会原样保留。文件本身的处理方法见 JK BMS 设置的导出与导入。
常见错误
- 把两个有顺序关系的数值设成相同的数。
- 在同一次导入中同时修改单体过压保护和 SOC 电压点,却没有检查顺序。
- 从其他型号或其他固件复制文件后原样导入。
- 以为是蓝牙问题,把手机靠得更近。其实 BMS 已经回应了,只是拒绝了。
详细日志会显示 BMS 实际执行的是什么。把日志加载到日志分析页,查看各项保护触发时的电压,再与你文件中的数值对比。如果触发电压与文件不一致,说明导入并没有生效。JK BMS 详细日志指南介绍了如何阅读它,单体过充保护为何反复触发则讲解了最常见的一种触发。
常见问题
所有 JK BMS 型号都会出现发送失败吗?
不是。这取决于固件以及其检查的严格程度。本文的规则已在 19.26 固件的 PB2A16S20P 上确认。旧固件可能接受新固件会拒绝的数值。
这是蓝牙问题吗?
不是。这条提示是 BMS 返回的,说明连接是正常的。真正的连接问题表现为超时或断开,而不是明确拒绝某一个参数。编辑器通过蓝牙写入时,会以结果代码的形式收到同样的拒绝,并指出是哪项设置。
为什么同一个文件在另一台 BMS 上可以用?
另一台 BMS 当前保存的数值很可能不同,所以同样的写入顺序不会越过任何顺序链。它的固件也可能接受你的固件不接受的范围,例如短路保护延时。
为什么我的 JK BMS 没有保存文件中的设置?
如果只有部分设置生效,说明导入在第一个被拒绝的数值处停止了。修正顺序链后重新导入,并在每个步骤之后在 app 中检查数值。每个参数的含义见 参数手册 和 参数详解。
连接你的 BMS 或打开你的 .jkcfg,在编辑器中检查顺序链,并按安全顺序写入修改。