【散热调速】目标传感器温度下降,PID调速风扇转速为何会升高

问题描述

环境调速日志如下:

2026-05-07 16:51:29之后服务器下电,MOC_FPGA_TEMP温度从74度下降到了73度,对应的风扇转速PWM值从127升高到了181,这个原因是什么呢?

2026-05-07 16:46:24.804018 DevID:0x303, Type:0, ReqId:92, T:71, TarT:72, TarPWM:117, EnvTNum:1, EnvReqId:6, EnvT:17, EnvPWM:76, PIDPWM:117, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5888
2026-05-07 16:46:24.804408 DevID:0x404, Type:0, ReqId:92, T:71, TarT:72, TarPWM:117, EnvTNum:1, EnvReqId:6, EnvT:17, EnvPWM:76, PIDPWM:117, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5888
2026-05-07 16:48:58.019265 DevID:0x101, Type:0, ReqId:92, T:74, TarT:72, TarPWM:122, EnvTNum:1, EnvReqId:6, EnvT:18, EnvPWM:76, PIDPWM:122, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5760
2026-05-07 16:48:58.019608 DevID:0x202, Type:0, ReqId:92, T:74, TarT:72, TarPWM:122, EnvTNum:1, EnvReqId:6, EnvT:18, EnvPWM:76, PIDPWM:122, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5760
2026-05-07 16:48:58.019876 DevID:0x303, Type:0, ReqId:92, T:74, TarT:72, TarPWM:122, EnvTNum:1, EnvReqId:6, EnvT:18, EnvPWM:76, PIDPWM:122, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5760
2026-05-07 16:48:58.020020 DevID:0x404, Type:0, ReqId:92, T:74, TarT:72, TarPWM:122, EnvTNum:1, EnvReqId:6, EnvT:18, EnvPWM:76, PIDPWM:122, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:5760
2026-05-07 16:51:29.272966 DevID:0x101, Type:0, ReqId:92, T:74, TarT:72, TarPWM:127, EnvTNum:1, EnvReqId:6, EnvT:20, EnvPWM:76, PIDPWM:127, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6016
2026-05-07 16:51:29.273995 DevID:0x202, Type:0, ReqId:92, T:74, TarT:72, TarPWM:127, EnvTNum:1, EnvReqId:6, EnvT:20, EnvPWM:76, PIDPWM:127, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6016
2026-05-07 16:51:29.274428 DevID:0x303, Type:0, ReqId:92, T:74, TarT:72, TarPWM:127, EnvTNum:1, EnvReqId:6, EnvT:20, EnvPWM:76, PIDPWM:127, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6016
2026-05-07 16:51:29.274796 DevID:0x404, Type:0, ReqId:92, T:74, TarT:72, TarPWM:127, EnvTNum:1, EnvReqId:6, EnvT:20, EnvPWM:76, PIDPWM:127, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6016
2026-05-07 16:53:48.595560 DevID:0x101, Type:0, ReqId:92, T:73, TarT:72, TarPWM:181, EnvTNum:0, EnvPWM:0, PIDPWM:181, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:53:48.596061 DevID:0x202, Type:0, ReqId:92, T:73, TarT:72, TarPWM:181, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:181, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:53:48.596479 DevID:0x303, Type:0, ReqId:92, T:73, TarT:72, TarPWM:181, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:181, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:53:48.597147 DevID:0x404, Type:0, ReqId:92, T:73, TarT:72, TarPWM:181, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:181, MaxAllowTemp:88, TarSensorName:MOC_FPGA_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:54:02.628747 DevID:0x101, Type:0, ReqId:7, T:26, TarT:50, TarPWM:131, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:131, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:9344
2026-05-07 16:54:02.629075 DevID:0x202, Type:0, ReqId:7, T:26, TarT:50, TarPWM:131, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:131, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:9344
2026-05-07 16:54:02.629223 DevID:0x303, Type:0, ReqId:7, T:26, TarT:50, TarPWM:131, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:131, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:9344
2026-05-07 16:54:02.629347 DevID:0x404, Type:0, ReqId:7, T:26, TarT:50, TarPWM:131, EnvTNum:1, EnvReqId:6, EnvT:21, EnvPWM:76, PIDPWM:131, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:9344
2026-05-07 16:54:38.950912 DevID:0x101, Type:0, ReqId:7, T:27, TarT:50, TarPWM:126, EnvTNum:1, EnvReqId:6, EnvT:22, EnvPWM:76, PIDPWM:126, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:54:38.951420 DevID:0x202, Type:0, ReqId:7, T:27, TarT:50, TarPWM:126, EnvTNum:1, EnvReqId:6, EnvT:22, EnvPWM:76, PIDPWM:126, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:54:38.951815 DevID:0x303, Type:0, ReqId:7, T:27, TarT:50, TarPWM:126, EnvTNum:1, EnvReqId:6, EnvT:22, EnvPWM:76, PIDPWM:126, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528
2026-05-07 16:54:38.952183 DevID:0x404, Type:0, ReqId:7, T:27, TarT:50, TarPWM:126, EnvTNum:1, EnvReqId:6, EnvT:22, EnvPWM:76, PIDPWM:126, MaxAllowTemp:60, TarSensorName:Outlet_Temp, EnvSensorName:Inlet_Temp, FrontSpeed:0, RearSpeed:6528

答案内容由AI生成,仅供参考:

:memo: 总结

风扇转速未随目标传感器温度下降而降低,并非系统故障,而是符合系统设计的动态热响应行为,主要原因包括:

  • :white_check_mark: PID积分作用导致控制输出滞后;
  • :white_check_mark: “快升慢降”控制策略优先保障散热安全性;
  • :white_check_mark: 系统仍在处理历史热积累的影响。

只要后续风扇能随温度持续下降而逐步回落(如日志所示,最终由其他调速因子接管并降速),则表明系统工作正常,无需干预

:magnifying_glass_tilted_left: 推荐关注长期稳定性而非瞬态波动,必要时可通过调整 PIDControlMode 或优化 TargetTemperatureCelsius 实现更平滑的调速曲线。

点击此处查看详细分析解答

散热调速问题分析:目标传感器温度下降,PID调速风扇转速升高的原因

根据您提供的日志信息,尽管MOC_FPGA_Temp传感器的温度从74°C下降到73°C,但风扇的PWM占空比(即控制信号)反而从127上升到181,甚至出现了更高转速(最后降至6528 RPM)。这一现象看似矛盾,但结合系统调速机制与日志序列分析,可得出合理的解释。


:magnifying_glass_tilted_left: 问题核心:风扇转速由所有调速策略的最大值决定

在该系统的热管理架构中,最终风扇转速是所有生效调速策略计算结果中的最大值。即:

最终PWM = max(目标调速PWM, 环境温度调速PWM, 异常调速PWM, 备份/满转策略等)

因此,即使某个目标传感器(如MOC_FPGA_Temp)温度下降导致其对应的调速PWM应降低,只要其他调速策略计算出更高的PWM值,风扇转速仍会升高或维持高位


:bar_chart: 日志时间线与调速行为分析

时间 事件描述 关键参数
16:48:58 MOC_FPGA_Temp升至74°C,T:74 → TarT:72 → TarPWM=122 目标调速占主导
16:51:29 温度仍为74°C,环温从18→20°C → PIDPWM=127 环境温度略有上升
16:53:48 MOC_FPGA_Temp降为73°C,TarPWM升为181 异常点出现

逐条解析:

:white_check_mark: 阶段1:16:51:29.272 — MOC_FPGA_Temp=74°C

  • T:74, TarT:72: 实际温度 > 目标温度 → 偏差+2°C
  • TarPWM:127:PID算法基于偏差计算出的期望PWM
  • EnvT:20, EnvPWM:76: 环温调速输出76,低于目标调速
  • PIDPWM:127:最终取目标调速值(TarPWM)

:right_arrow: 当前仍由 MOC_FPGA_Temp 的目标调速策略主导


:red_exclamation_mark: 阶段2:16:53:48.595 — MOC_FPGA_Temp=73°C

此时出现异常特征:

DevID:0x101, T:73, TarT:72, TarPWM:181, EnvTNum:0, EnvPWM:0, PIDPWM:181

关键异常点:

  • T:73(仅比前值低1°C),但 TarPWM 突然从127 → 181
  • EnvTNum:0, EnvPWM:0环温调速未参与 → 说明不再有环境温度曲线生效

然而,PIDPWM:181 完全等于 TarPWM,说明此时风扇速度是由 MOC_FPGA_Temp 的目标调速策略单独驱动的


:warning: 疑点解答:为何T下降,TarPWM反而上升?

核心原因:PID控制模式非单调响应,存在滞后或上升加速策略

虽然 PID 控制通常理论上是“误差越大,PWM越高”,但在实际工程实现中,为了防止振荡、超调或缓慢响应,系统常引入以下机制:

  1. :downwards_button: 积分项累积效应(Integral Windup)

    • 在温度持续高于目标值一段时间后(如从 16:4816:53,T≥74 > TarT=72),PID 的积分项(I)会持续累积正误差。
    • 即使温度稍下降(74→73),积分项尚未及时衰减,仍维持较高的输出 → 导致 TarPWM继续上升
  2. :rocket: 升速优先策略(Fast Rise PID Mode)

    • 查看搜索结果中的 CSR配置字典 可知,存在 PIDControlMode 配置项:
      • 1: 慢升快降
      • 2: 快升慢降 ← :warning: 极可能启用此模式
    • 若系统采用“快升慢降”策略,则升温时快速拉高风扇,降温时则缓慢释放,以避免温度反复波动。
    • 因此,即使温度微降,系统仍“保守”地保持甚至进一步提升PWM,以确保冷却充分。
  3. :counterclockwise_arrows_button: PID参数整定不合理或传感器延迟

    • 可能目标温度设定过近(72°C),而硬件发热惯性大。
    • 系统判断 73°C仍处于“危险边缘”,未进入稳定区,故继续加大冷却力度。

:repeat_button: 阶段3:16:54:02 — 调速策略切换至 Outlet_Temp

ReqId:7, T:26, TarT:50, TarPWM:131, PIDPWM:131

此时:

  • 调速主控权已从 MOC_FPGA_Temp (ReqId:92) 转移至 Outlet_Temp (ReqId:7)
  • 尽管 MOC_FPGA_Temp 温度下降并触发高PWM,但整机出风口温度较低(26°C),目标为50°C → 所需PWM仅131
  • 此时风扇转速回落至 9344 RPM

:right_arrow: 表明:系统检测到局部温度(MOC_FPGA)风险已解除,恢复对整体系统温度的控制逻辑。


:end_arrow: 后续结果:风扇稳定在6528 RPM

PIDPWM:126 → RearSpeed:6528

随着出风口温度上升至27°C,目标仍是50°C,所需PWM进一步微调至126,风扇稳定运行。


:white_check_mark: 最终结论:温度下降但风扇转速升高的根本原因

:red_exclamation_mark: MOC_FPGA_Temp温度下降期间,风扇转速升高是由于PID控制策略中积分项持续作用 + “快升慢降”模式导致输出PWM仍未收敛,尚未进入降温回落阶段。

:pushpin: 详细归因如下:

原因类别 说明
1. PID积分累积未释放 在T > TarT一段时间后,积分项持续累积,即使T小幅下降,也无法立即降低PWM输出。
2. 采用“快升慢降”策略(可能PIDControlMode=2) 系统倾向于快速响应升温,但缓慢响应降温,以防温度反弹。
3. 控制目标是防止过热,而非精确跟随 系统宁愿“过度冷却”也不愿冒风险,因此保持高转速以确保安全边际。
4. 无外部异常调速介入 日志未见 Add exception speed 等异常调速记录,排除告警类强制升速。

:hammer_and_wrench: 建议与验证方法

建议 操作方式
1. 检查PIDControlMode配置 执行命令查看是否设置为“快升慢降”:
lsprop CoolingRequirement_1_92 ... 或查询相关CSR配置
2. 分析完整冷却策略链 使用命令获取当前生效因子:
mdbctl call AirCoolingConfig_1 bmc.kepler.Systems.FanSnapshot GetActivatedPolicyFactors 0
确认是否有其他隐藏调速策略
3. 检查CoolingRequirement配置 确认 MOC_FPGA_Temp 对应的 CoolingRequirement 是否正确配置了:
- TargetTemperatureCelsius (72)
- MaxAllowedTemperatureCelsius (88)
- FailedValue(异常调速值)
4. 观察长时间趋势 持续观测3–5分钟,确认PWM是否最终随温度下降而回落,验证控制稳定性

:memo: 总结

风扇转速未随目标传感器温度下降而降低,并非系统故障,而是符合系统设计的动态热响应行为,主要原因包括:

  • :white_check_mark: PID积分作用导致控制输出滞后;
  • :white_check_mark: “快升慢降”控制策略优先保障散热安全性;
  • :white_check_mark: 系统仍在处理历史热积累的影响。

只要后续风扇能随温度持续下降而逐步回落(如日志所示,最终由其他调速因子接管并降速),则表明系统工作正常,无需干预

:magnifying_glass_tilted_left: 推荐关注长期稳定性而非瞬态波动,必要时可通过调整 PIDControlMode 或优化 TargetTemperatureCelsius 实现更平滑的调速曲线。

PID目标调速计算的机制是使目标点温度接近目标值,当前目标温度值为72度,而从74度开始调增加了风扇转速,虽然温度降低到了73度,但是还没到目标值,故计算时会加大风扇转速