本文档用于指导如何在openUBMC上配置调速策略,完成整机的调速配置。
整体调速设计原则
调速对象关系图
CoolingArea用于关联温度点(RequirementIdx)、参与调速的风扇(FanIdxGroup)和调速策略(PolicyIdxGroup);CoolingArea与CoolingRequirement应一一对应;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需要在对应CoolingArea的PolicyIdxGroup中删除PolicyIdx; - 线性调速策略温度区间为左闭右开;
ActualCondVal与ExpCondVal相等,若配置了PCIeCardName、HDDBackPlaneName、FanType多个条件,需每个条件都满足,该Policy才生效;即环境插入了PCIeCardName中的网卡之一(若配置了PCIeCardName),环境加载了HDDBackPlaneName中的硬盘背板之一(若配置了HDDBackPlaneName),环境的风扇类型包含FanType中的类型之一(若配置了FanType);- 调速区域
CoolingArea关联的风扇Id列表FanIdxGroup中,风扇Id必须按数字由小到大顺序配置。
MDS类与属性配置
CoolingConfig类配置
CoolingConfig用于承载cooling模块全局配置,包含风扇转速设置范围、BMC启动初始转速等。
CoolingConfig属性说明
| 属性 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| SmartCoolingState | String | "Enabled" "Disabled" | 智能调速使能状态,“Enabled”表示使能,“Disabled”表示不使能 |
| SmartCoolingMode | String | "EnergySaving" "LowNoise" "HighPerformance" "Custom" "LiquidCooling" | 智能调速模式,未配置时默认为"EnergySaving" |
| LevelPercentRange | U8[] | U8[] | 手动设置转速级别(百分比)允许的范围 |
| InitLevelInStartup | U8 | [0,100] | 初始转速百分比(BMC复位过程到pid接管前下发转速),默认值为100,限制最小值为0,最大值为100 |
| FanBoardNum | U8 | [0,255] | 含有调速风扇的风扇板个数(多风扇板机型需要配置,默认值为1) |
| MinimalLevel | U8 | [0, 100] | 当前服务器允许下发的最小风扇转速百分比,小于允许最小转速则置为最小允许转速(默认值为0) |
| MaxLimiLevel | U8 | [0, 100] | 当前服务器允许下发的最大风扇转速百分比,大于允许最大转速则置为最大允许转速(默认值为100) |
CoolingRequirement类配置
一个温度点对应一个CoolingRequirement对象,用于关联硬件温度和配置目标调速策略。
CoolingRequirement属性说明
| 属性 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| RequirementId | U64 | U64 | 目标调速策略Id,id必须全局唯一,当前id支持有效16位,前8位baseid,后8位槽位号,对于唯一性器件,RequirementId可以配置为U8数(不支持配置成同步其他组件的属性) |
| TemperatureType | U32 | U32 | 温度点类型(具体查看下面表格中目标调速类型定义),默认值为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 |
| MonitoringStatus | U8 | U8 | 温度点状态,用于异常调速,0正常,1异常 |
| MonitoringValue | Double | Double | 温度点值,关联硬件(注:不可关联传感器Reading值) |
| FailedValue | U64 | U64 | 温度点状态异常时,如果配置了该值,则触发异常调速,将风扇转速百分比设为FailedValue,未配置代表温度点异常时不触发异常调速 |
| BackupRequirementIdx | U64 | U64 | 备用温度点索引 |
| TargetTemperatureCelsius | U8 | U8 | 当前调速目标值,默认配置EnergySaving模式的目标值 |
| SmartCoolingTargetTemperature | S16[] | S16[] | 依次存储节能、高性能、低噪三种模式的目标温度值,不需要区分的话无需配置 |
| MaxAllowedTemperatureCelsius | U8 | U8 | 目标调速触发满转的温度 |
| CustomSupported | Boolean | true/false | 是否支持自定义调速曲线,true:支持,false:不支持 |
| CustomTargetTemperatureCelsius | U8 | U8 | 用户自定义温度值,自定义模式使用该值作为目标温度值进行调速 |
| TargetTemperatureRangeCelsius | U8[] | U8[] | 自定义目标温度值允许范围 |
| Enabled | String | true/false | 用户自定义温度点生效条件,true有效,false无效 |
| SensorName | String | String | 目标调速策略关联的传感器名称 |
CoolingPolicy类配置
CoolingPolicy为线性调速策略对象,一个CoolingPolicy对象代表一条环温曲线,每个温度点可能关联0个或多个CoolingPolicy对象,取计算出的转速最大值下发,删除CoolingPolicy需要在对应CoolingArea的PolicyIdxGroup里面删除对应的PolicyIdx。
CoolingPolicy属性说明
| 属性 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| PolicyIdx | U64 | U64 | 线性调速策略Id,PolicyIdx必须全局唯一 |
| PolicyType | U32 | 1 InletCustom 2 DiskCustom 4294967295 InvalidType | 环温调速类型,仅支持自定义的曲线可配置 |
| ExpCondVal | String | "EnergySaving" "LowNoise" "HighPerformance" "Custom" "LiquidCooling" | 预期生效条件,CoolingPolicy生效前提是实际条件与期望条件一致 |
| ActualCondVal | String | "EnergySaving" "LowNoise" "HighPerformance" "Custom" "LiquidCooling" | 实际生效条件 |
| Hysteresis | U8 | U8 | 迟滞量,当前温度小于等于全速值(MaxAllowedTemperatureCelsius)减迟滞量时,退出满转 |
| TemperatureRangeLow | S16[] | S16[] | 线性调速策略温度区间左值 |
| TemperatureRangeHigh | S16[] | S16[] | 线性调速策略温度区间右值 |
| SpeedRangeLow | S16[] | S16[] | 线性调速策略转速区间左值 |
| SpeedRangeHigh | S16[] | S16[] | 线性调速策略转速区间右值 |
| FanSpeedRangePercents | U8[] | U8[] | 自定义调速曲线风扇转速允许范围 |
| PCIeCardName | String[] | String[] | 关联的PCIe卡名称该列表中,环境插入了该列表中网卡之一时,网卡条件生效 |
| HDDBackPlaneName | String[] | String[] | 硬盘背板名称列表,环境有该列表中背板之一时,背板条件生效 |
| FanType | String[] | String[] | 风扇类型列表,环境含有该列表中风扇类型之一时,风扇条件生效 |
CoolingArea类配置
CoolingArea主要用于将CoolingRequirement、CoolingPolicy、CoolingFan(风扇对象)对象关联起来,该配置描述了一个温度点调速需要哪几个风扇参与,也描述了温度点关联哪些环温调速曲线。
NOTE
如果新增了CoolingRequirement,则需要增加对应的CoolingArea对象,若CoolingArea不参与调速,则PolicyIdxGroup和LiquidCoolingDeviceGroup默认配置为空即可。
这样配置的好处是:
- 显式占据了一个器件位置;
- 下发目标转速的时候会检测是否存在
CoolingArea,如果不存在会报错(例如,借用温度点,业务代码无法知道是漏配置还是未分发),CoolingArea必须配置在PSR。
CoolingArea属性说明
| 属性 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| AreaId | U8 | U8 | 调速区域Id,AreaId必须全局唯一 |
| RequirementIdx | U64 | U64 | 调速区域关联的目标调速策略Id,与U8的RequirementId一致或者U16的BaseId一致 |
| PolicyIdxGroup | U64[] | U64[] | 调速区域关联的环温调速索引 |
| FanIdxGroup | U8[] | U8[] | 调速区域关联的风扇Id(CoolingFan.FanId)集合,表示参与该区域调速的风扇Id |
| Priority | U8 | U8 | 调速区域对象优先级,默认为1,数值越小优先级越高,AreaId重复的对象以优先级高的进行调速 |
| LiquidCoolingDeviceGroup | U8[] | U8[] | 调速区域关联的液冷设备Id列表 |
AbnormalFan类配置
AbnormalFan为异常调速风扇对象。
AbnormalFan属性说明
| 属性 | 类型 | 取值范围 | 说明 |
|---|---|---|---|
| Id | U32 | U32 | 异常调速风扇的Id,Id必须全局唯一 |
| FanIdx | U32 | U32 | 关联的CoolingFan的索引 |
| Status | String | “AbnormalRotation" "NotInPosition" | 风扇异常状态,“AbnormalRotation":转速异常,"NotInPosition":不在位 |
| FanGroup | U32[] | U32[] | 触发异常后,参与异常转速调速的风扇Id |
| Priority | U8 | U8 | 对象优先级,默认为1,数值越小优先级越高 |
调速配置实例
目标调速:出风口目标调速配置
| SmartCooling调速模式 | 目标值 | 对应风扇序号 | 触发全速门限 | 高温告警门限 | 温度规格 | 调速迟滞量 | 告警迟滞量 | 传感器失效异常调速 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SmartCooling-节能模式(默认) | 50 | Fan | 60 | 75 | / | / | 2 | 80% | |||||||
| SmartCooling-高性能模式 | 47 | ||||||||||||||
| SmartCooling-低噪模式 | 53 |
"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<=20 | Ta=21 | Ta=22 | Ta=22 | Ta=23 | Ta=24 | Ta=25 | Ta=26 | Ta=27 | Ta=28 | Ta=29 | Ta=30 | Ta=31 | Ta=32 | Ta=33 | Ta=34 | Ta=35 | Ta=36 | Ta=37 | Ta=38 | Ta=39 | Ta=40 | Ta=41 | Ta=42 | Ta=43 | Ta=44 | Ta>=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_6、CoolingPolicy_1_7,CoolingPolicy中配置了环温调速曲线,参与CoolingArea_1_6调速的风扇Id 为1~4。
"CoolingConfig_1": {
"SmartCoolingState": "Enabled",//智能调速状态使能
"SmartCoolingMode": "EnergySaving",//智能调速模式为节能模式
"LevelPercentRange": [//手动设置转速级别允许的范围为10%~100%
10,
100
],
"InitLevelInStartup": 100,//初始转速为100%
"DiskRowTemperatureAvailable": false
},"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
]
}"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
]
}"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
]
}以上配置中,TemperatureRangeLow、TemperatureRangeHigh、SpeedRangeLow、SpeedRangeHigh中的第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的值。
//(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%
}//(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_8的RequirementId为8,需要将主温度点CoolingRequirement_1_6的BackupRequirementIdx配为8,并且将CoolingRequirement_1_8的IsBackupRequirement配为true:
"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":[]
}"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
]
}风扇组间转速差:
//以下配置中,风扇组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_55和CoolingRequirement_1_56; 光模块温度异常时,CoolingRequirement_1_56无FailedValue,不触发异常调速,此时生效CoolingRequirement_1_155。
"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根据槽位号进行偏移
"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
"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
]
}带泵机型仅有泵环温曲线调速配置
"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]
}