BMC的风扇控制算一个蛮重要的功能,那这个功能包含了"TACH"和"PWM"这两个常用讯号怎么解读,还有最常用的控制演算法"PID(closed loop)"和"Stepwise(openloop)",而Error control ,因为每家做法不同,就不会在这边作介绍
##实作代码是来自Facebook的openBMC
Why and how to do fan speed control ?
在服务器中的风扇是非常高速也耗电的,根据统计在数据中心的运维成本上,电费占了7成,并且如果让风扇长期处在全转状态也会有噪音和耗损度的问题。
目前CPU可以达到单一耗电量200W以上,伴随而来的高热也会使个晶片老化速度加快,当然服務器中的SSD, NIC card, E1.S等装置也是有同样的情况,因此我们希望能根据这些高热的元件温度来决定风扇的转速,达到省电和正常运作的效果
风扇控制的做法如下:
- Thermal team(热流部门) 通常会提供一个fan table,里面会详细描述风扇要怎么转
- BMC (controller) 会透过PWM讯号去设定风扇转速
- 风扇也能透过TACH讯号来回传目前的转速

PWM(Pulse-Width Modulation)
PWM是透过平均电压来传递类比讯号,简单来说就是在一个cycle中,高电为占百分之多少,就表示他要传递的值是多少
例如在一个周期中,如果高电位占25%,低电位占75%,这样表示我们要传递的值是25%,风扇就会转25%
那如果今天我们都一直是high (高电位),这样风扇就会全转,因此在线路图的review过程中,都会注意PWM有没有pull high,避免在BMC更新过程或是死掉后,机器过热
那每个周期的时间是多少呢? PWM的传递频率会定义在风扇的spec中,每一颗风扇的接收频率有可能会不一样

TACH (Tachometer)
我们可以透过Tach来传递风扇的转速,有修过机械方面的课程就会知道,马达会有n个机械原点,传一圈的话会产生n个pulse,一圈会产生几个pulse也是定义在风扇的spec中
假如今天风扇转一圈会产生两个pulse,我们在一秒内收到1000个pulse,这样表示风扇一秒转了500圈,风扇转速是用rpm(一分钟转几圈)表示的,因此500*60 rpm就是我们要求的值
TACH的讯号大概就长得像底下这样,只要统计一秒钟有几个讯号,就能得到风扇的转速
System Control
在传统控制(Classical Control )理论中,通常会用有没有feedback 来区分open loop control 和 closed loop control,前者通常就是我们常说的stepwise,后者就是工业控制中广泛使用的PID control,他们的示意图如下,接下来会分别介绍这两个算法的的内容

Open loop control 演算法 (Stepwise)
Open loop,会根据input来直接求出output并输出,不会参考feedback或任何的actuatin

本文介绍了服务器风扇控制的重要性和基本原理,包括PWM信号用于设定风扇转速,TACH信号用于反馈风扇实际转速。重点讲述了PID控制算法,通过比例、积分和微分三个部分调整风扇转速,以保持系统温度稳定。同时提到了Stepwise控制作为对比,以及在实际应用中防止过热和过度冷却的策略。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



