本周推进
本周主要在H45KW储能液冷温控项目中调整循环泵控制。原来的自动控制需要保留,同时增加一个手动调速接口,方便通过Modbus软件下发指令和联调。
保留自动控制,增加手动开关
将原来通过AUTO_PUMP编译开关选择控制方式的逻辑,改成通过寄存器在运行时切换。自动算法继续计算自己的目标值,在最终下发给水泵驱动器之前,选择使用自动目标还是手动设定。
| Modbus地址(十进制) | 当前用途 |
|---|---|
| 201 | 保留原系统工作模式,例如3为水循环模式 |
| 202 | 保留原高压使能请求 |
| 203 | 手动速度设定,范围0~100%,0为停泵指令 |
| 218 | 水泵自动/手动开关,0为自动,1为手动 |
手动控制仍需满足高压、预充、故障和水泵通信等运行条件,原强制启泵流程保留优先级。自动和手动共用原有的指令下发比例,驱动器侧的换算关系继续排查。
补充初始化和异常处理
- 上电将203初始化为0、218初始化为0,默认进入自动控制,避免把通用初始化值
0x7FFF当作手动启动指令。 - 对203做0~100范围校验,手动模式下超范围值输出停泵指令。
- BMS通信超时或HMI接管时清除手动设定并退出手动,避免一直沿用旧指令。退出手动后由原自动逻辑决定是否运行。
- 关闭高压时退出手动,衔接原自动停机流程,限制停机过程中指令反而升高。
增加调试观察量
为了区分“设定了多少”和“驱动器反馈了多少”,补充了Modbus观察寄存器:95为下发指令原始值,96为驱动器返回的设定原始值,97为运行反馈原始值,98为最终选用的指令百分比,99为原自动算法的目标百分比。
这样切到手动后,仍能通过99观察TMS_dcycPumpRmp,对照自动算法本来会给出多少,而不会把手动指令写进自动算法的输出变量。
问题与解法
设定10%,反馈为什么不是10%?
调试时遇到手动设定10%,反馈先显示38、之后又到55的情况。排查时先把百分比、驱动器原始数据和机械转速rpm分开,沿着“寄存器设定→最终下发→驱动器回读→显示换算”逐段核对。
当前保留原下发公式,10%的指令对应下发原始值923。反馈侧结合电机4极对参数推导rpm换算,但驱动器原始反馈是否以0.01Hz为单位,仍缺少协议或实测依据,因此还不能确认显示的实际转速百分比准确。
检查还发现,CAN状态中的水泵状态和速度仍取自动指令。手动运行时,这部分反馈可能与最终选用的指令不一致,需要后续统一。
进、出水压力的显示口径
同时梳理了查看绝压的需求。是否需要增加大气压偏移,要先核实传感器和采集链路输出的是表压还是绝压,避免重复补偿。这一项仍待进一步确认。
当前验证进度
相关C文件的语法检查通过,自动/手动切换、手动停泵、非法输入、断线退出、HMI接管和高压停机等9组控制逻辑模拟检查通过。
这些检查覆盖的是软件控制逻辑,尚未完成实机验证。实际转速与设定百分比的对应关系,以及现场切换和停机的表现,还需要继续联调。
输入与收获
TMS_dcycPumpRmp是自动算法计算的指令百分比,不能直接当成驱动器反馈的实际rpm。- 自动目标、最终选用的指令、驱动器原始反馈和显示值,是四个不同的观察量。把它们分别读出来,才能判断问题发生在哪一步。
- 这次仍以应用层需求调整为主,但已经把Modbus设定到水泵指令下发、再到反馈显示的链路梳理了一遍。接下来可以沿着这条链路继续看通信实现。
下周计划
- 实机验证自动切手动、手动0%停泵、10%和20%调速,以及切回自动。
- 同步记录95~99和实际转速显示,核实驱动器原始反馈单位与换算比例。
- 核对CAN水泵状态字段的含义,统一手动模式下的反馈来源。
- 确认进、出水压力传感器的压力基准,再决定是否增加大气压补偿。
- 从水泵的一条Modbus读写链路入手,继续看应用变量如何进入通信报文。