local function calculate_fan_power(speed_range, power_range, pwm_percent)
local len_speed_range = #speed_range
local len_power_range = #power_range
– SpeedRange和PowerRange长度必须相等,且长度至少大于等于2
– 原因:
– 例如:SpeedRange: 0, 20, 30, 40, 50, 60, 70, 80, 90, 100
– PowerRange: 192, 192, 276, 396, 564, 828, 1176, 1632, 2160, 2700
– 若数组长度为1,则无法计算对应功耗值,长度大于等于2时通过斜率计算
if len_speed_range ~= len_power_range or len_speed_range < 2 then
log:info(‘Fan speed range or power range is incorrectly configured!’)
return 0
end
if pwm_percent < speed_range[1] or pwm_percent > speed_range[len_speed_range] then
log:info(‘Parse fan speed range array failed!’)
return 0
end
local index = 2
for i = 2, len_speed_range do
if pwm_percent <= speed_range[i] then
index = i
break
end
end
local slope = (power_range[index] - power_range[index - 1]) / (speed_range[index] - speed_range[index - 1])
local intercept = power_range[index] - slope * speed_range[index]
return slope * pwm_percent + intercept
end
想询问上面的通过获取风扇的当前转速与此风扇型号配置的SpeedRange和PowerRange来计算当前的风扇功耗的方法是否通用
如果通用这个SpeedRange和PowerRange是什么对应关系 要怎么配置
下面是一种风扇型号的SpeedRange和PowerRange配置
“FanType_1”: {
“Name”: “02314QEB 4056+”,
“Index”: 1,
“IsDefaultType”: true,
“IsTwins”: true,
“FrontMaxSpeed”: 23000,
“RearMaxSpeed”: 22760,
“PartNumber”: “02314QEB”,
“BOM”: “BOM 32030300-005”,
“SystemId”: 1,
“IdentifyRangeLow”: 9562,
“IdentifyRangeHigh”: 12937,
“SpeedRange”: [
0,
20,
30,
40,
50,
60,
70,
80,
90,
100
],
“PowerRange”: [
192,
192,
276,
396,
564,
828,
1176,
1632,
2160,
2700
],
“FanDiameterMm”: 40
},