调速配置指导说明
更新时间:2025/7/31
在Gitcode上查看源码

本文档用于指导如何在openUBMC上配置调速策略,完成整机的调速配置。

整体调速设计原则

调速对象关系图

  • CoolingArea用于关联温度点(RequirementIdx)、参与调速的风扇(FanIdxGroup)和调速策略(PolicyIdxGroup);
  • CoolingAreaCoolingRequirement应一一对应;
  • CoolingArea只能配置到PSR中(区分单电源和双电源);
  • CoolingRequirement一般跟随单板所在的SR配置。

设计约束

  • CoolingRequirement中的属性RequirementId必须全局唯一,当前id支持有效16位,前8位baseid,后8位槽位号,对于唯一性器件,RequirementId可配置为U8数(不支持配置成同步其他组件的属性);
  • CoolingConfig类的InitLevelInStartup属性限制最小值为0,最大值为100,默认为100;
  • CoolingConfig类的FanBoardNum属性为含有调速风扇的风扇板个数,多风扇板机型需配置,不配置时默认值为1;
  • 一个CoolingPolicy对象代表一条环温曲线,每个温度点可能关联0个或多个CoolingPolicy对象,取计算出的转速最大值下发,删除CoolingPolicy需要在对应CoolingAreaPolicyIdxGroup中删除PolicyIdx
  • 线性调速策略温度区间为左闭右开;
  • ActualCondValExpCondVal相等,若配置了PCIeCardNameHDDBackPlaneNameFanType多个条件,需每个条件都满足,该Policy才生效;即环境插入了PCIeCardName中的网卡之一(若配置了PCIeCardName),环境加载了HDDBackPlaneName中的硬盘背板之一(若配置了HDDBackPlaneName),环境的风扇类型包含FanType中的类型之一(若配置了FanType);
  • 调速区域CoolingArea关联的风扇Id列表FanIdxGroup中,风扇Id必须按数字由小到大顺序配置。

MDS类与属性配置

CoolingConfig类配置

CoolingConfig用于承载cooling模块全局配置,包含风扇转速设置范围、BMC启动初始转速等。

CoolingConfig属性说明

属性类型取值范围说明
SmartCoolingStateString"Enabled"
"Disabled"
智能调速使能状态,“Enabled”表示使能,“Disabled”表示不使能
SmartCoolingModeString"EnergySaving"
"LowNoise"
"HighPerformance"
"Custom"
"LiquidCooling"
智能调速模式,未配置时默认为"EnergySaving"
LevelPercentRangeU8[]U8[]手动设置转速级别(百分比)允许的范围
InitLevelInStartupU8[0,100]初始转速百分比(BMC复位过程到pid接管前下发转速),默认值为100,限制最小值为0,最大值为100
FanBoardNumU8[0,255]含有调速风扇的风扇板个数(多风扇板机型需要配置,默认值为1)

CoolingRequirement类配置

一个温度点对应一个CoolingRequirement对象,用于关联硬件温度和配置目标调速策略。

CoolingRequirement属性说明

属性类型取值范围说明
RequirementIdU64U64目标调速策略Id,id必须全局唯一,当前id支持有效16位,前8位baseid,后8位槽位号,对于唯一性器件,RequirementId可以配置为U8数(不支持配置成同步其他组件的属性)
TemperatureTypeU32U32温度点类型(具体查看下面表格中目标调速类型定义),默认值为4294967295,TemperatureType与目标温度调速类型对照如下:
1 Cpu
2 Outlet
3 Disk
4 Memory
5 PCH
6 VRD
7 VDDQ
8 NPUHb
9 NPUAiCore
10 NPUBoard
11 Inlet
12 SoCBoardOutlet
13 SoCBoardInlet
4294967295 InvalidType
MonitoringStatusU8U8温度点状态,用于异常调速,0正常,1异常
MonitoringValueDoubleDouble温度点值,关联硬件(注:不可关联传感器Reading值)
FailedValueU64U64温度点状态异常时,如果配置了该值,则触发异常调速,将风扇转速百分比设为FailedValue,未配置代表温度点异常时不触发异常调速
BackupRequirementIdxU64U64备用温度点索引
TargetTemperatureCelsiusU8U8当前调速目标值,默认配置EnergySaving模式的目标值
SmartCoolingTargetTemperatureS16[]S16[]依次存储节能、高性能、低噪三种模式的目标温度值,不需要区分的话无需配置
MaxAllowedTemperatureCelsiusU8U8目标调速触发满转的温度
CustomSupportedBooleantrue/false是否支持自定义调速曲线,true:支持,false:不支持
CustomTargetTemperatureCelsiusU8U8用户自定义温度值,自定义模式使用该值作为目标温度值进行调速
TargetTemperatureRangeCelsiusU8[]U8[]自定义目标温度值允许范围
EnabledStringtrue/false用户自定义温度点生效条件,true有效,false无效
SensorNameStringString目标调速策略关联的传感器名称

CoolingPolicy类配置

CoolingPolicy为线性调速策略对象,一个CoolingPolicy对象代表一条环温曲线,每个温度点可能关联0个或多个CoolingPolicy对象,取计算出的转速最大值下发,删除CoolingPolicy需要在对应CoolingAreaPolicyIdxGroup里面删除对应的PolicyIdx

CoolingPolicy属性说明

属性类型取值范围说明
PolicyIdxU64U64线性调速策略Id,PolicyIdx必须全局唯一
PolicyTypeU321 InletCustom
2 DiskCustom
4294967295 InvalidType
环温调速类型,仅支持自定义的曲线可配置
ExpCondValString"EnergySaving"
"LowNoise"
"HighPerformance"
"Custom"
"LiquidCooling"
预期生效条件,CoolingPolicy生效前提是实际条件与期望条件一致
ActualCondValString"EnergySaving"
"LowNoise"
"HighPerformance"
"Custom"
"LiquidCooling"
实际生效条件
HysteresisU8U8迟滞量,当前温度小于等于全速值(MaxAllowedTemperatureCelsius)减迟滞量时,退出满转
TemperatureRangeLowS16[]S16[]线性调速策略温度区间左值
TemperatureRangeHighS16[]S16[]线性调速策略温度区间右值
SpeedRangeLowS16[]S16[]线性调速策略转速区间左值
SpeedRangeHighS16[]S16[]线性调速策略转速区间右值
FanSpeedRangePercentsU8[]U8[]自定义调速曲线风扇转速允许范围
PCIeCardNameString[]String[]关联的PCIe卡名称该列表中,环境插入了该列表中网卡之一时,网卡条件生效
HDDBackPlaneNameString[]String[]硬盘背板名称列表,环境有该列表中背板之一时,背板条件生效
FanTypeString[]String[]风扇类型列表,环境含有该列表中风扇类型之一时,风扇条件生效

CoolingArea类配置

CoolingArea主要用于将CoolingRequirementCoolingPolicy、CoolingFan(风扇对象)对象关联起来,该配置描述了一个温度点调速需要哪几个风扇参与,也描述了温度点关联哪些环温调速曲线。

NOTE

如果新增了CoolingRequirement,则需要增加对应的CoolingArea对象,若CoolingArea不参与调速,则PolicyIdxGroupLiquidCoolingDeviceGroup默认配置为空即可。

这样配置的好处是:

  • 显式占据了一个器件位置;
  • 下发目标转速的时候会检测是否存在CoolingArea,如果不存在会报错(例如,借用温度点,业务代码无法知道是漏配置还是未分发),CoolingArea必须配置在PSR。

CoolingArea属性说明

属性类型取值范围说明
AreaIdU8U8调速区域Id,AreaId必须全局唯一
RequirementIdxU64U64调速区域关联的目标调速策略Id,与U8的RequirementId一致或者U16的BaseId一致
PolicyIdxGroupU64[]U64[]调速区域关联的环温调速索引
FanIdxGroupU8[]U8[]调速区域关联的风扇Id(CoolingFan.FanId)集合,表示参与该区域调速的风扇Id
PriorityU8U8调速区域对象优先级,默认为1,数值越小优先级越高,AreaId重复的对象以优先级高的进行调速
LiquidCoolingDeviceGroupU8[]U8[]调速区域关联的液冷设备Id列表

AbnormalFan类配置

AbnormalFan为异常调速风扇对象。

AbnormalFan属性说明

属性类型取值范围说明
IdU32U32异常调速风扇的Id,Id必须全局唯一
FanIdxU32U32关联的CoolingFan的索引
StatusString“AbnormalRotation"
"NotInPosition"
风扇异常状态,“AbnormalRotation":转速异常,"NotInPosition":不在位
FanGroupU32[]U32[]触发异常后,参与异常转速调速的风扇Id
PriorityU8U8对象优先级,默认为1,数值越小优先级越高

调速配置实例

目标调速:出风口目标调速配置

SmartCooling调速模式目标值对应风扇序号触发全速门限高温告警门限温度规格调速迟滞量告警迟滞量传感器失效异常调速
SmartCooling-节能模式(默认)50Fan6075//280%
SmartCooling-高性能模式47
SmartCooling-低噪模式53
json
"CoolingRequirement_1_7": {
    "RequirementId": 7,
    "TemperatureType": 2,//目标调速温度类型为出风口
    "MonitoringStatus": "<=/Scanner_Lm75_Outlet.Status",//同步Scanner_Lm75_Outlet的状态
    "MonitoringValue": "<=/Scanner_Lm75_Outlet.Value",//同步Scanner_Lm75_Outlet的值
    "FailedValue": 80,//温度状态异常后的异常调速转速为80%
    "TargetTemperatureCelsius": 45,//目标温度为45摄氏度
    "MaxAllowedTemperatureCelsius": 60,//温度大于等于60摄氏度时触发满转
    "TargetTemperatureRangeCelsius": [//自定义目标温度值允许的范围为45~60摄氏度
        45,
        60
    ],
    "SmartCoolingTargetTemperature": [//节能、高性能、低噪三种模式下的目标值温度分别为50、47、53
        50,
        47,
        53
    ],
    "CustomSupported": true,//支持自定义调速曲线
    "CustomTargetTemperatureCelsius": 52,//自定义目标调速温度值为52摄氏度
    "SensorName": "#/ThresholdSensor_OutletTemp.SensorName"
},
"CoolingArea_1_7": {
    "AreaId": 7,
    "RequirementIdx": 7,//关联的温度点为RequirementId为7
    "PolicyIdxGroup": [],
    "FanIdxGroup": [//调速区域7调速的关联的风扇Id为1、2、3、4
        1,
        2,
        3,
        4
    ]
}

环温调速:入风口目标调速配置(CoolingRequirement_1_8作为CoolingRequirement_1_6的备份温度点)

环境温度(Ta)调速区间和风扇转速的对应表:

环境温度范围Ta<=20Ta=21Ta=22Ta=22Ta=23Ta=24Ta=25Ta=26Ta=27Ta=28Ta=29Ta=30Ta=31Ta=32Ta=33Ta=34Ta=35Ta=36Ta=37Ta=38Ta=39Ta=40Ta=41Ta=42Ta=43Ta=44Ta>=45
风扇转速30%30%30%30%30%30%34%38%42%46%50%55%60%65%70%75%80%85%90%95%100%100%100%100%100%100%100%
风扇转速40%40%40%40%40%42%45%50%55%60%65%70%75%80%85%90%95%100%100%100%100%100%100%100%100%100%100%

该例中,AreaId为6的调速区域CoolingArea_1_6关联的温度点为CoolingRequirement_1_6,关联的调速策略为CoolingPolicy_1_6CoolingPolicy_1_7CoolingPolicy中配置了环温调速曲线,参与CoolingArea_1_6调速的风扇Id 为1~4。

json
"CoolingConfig_1": {
    "SmartCoolingState": "Enabled",//智能调速状态使能
    "SmartCoolingMode": "EnergySaving",//智能调速模式为节能模式
    "LevelPercentRange": [//手动设置转速级别允许的范围为10%~100%
        10,
        100
    ],
    "InitLevelInStartup": 100,//初始转速为100%
    "DiskRowTemperatureAvailable": false
},
json
"CoolingRequirement_1_6": {
    "RequirementId": 6,
    "TemperatureType": 11,//温度类型为入风口
    "MonitoringStatus": "<=/Scanner_Lm75_Inlet.Status",
    "MonitoringValue": "<=/Scanner_Lm75_Inlet.Value",
    "FailedValue": 80,
    "BackupRequirementIdx": 8,//该温度点的备用温度点Id为8
    "SensorName": "#/ThresholdSensor_InletTemp.SensorName"//该温度点关联的传感器名称
},
"CoolingArea_1_6": {
    "AreaId": 6,
    "RequirementIdx": 6,//该调速区域关联的温度点(CoolingRequirement)Id为6
    "PolicyIdxGroup": [6, 7],//该调速区域关联的调速策略(CoolingPolicy)Id为6、7
    "FanIdxGroup": [//该调速区域关联的风扇Id为1、2、3、4
        1,
        2,
        3,
        4
    ]
}
json
"CoolingPolicy_1_6": {
    "PolicyIdx": 6,
    "ExpCondVal": "EnergySaving",//调速策略预期生效的条件为节能模式
    "ActualCondVal": "<=/CoolingConfig_1.SmartCoolingMode",//实际的模式
    "Hysteresis": 1,//迟滞量为1
    "TemperatureRangeLow": [//线性调速策略温度区间左值
        -127, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,  37, 38, 39, 40, 41, 42, 43,  44, 45
    ],
    "TemperatureRangeHigh": [//线性调速策略温度区间右值
        20,  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 127
    ],
    "SpeedRangeLow": [//线性调速策略转速区间左值
        30, 30, 30, 30, 30, 30, 30, 34, 38, 42, 46, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 100, 100, 100, 100, 100
    ],
    "SpeedRangeHigh": [//线性调速策略转速区间右值
        30, 30, 30, 30, 30, 30, 30, 34, 38, 42, 46, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 100, 100, 100, 100, 100
    ]
}
json
"CoolingPolicy_1_7": {
    "PolicyIdx": 7,
    "ExpCondVal": "HighPerformance",//调速策略预期生效的条件为高性能模式
    "ActualCondVal": "<=/CoolingConfig_1.SmartCoolingMode",//实际的模式
    "Hysteresis": 1,
    "TemperatureRangeLow": [//线性调速策略温度区间左值
        -127,  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45
    ],
    "TemperatureRangeHigh": [//线性调速策略温度区间右值
        20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 127
    ],
    "SpeedRangeLow": [//线性调速策略转速区间左值
        40, 40, 40, 40, 40, 40, 42, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 100, 100, 100, 100, 100, 100, 100, 100
    ],
    "SpeedRangeHigh": [//线性调速策略转速区间右值
        40, 40, 40, 40, 40, 40, 42, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 100, 100, 100, 100, 100, 100, 100, 100
    ]
}

以上配置中,TemperatureRangeLowTemperatureRangeHighSpeedRangeLowSpeedRangeHigh中的第i个值,可以理解为:当温度大于等于TemperatureRangeLow[i]并且小于TemperatureRangeHigh[i]时,风扇的转速百分比大于等于SpeedRangeLow[i]、小于等于SpeedRangeHigh[i],例如 温度区间[-127, 20),风扇的speed范围为[30, 30];温度区间[20, 21),风扇的speed范围为[30, 30]


异常调速

触发异常调速的场景包括温度点获取异常和风扇异常。温度点获取异常的场景可参考本章“目标调速”中“出风口目标调速配置”:CoolingRequirement_1_7.MonitoringStatus变为0时,风扇不小于FailedValue的值。

json
//(1)风扇1转速异常后触发异常调速,风扇1、2转速不低于80%(SpeedPercentage默认为8)
"AbnormalFan_1": {
    "Id": 1,
    "FanIdx": 1,//关联的异常风扇Id为1
    "Status": "AbnormalRotation",//当风扇1的异常状态为转速异常时,触发该异常调速
    "FanGroup": [1, 2]//参与异常调速的风扇Id为1、2,它们的转速被拉至80%
}
json
//(2)风扇2不在位后触发异常调速,风扇1、2转速不低于100%
"AbnormalFan_2": {
    "Id": 2,
    "FanIdx": 1,//关联的异常风扇Id为2
    "Status": "NotInPosition",//当风扇2的异常状态为不在位时,触发该异常调速
    "FanGroup": [1, 2],//参与异常调速的风扇Id为1、2,它们的转速被拉至100%
    "SpeedPercentage": 100//触发该异常调速后,FanGroup关联的风扇1、2转速被拉至100%
}

温度点备份调速

这个例子中,配置温度点8(备用温度点)为温度点6(主温度点)的备份温度点,主温度点6获取失败时,采用备份温度点8的温度值作为调速温度值。

备用温度点CoolingRequirement_1_8RequirementId为8,需要将主温度点CoolingRequirement_1_6BackupRequirementIdx配为8,并且将CoolingRequirement_1_8IsBackupRequirement配为true

json
"CoolingRequirement_1_8": {//备用温度点
    "RequirementId": 8,
    "MonitoringStatus": "<=/Scanner_FanBrdTemp.Status",
    "MonitoringValue": "<=/Scanner_FanBrdTemp.Value",
    "IsBackupRequirement": true,
    "SensorName": "#/ThresholdSensor_FanBoardTemp.SensorName"
},
"CoolingArea_1_8": {
    "AreaId": 8,
    "RequirementIdx": 8,//该调速区域关联温度点8
    "PolicyIdxGroup": [],
    "FanIdxGroup":[]
}
json
"CoolingRequirement_1_6": {//主用温度点
    "RequirementId": 6,
    "TemperatureType": 11,//温度类型为进风口
    "MonitoringStatus": "<=/Scanner_Lm75_Inlet.Status",
    "MonitoringValue": "<=/Scanner_Lm75_Inlet.Value",
    "FailedValue": 80,//温度点失效时触发异常调速,将风扇转速拉至80%
    "BackupRequirementIdx": 8,//在这里配置温度点8为温度点6的备用温度点
    "SensorName": "#/ThresholdSensor_InletTemp.SensorName"
},
"CoolingArea_1_6": {
    "AreaId": 6,
    "RequirementIdx": 6,//该调速区域关联温度点6
    "PolicyIdxGroup": [],
    "FanIdxGroup": [//该调速区域参与调速的风扇Id为1、2、3、4
        1,
        2,
        3,
        4
    ]
}

风扇组间转速差:

json
//以下配置中,风扇组FanGroup_1、FanGroup_2、FanGroup_3的最大转速差不超过20%,下发给psu的风扇转速为风扇组FanGroup_1、FanGroup_2、FanGroup_3的最大值加5%
"BasicCoolingConfig": {
    "FanGroupSpeedDiffThresholdPercent": 20, //风扇组转速差阈值百分比,默认值表示不进行转速差计算
    "PsuFanSpeedCalibration": 5 //psu风扇转速值校准,默认值表示不进行psu转速下发
},
"FanGroup_1": {
    "Id": 1,
    "FanSlots": [1, 2, 3, 4, 5]//风扇组1关联的风扇Id为1~5
}
"FanGroup_2": {
    "Id": 2,
    "FanSlots": [6, 7, 8, 9, 10]//风扇组2关联的风扇Id为6~10
}
"FanGroup_3": {
    "Id": 3,
    "FanSlots": [11, 12, 13, 14, 15]//风扇组3关联的风扇Id为11~15
}

带光模块卡的调速

光模块温度状态正常时,生效CoolingRequirement_1_55CoolingRequirement_1_56; 光模块温度异常时,CoolingRequirement_1_56FailedValue,不触发异常调速,此时生效CoolingRequirement_1_155

json
"CoolingRequirement_1_55": {
    "RequirementId": "${Slot} |> expr((55 << 8) | $1)",//RequirementId根据槽位号进行偏移
    "Description": "XXX卡温度调速", 
    "MonitoringStatus": "<=/Retimer_XX_Obj_0.TemperatureCelsius |> expr($1 >= 255 ? 1 : 0)",
    "MonitoringValue": "<=/Retimer_XX_Obj_0.TemperatureCelsius",
    "FailedValue": 80,//温度点状态异常时,触发异常调速,将风扇转速拉至80%
    "TargetTemperatureCelsius": 90,
    "MaxAllowedTemperatureCelsius": 100,
    "TargetTemperatureRangeCelsius": [],
    "ThresholdValue": [],
    "AlarmSpeed": [],
    "SmartCoolingTargetTemperature": [],
    "CustomSupported": false,
    "CustomTargetTemperatureCelsius": 255,
    "Enabled": "<=/CoolingRequirement_1_56.MonitoringStatus |> expr($1 == 0 ? true : false)",
    "SensorName": "#/ThresholdSensor_XX.SensorName"
},
"CoolingRequirement_1_155": {
    "RequirementId": "${Slot} |> expr((155 << 8) | $1)",
    "Description": "XXX卡温度(光模块异常)调速",
    "MonitoringStatus": "<=/Retimer_XX_Obj_0.TemperatureCelsius |> expr($1 >= 255 ? 1 : 0)",
    "MonitoringValue": "<=/Retimer_XX_Obj_0.TemperatureCelsius",
    "TargetTemperatureCelsius": 80,
    "MaxAllowedTemperatureCelsius": 100,
    "TargetTemperatureRangeCelsius": [],
    "ThresholdValue": [],
    "AlarmSpeed": [],
    "SmartCoolingTargetTemperature": [],
    "CustomSupported": false,
    "CustomTargetTemperatureCelsius": 255,
    "Enabled": "<=/CoolingRequirement_1_56.MonitoringStatus |> expr($1 ~= 0 ? true : false)",
    "SensorName": "#/ThresholdSensor_XX.SensorName"
},
"CoolingRequirement_1_56": {//未配置FailedValue,该温度点状态异常时,不触发异常调速
    "RequirementId": "${Slot} |> expr((56 << 8) | $1)",
    "Description": "XXX卡光模块温度调速",
    "MonitoringStatus": "<=/OpticalModule_1.TemperatureCelsius |> expr(($1 == 16384) ? 0 : ($1 >= 255 ? 1 : 0))",
    "MonitoringValue": "<=/OpticalModule_1.TemperatureCelsius",
    "TargetTemperatureCelsius": 62,
    "MaxAllowedTemperatureCelsius": 68,
    "TargetTemperatureRangeCelsius": [],
    "ThresholdValue": [],
    "AlarmSpeed": [],
    "SmartCoolingTargetTemperature": [],
    "CustomSupported": false,
    "CustomTargetTemperatureCelsius": 255
}

多nic卡,多硬盘调速配置

当有多个对象时,需要对RequirementId根据槽位号进行偏移

json
"CoolingRequirement_1_61": {
    "RequirementId": "${Slot} |> expr((61 << 8) | $1)",//RequirementId需要根据槽位号进行偏移
    "MonitoringStatus": "<=/Scanner_XX.Value |> expr($1 >= 255 ? 1 : 0)",
    "MonitoringValue": "<=/Scanner_XX.Value",
    "FailedValue": 80,
    "TargetTemperatureCelsius": 44,
    "MaxAllowedTemperatureCelsius": 58,
    "TargetTemperatureRangeCelsius": [],
    "ThresholdValue": [],
    "AlarmSpeed": [],
    "Enabled": "<=/Drive_1.TemperatureCelsius;<=/Drive_2.TemperatureCelsius |> expr($1 + $2 >= 510 ? 1 : 0)",
    "SensorName": "#/ThresholdSensor_XX.SensorName"
},
"CoolingArea_1_61": {
    "AreaId": 61,
    "RequirementIdx": 61,
    "PolicyIdxGroup": [],
    "FanIdxGroup": [
        1,
        2,
        3,
        4
    ]
}

standby调速配置

standby调速,配置ActiveInStandby属性为True

json
"CoolingRequirement_1_2": {
    "RequirementId": 2,
    "Description": "xxx",
    "MonitoringStatus": "<=/DPUCard_1.Inlet1TemperatureCelsius |> expr(($1 == 32767) ? 1 : 0)",
    "MonitoringValue": "<=/DPUCard_1.Inlet1TemperatureCelsius |> expr(($1 == 0 || $1 > 200) ? 40 : ($1 & 255))",
    "FailedValue": 80,
    "TargetTemperatureCelsius": 55,
    "MaxAllowedTemperatureCelsius": 65,
    "ActiveInStandby": true,//ActiveInStandby配置为true表示支持standby调速时
    "SensorName": "#/ThresholdSensor_XX.SensorName"
},
"CoolingArea_1_2": {
    "AreaId": 2,
    "RequirementIdx": 2,
    "PolicyIdxGroup": [],
    "FanIdxGroup": [
        1,
        2,
        3,
        4
    ]
}

带泵机型仅有泵环温曲线调速配置

json
"CoolingRequirement_Pump_80": {
    "RequirementId": 80,
    "MonitoringStatus": "<=/Scanner_Lm75_Inlet.Status",
    "MonitoringValue": "<=/Scanner_Lm75_Inlet.Value",
    "TargetTemperatureCelsius": 80, //一个极大值,进风口温度无法达到的值,使得目标调速计算的转速为最低
    "MaxAllowedTemperatureCelsius": 100, //温度到达100摄氏度后会触发风扇满转
    "FailedValue": 100,
    "CoolingMedium": "Liquid"//调速中介为液冷
},
"CoolingArea_Pump_1_80": {
    "AreaId": 80,
    "RequirementIdx": 80,
    "PolicyIdxGroup": [80],
    "LiquidCoolingDeviceGroup": [//该调速区域关联的泵Id为1、2
        1,
        2
    ]
},
"CoolingPolicy_Pump_1_80": {
    "PolicyIdx": 80,
    "CoolingMedium": "Liquid",//调速中介为液冷
    "TemperatureRangeLow": [-127, 30],
    "TemperatureRangeHigh": [30, 127],
    "SpeedRangeLow": [50, 100],
    "SpeedRangeHigh": [50, 100]
}