代码仓
中
CSR配置字典之Sensor类
更新时间: 2026/11/09
在AtomGit上查看源码

📋 文档信息 ​

项目内容
文档标题Sensor类配置字典
版本v1.3
创建日期2025-01-27
最后更新2026-11-07
维护状态✅ 活跃维护

📋 变更历史记录 ​

文档变更记录 ​

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建Sensor类配置字典全新文档系统管理员
v1.12026-05-12功能增强补充BMCEnables等类属性定义Entity/ThresholdSensor/DiscreteSensor/BMCEnables类sensor SIG
v1.22026-11-03功能增强内联Entity/ThresholdSensor/DiscreteSensor的IPMI规范引用字段枚举值(SensorType、ReadingType、Linearization、掩码位定义、线性换算系数、ModifierUnit、Entity.Instance等)Entity/ThresholdSensor/DiscreteSensor类sensor SIG
v1.32026-11-07修订与模型同步,补充 CSR 属性:Health、LowerNoncritical、NormalMaximumThresholdSensor待补充

🎯 类概览 ​

Sensor 类系统 ​

属性值
类名称Sensor (Entity + ThresholdSensor + DiscreteSensor + BMCEnables)
功能描述传感器管理系统,包含实体管理(Entity)、门限传感器(ThresholdSensor)、离散传感器(DiscreteSensor)、BMC使能(BMCEnables),提供完整的传感器配置、事件管理和IPMI SEL功能
所属SIG组hardware
所属组件sensor
责任人基础服务组
最后更新2026-11-07
状态🟢 正常运行

📊 属性定义详表 ​

Entity 类 - 必选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
IdU8-U8-传感器对应的实体标识
具体参照IPMI标准协议规范Table 43-, Entity ID Codes(P550)
常用的实体标识列举如下:
03h processor
04h disk or disk bay
07h system board
0Ah power supply
0Bh add-in card
12h processor board
1Eh cooling unit
20h memory device
37h air inlet
配置传感器实体7CSR软件
InstanceU8-0x00~0xFF,取值说明见下文【Entity Instance取值说明】-传感器对应的实体实例标识,通常以0x60开始配置,理论上应保证相同Id下Instance不同,取值说明见下文配置传感器实体96CSR软件
NameString-String-实体名称配置传感器实体"MainBoard"CSR软件
PresenceU81默认1或者关联部件在位-实体在位状态,部件不存在动态拔插则配死为1,否则应关联对应的在位信号配置传感器实体1CSR软件
PowerStateMixed1默认1或者关联部件在位Scanner_PowerGood实体上下电状态,若与上下电状态无关则配死为1,否则应关联上下电信号配置传感器实体"<=/Scanner_PowerGood.Value"CSR软件

Entity 类 - 可选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
SlotU8255U8-实体所在的槽位,默认0xFF配置传感器实体255CSR软件
BelongsToSystemBooleanfalseBoolean-多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0用于判断多Host场景表征当前对象是否归属单一系统trueCSR硬件

ThresholdSensor 类 - 必选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
OwnerIdU832--传感器所有者ID配置传感器对象32CSR软件
OwnerLunU80--传感器所有者LUN配置传感器对象0CSR软件
EntityIdMixed-关联Entity的IdEntity_MainBoard传感器需要关联实体,关联对应实体的Id属性配置传感器对象"<=/Entity_MainBoard.Id"CSR软件
EntityInstanceMixed-关联Entity的InstanceEntity_MainBoard传感器需要关联实体,关联对应实体的Instance属性配置传感器对象"<=/Entity_MainBoard.Instance"CSR软件
InitializationU8127U8-传感器初始化选项,门限传感器 - 0x7F配置传感器对象127CSR软件
CapabilitiesU8232U8-传感器能力,用于配置包括自动调整模式、迟滞量、阈值访问、事件控制等特性,具体如下
[7] - 1b=当实体不在位或禁用时忽略传感器,与关联的Entity的PowerState与Presence状态有关,若Entity的这两个状态默认配置为1,通常配置为 0b
[6] - 支持传感器自动重新调整,通常配置为 1b
0b=no(手动)
1b=yes(自动)
[5:4] - 支持传感器迟滞量,门限传感器通常配置为 10b
00b=无迟滞量
01b=迟滞量可读
10b=迟滞量可读可写
11b=固定的不可读迟滞量
[3:2] - 支持传感器阈值访问,门限传感器通常配置为 10b
00b=无阈值
01b=基于ReadingMask配置支持的阈值可读
10b=基于ReadingMask及Settable Threshold Mask配置支持的阈值可读可写
11b=固定的不可读的阈值,通过ReadingMask反映
[1:0] - 支持事件信息控制,通常配置为 00b
00b=支持控制每个阈值、离散状态的启动及禁用
01b=仅支持整个传感器
10b=仅支持全局禁用
11b=无来自传感器的事件
综上,针对连续传感器,建议配置为:
①若传感器使能状态不受实体在位及上下电影响,则配置为104
②若传感器使能状态受实体在位及上下电影响,则配置为232
配置传感器对象232CSR软件
SensorTypeU8-见下文【传感器类型枚举】-传感器类型,对应IPMI规范Sensor Type Codes,取值见下文配置传感器对象1CSR硬件
ReadingTypeU81U8-传感器读值类型,ThresholdSensor则配置为0x01
具体参照 Table 42-, Event/Reading Type Code Ranges(P503)
配置传感器对象1CSR硬件
SensorNameString-String-传感器名称配置传感器对象"BCU${Slot} VCC_12V0_1"CSR硬件
AssertMaskU16-16bit位掩码,bit位定义见下文【门限掩码位定义】-传感器事件产生掩码,决定是否能产生事件;配置门限场景使用,bit位定义见下文配置传感器对象516CSR硬件
DeassertMaskU16-16bit位掩码,bit位定义见下文【门限掩码位定义】-传感器事件恢复掩码,决定是否能恢复事件;配置门限场景使用,bit位定义见下文配置传感器对象516CSR硬件
ReadingMaskU16-16bit位掩码,bit位定义见下文【门限掩码位定义】-传感器读值掩码,决定是否能对外显示门限;配置门限场景使用,bit位定义见下文配置传感器对象4626CSR硬件
UnitU8-U8-传感器单位配置,具体含义见IPMI标准协议规范43.1章节
①传感器读值为有符号数,如温度:配置为128
②传感器读值为无符号数,如功率:配置为0
配置传感器对象128CSR软件
BaseUnitU8-U8-传感器基本单位
具体参照IPMI标准协议规范Table 43-, Sensor Unit Type Codes(P554)
常用的传感器单位列举如下:
1 degrees C
4 Volts
5 Amps
6 Watts
18 RPM
配置传感器对象4CSR硬件
MU81U8-按需配置,无原始值缩放转换需求,则默认配置为1配置传感器对象6CSR硬件
MaximumReadingU8-U8-实际最大值,与数据格式有关
①有符号数,配置为127
②无符号数,配置为255
配置传感器对象255CSR硬件
MinimumReadingU8-U8-实际最小值,与数据格式有关
①有符号数,配置为128
②无符号数,配置为0
配置传感器对象0CSR软件
ReadingU80关联数据源Scanner_12v1、Scanner_PowerGood传感器原始读值配置传感器对象`"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"`CSR
ReadingStatusU80关联数据源Scanner_12v1、Scanner_PowerGood传感器读值状态:0:normal配置传感器对象`"<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"`CSR

ThresholdSensor 类 - 可选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
RBExpU8224U8-按需配置,无原始值缩放转换需求,则可配置配置传感器对象224CSR硬件
NominalReadingU8204U8-名义读值,无实际含义,在数据格式范围内即可配置传感器对象204CSR硬件
UpperCriticalU8220U8-按需配置,传感器严重事件上限配置传感器对象220CSR硬件
LowerCriticalU8180U8-按需配置,传感器严重事件下限配置传感器对象180CSR硬件
UpperNoncriticalU80U8-按需配置,传感器一般事件上限配置传感器对象0CSR硬件
LowerNonCriticalU80U8-按需配置,传感器一般事件下限配置传感器对象0CSR硬件
UpperNonrecoverableU80U8-按需配置,传感器紧急事件上限配置传感器对象0CSR硬件
LowerNonrecoverableU80U8-按需配置,传感器紧急事件下限配置传感器对象0CSR硬件
PositiveHysteresisU80U8-按需配置,传感器上升事件恢复迟滞量配置传感器对象4CSR硬件
NegativeHysteresisU84U8-按需配置,传感器下降事件恢复迟滞量配置传感器对象4CSR硬件
SensorNumberU8255U8-无传感器编号定制需求,则不配置或配死为255,由sensor模块分配配置传感器对象255CSR软件
OriginalReadingDouble0Double-传感器的原始值,当线型标志配置0x70配置传感器的原始值0CSR硬件
ModifierUnitU800x00~0x5C(传感器单位代码,与BaseUnit同一张表),见下文【单位修饰说明】-传感器单位描述符,表示单位修饰词(如 每秒、乘以某单位),默认0(无修饰),详见下文配置传感器单位描述符0CSR硬件
LinearizationU80见下文【线性化算法枚举】-传感器线性计算方程,对应IPMI规范线性化算法,取值见下文配置传感器线性计算方程0CSR硬件
MTU80bit位定义见下文【线性换算系数位定义】-传感器M计算表达式高7bit(M[14:8]):bit[6:0]为M的高7bit,bit[7]保留,详见下文配置传感器M计算表达式高7bit0CSR硬件
BU80-128~127(有符号)-传感器线性换算B系数低8bit(有符号),换算公式 Y=(M×X+B×10^K) 中的B,详见下文配置传感器B计算表达式低8bit0CSR硬件
BAU80bit位定义见下文【线性换算系数位定义】-传感器B计算表达式高2bit和准确率低6bit:bit[1:0]为B的高2bit(B[9:8]),bit[7:2]为准确率低6bit,详见下文配置传感器B计算表达式高2bit和准确率低6bit0CSR硬件
AccuracyU80bit位定义见下文【线性换算系数位定义】-传感器准确率与方向:bit[7:2]为准确率高6bit,bit[1:0]为传感器方向,详见下文配置传感器准确率高6bit和传感器方向0CSR硬件
AnalogU80U8-传感器模拟标志,默认1,来自于IPMI规范,具体可以参考规范配置传感器模拟标志00硬件
NormalMinimumU800x00~0xFF(原始读值范围内,有符号/无符号与MinimumReading一致)-传感器正常最小读值,配置正常工作的读值下限,须在MinimumReading~MaximumReading范围内配置传感器正常最小读值0CSR硬件
BelongsToSystemBooleantrueBoolean-多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0配置 多Host场景表征当前对象是否归属单一系统falseCSR硬件
IsValidBooleantrueBoolean-多host场景下判断对象是否生效用于判断多host场景下判断对象是否生效falseCSR硬件
SensorIdentifierString""String-传感器标识用于标识传感器""CSR硬件
HealthString无--传感器健康状态:Critical:紧急;Major:严重;Minor:一般;OK:正常CSR 配置...CSR配置软件
LowerNoncriticalU80--传感器严重事件下限,来自于IPMI规范,具体可以参考规范 43.1CSR 配置0CSR配置软件
NormalMaximumU80--传感器正常最大读值,默认0,来自于IPMI规范,具体可以参考规范 43.1CSR 配置0CSR配置软件

DiscreteSensor 类 - 必选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
EntityIdMixed-关联Entity的IdEntity_MainBoard传感器需要关联实体,关联对应实体的Id属性配置传感器对象"<=/Entity_MainBoard.Id"CSR软件
EntityInstanceMixed-关联Entity的InstanceEntity_MainBoard传感器需要关联实体,关联对应实体的Instance属性配置传感器对象"<=/Entity_MainBoard.Instance"CSR软件
InitializationU899U8-传感器初始化选项,离散传感器 - 0x63配置传感器对象99CSR软件
CapabilitiesU864U8-传感器能力,用于配置包括自动调整模式、迟滞量、阈值访问、事件控制等特性,具体如下
[7] - 1b=当实体不在位或禁用时忽略传感器,与关联的Entity的PowerState与Presence状态有关,若Entity的这两个状态默认配置为1,通常配置为 0b
[6] - 支持传感器自动重新调整,通常配置为 1b
0b=no(手动)
1b=yes(自动)
[5:4] - 支持传感器迟滞量,离散传感器通常配置为 00b
00b=无迟滞量
01b=迟滞量可读
10b=迟滞量可读可写
11b=固定的不可读迟滞量
[3:2] - 支持传感器阈值访问,离散传感器通常配置为 00b
00b=无阈值
01b=基于ReadingMask配置支持的阈值可读
10b=基于ReadingMask及Settable Threshold Mask配置支持的阈值可读可写
11b=固定的不可读的阈值,通过ReadingMask反映
[1:0] - 支持事件信息控制,通常配置为 00b
00b=支持控制每个阈值、离散状态的启动及禁用
01b=仅支持整个传感器
10b=仅支持全局禁用
11b=无来自传感器的事件
综上,针对离散传感器,建议配置为:
①若传感器使能状态不受实体在位及上下电影响,则配置为64
②若传感器使能状态受实体在位及上下电影响,则配置为192
配置传感器对象64CSR软件
SensorTypeU8-见下文【传感器类型枚举】-传感器类型,对应IPMI规范Sensor Type Codes,取值见下文配置传感器对象35CSR硬件
ReadingTypeU8-见下文【读值类型枚举】-传感器读值类型,对应IPMI规范Event/Reading Type Code,取值见下文配置传感器对象111CSR硬件
SensorNameString-String-传感器名称配置传感器对象"Watchdog2"CSR硬件
AssertMaskU16-16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】-传感器事件产生掩码,决定是否能产生事件;配置事件场景使用,bit位定义见下文配置传感器对象271CSR硬件
DeassertMaskU16-16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】-传感器事件恢复掩码,决定是否能恢复事件;配置事件场景使用,bit位定义见下文配置传感器对象271CSR硬件
DiscreteMaskU16-16bit位掩码,bit i对应事件偏移offset i,见下文【离散传感器掩码位定义】-传感器离散值掩码,bit位定义见下文配置传感器对象271CSR硬件
UnitU8192U8-传感器单位配置,离散传感器-0xc0配置传感器对象192CSR软件
BaseUnitU80U8-离散传感器无单位,配置为0配置传感器对象0CSR硬件
DiscreteTypeU800:普通离散
1:数字离散(事件互斥)
-传感器离散类型
0:普通离散
1:数字离散(事件互斥,同一传感器同一时刻只允许一个事件有效)
配置传感器对象0CSR软件

DiscreteSensor 类 - 可选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
SensorNumberU8255U8-无传感器编号定制需求,则不配置或配死为255,由sensor模块分配配置传感器对象255CSR软件
SensorIdentifierString""String-传感器标识用于标识传感器""CSR硬件
OwnerIdU8320x20:BMC
其他:IPMB地址
-传感器归属标识(IPMI规范Sensor Owner ID),默认0x20(归属于BMC),即BMC在IPMB总线上的从地址配置传感器对象32CSR软件
OwnerLunU80--传感器所有者LUN配置传感器对象0CSR软件
PositiveHysteresisU80U8-按需配置,传感器上升事件恢复迟滞量配置传感器对象0CSR硬件
NegativeHysteresisU80U8-按需配置,传感器下降事件恢复迟滞量配置传感器对象4CSR硬件
ReadingU80关联数据源Scanner_12v1、Scanner_PowerGood传感器原始读值配置传感器对象`"<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"`CSR
ReadingStatusU80关联数据源Scanner_12v1、Scanner_PowerGood传感器读值状态:0:normal配置传感器对象`"<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"`CSR
ModifierUnitU800x00~0x5C(传感器单位代码,与BaseUnit同一张表),见下文【单位修饰说明】-传感器单位描述符,表示单位修饰词(如 每秒、乘以某单位),默认0(无修饰),详见下文配置传感器单位描述符0CSR硬件
RecordSharingU1600:独立SDR
1~0xFFFF:共享SDR记录编号
-传感器的共享标识,多个传感器可以共享同一个SDR数据;值为SDR记录编号,多个传感器配置相同编号即可共享用于判断多个传感器是否可以共享同一个SDR数据1CSR硬件
BelongsToSystemBooleantrueBoolean-多Host场景表征当前对象是否归属单一系统,默认为公共对象(false),SystemId取0配置 多Host场景表征当前对象是否归属单一系统falseCSR硬件
IsValidBooleantrueBoolean-多host场景下判断对象是否生效用于判断多host场景下判断对象是否生效falseCSR硬件

BMCEnables 类 - 可选属性 ​

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
RecvMsgIntrptEnabledU81U8-BMC到Host 侧消息中断使能配置BMC到Host 侧消息中断使能1CSR软件

📊 传感器类型枚举 ​

传感器类型定义对应IPMI规范Sensor Type Codes(Table 42-1),取值如下:

代码传感器类型
0x00Reserved(保留)
0x01Temperature(温度)
0x02Voltage(电压)
0x03Current(电流)
0x04Fan(风扇)
0x05Physical Security(物理安全)
0x06Platform Security(平台安全)
0x07Processor(处理器)
0x08Power Supply(电源)
0x09Power Unit(电源单元)
0x0ACooling Device(散热设备)
0x0BOther(其他)
0x0CMemory(内存)
0x0DDrive Slot / Bay(驱动器槽位)
0x0EPOST Memory Resize(POST内存重设)
0x0FSystem Firmware Progress(系统固件进度)
0x10Event Logging Disabled(事件日志禁用)
0x11Watchdog1
0x12System Event(系统事件)
0x13Critical Interrupt(关键中断)
0x14Button(按钮)
0x15Module / Board(模块/板卡)
0x16Microcontroller(微控制器)
0x17Add-in Card(插卡)
0x18Chassis(机箱)
0x19Chip Set(芯片组)
0x1AOther FRU(其他FRU)
0x1BCable / Interconnect(线缆/互连)
0x1CTerminator(终端)
0x1DSystem Boot Initiated(系统启动发起)
0x1EBoot Error(启动错误)
0x1FOS Boot(OS启动)
0x20OS Critical Stop(OS关键停止)
0x21Slot / Connector(槽位/连接器)
0x22System ACPI Power State(ACPI电源状态)
0x23Watchdog2
0x24Platform Alert(平台告警)
0x25Entity Presence(实体在位)
0x26Monitor ASIC(监控ASIC)
0x27LAN(局域网)
0x28Management Subsys Health(管理子系统健康)
0x29Battery(电池)
0x2ASession Audit(会话审计)
0x2BVersion Change(版本变更)
0x2CFRU State(FRU状态)
0xC0~0xEFOEM Reserved(OEM保留)
0xF0FRU Hot Swap(FRU热插拔)
0xF1IPMB Physical Link(IPMB物理链路)
0xF2Module Hot Swap(模块热插拔)
0xF3Power Channel Notification(电源通道通知)
0xF4Telco Alarm Input(电信告警输入)

📊 读值类型枚举 ​

读值类型定义对应IPMI规范Event/Reading Type Code(Table 42-1),取值如下:

代码读值类型
0x00Unspecified(未指定)
0x01Threshold(门限)
0x02Generic Discrete(通用离散)
0x03Sensor-specific Discrete(传感器特定离散)
0x04OEM Discrete(OEM离散)
0x05~0x6CReserved(保留)
0x6FSensor-specific Event(传感器特定事件,如管理子系统健康)

📊 线性化算法枚举 ​

线性化算法定义对应IPMI规范Linearization,取值如下:

代码线性化算法
0x00Linear(线性,无线性化)
0x01ln(自然对数)
0x02log10(常用对数)
0x03log2(以2为底对数)
0x04e(自然指数)
0x05exp10(以10为底指数)
0x06exp2(以2为底指数)
0x071/x(倒数)
0x08sqr(平方)
0x09cube(立方)
0x0Asqrt(平方根)
0x0Bcube root(立方根)
0x10~0x6FReserved(保留)
0x70Non-linear(非线性,查表方式)
0x71~0xFFVendor Specific(厂商自定义)

📊 门限掩码位定义 ​

门限传感器(ThresholdSensor)的AssertMask/DeassertMask/ReadingMask为16bit位掩码,各bit定义如下(bit0为最低位):

AssertMask(事件产生掩码)

bit含义
bit0下限一般事件 下降沿(Lower Non-critical Going Low)产生事件
bit1下限一般事件 上升沿(Lower Non-critical Going High)产生事件
bit2下限严重事件 下降沿(Lower Critical Going Low)产生事件
bit3下限严重事件 上升沿(Lower Critical Going High)产生事件
bit4下限紧急事件 下降沿(Lower Non-recoverable Going Low)产生事件
bit5下限紧急事件 上升沿(Lower Non-recoverable Going High)产生事件
bit6上限一般事件 下降沿(Upper Non-critical Going Low)产生事件
bit7上限一般事件 上升沿(Upper Non-critical Going High)产生事件
bit8上限严重事件 下降沿(Upper Critical Going Low)产生事件
bit9上限严重事件 上升沿(Upper Critical Going High)产生事件
bit10上限紧急事件 下降沿(Upper Non-recoverable Going Low)产生事件
bit11上限紧急事件 上升沿(Upper Non-recoverable Going High)产生事件
bit12读值低于下限一般值 时产生事件(Reading Lower Non-critical)
bit13读值低于下限严重值 时产生事件(Reading Lower Critical)
bit14读值低于下限紧急值 时产生事件(Reading Lower Non-recoverable)
bit15Reserved(保留)

DeassertMask(事件恢复掩码)

bit含义
bit0下限一般事件 下降沿(Lower Non-critical Going Low)恢复事件
bit1下限一般事件 上升沿(Lower Non-critical Going High)恢复事件
bit2下限严重事件 下降沿(Lower Critical Going Low)恢复事件
bit3下限严重事件 上升沿(Lower Critical Going High)恢复事件
bit4下限紧急事件 下降沿(Lower Non-recoverable Going Low)恢复事件
bit5下限紧急事件 上升沿(Lower Non-recoverable Going High)恢复事件
bit6上限一般事件 下降沿(Upper Non-critical Going Low)恢复事件
bit7上限一般事件 上升沿(Upper Non-critical Going High)恢复事件
bit8上限严重事件 下降沿(Upper Critical Going Low)恢复事件
bit9上限严重事件 上升沿(Upper Critical Going High)恢复事件
bit10上限紧急事件 下降沿(Upper Non-recoverable Going Low)恢复事件
bit11上限紧急事件 上升沿(Upper Non-recoverable Going High)恢复事件
bit12读值高于上限一般值 时恢复事件(Reading Upper Non-critical)
bit13读值高于上限严重值 时恢复事件(Reading Upper Critical)
bit14读值高于上限紧急值 时恢复事件(Reading Upper Non-recoverable)
bit15Reserved(保留)

ReadingMask(读值掩码)

bit含义
bit0下限一般值可读(Readable Lower Non-critical)
bit1下限严重值可读(Readable Lower Critical)
bit2下限紧急值可读(Readable Lower Non-recoverable)
bit3上限一般值可读(Readable Upper Non-critical)
bit4上限严重值可读(Readable Upper Critical)
bit5上限紧急值可读(Readable Upper Non-recoverable)
bit6~bit7Reserved(保留)
bit8下限一般值可设置(Settable Lower Non-critical)
bit9下限严重值可设置(Settable Lower Critical)
bit10下限紧急值可设置(Settable Lower Non-recoverable)
bit11上限一般值可设置(Settable Upper Non-critical)
bit12上限严重值可设置(Settable Upper Critical)
bit13上限紧急值可设置(Settable Upper Non-recoverable)
bit14~bit15Reserved(保留)

📊 离散传感器掩码位定义 ​

离散传感器(DiscreteSensor)的AssertMask/DeassertMask/DiscreteMask为16bit位掩码,bit i对应事件偏移(Event Offset)i(bit0为最低位):

bit含义
bit i事件偏移offset i 对应的产生/恢复/离散状态,i取0~14
bit15Reserved(保留)

各传感器类型对应的Event Offset含义由IPMI规范中该Sensor Type的事件定义决定,例如Watchdog2(SensorType=0x23)的offset 0~3分别表示 定时器超时中断、硬复位、掉电、重启。


📊 线性换算系数位定义 ​

门限传感器原始值到显示值的线性换算公式为:Y = (M×X + B×10^K),其中X为原始读值,K为指数(RBExp,有符号),M、B为有符号系数。M/MT/B/BA/Accuracy各字段位定义如下(bit0为最低位):

字段位定义
Mbit[7:0]:M系数低8bit(有符号)
MTbit[6:0]:M系数高7bit(M[14:8]);bit[7]:Reserved
Bbit[7:0]:B系数低8bit(有符号)
BAbit[1:0]:B系数高2bit(B[9:8]);bit[7:2]:准确率低6bit
Accuracybit[7:2]:准确率高6bit;bit[1:0]:传感器方向

Accuracy bit[1:0] 传感器方向:

值含义
00b方向未定义
01b数据随原始值增大而减小
10b数据随原始值增大而增大
11bReserved(保留)

📊 单位修饰说明 ​

ModifierUnit为传感器单位修饰词,取值为IPMI规范Unit Type Codes(与BaseUnit同一张表,0x00~0x5C,如 0x16=second、0x17=minute、0x12=RPM 等),与Unit字段的bit[6:5]修饰位共同决定显示单位:

Unit[6:5] modifier显示单位组合
00b无修饰,直接显示基本单位
01b基本单位/ModifierUnit单位(如 每秒、每分)
10b基本单位×ModifierUnit单位(乘积)
11b保留

ModifierUnit默认配置为0(无修饰单位)。


📊 Entity Instance取值说明 ​

实体实例标识(Instance)为实体实例号,取值范围0x00~0xFF,同一EntityId下各实体的Instance应唯一:

取值说明
0x00实体仅存在一个实例,或实例号未指定
0x01~0x5F实体实例号(多个同类实体时递增分配)
0x60~0x7F设备相对实体实例号(推荐从0x60开始配置,避免与系统相对实例冲突)
0x80~0xFF保留/OEM

🔗 动态关联机制 ​

语法规范 ​

使用 <=/xxx 和表达式语法实现动态关联:

yaml
# Entity关联
EntityId: "<=/Entity_MainBoard.Id"
EntityInstance: "<=/Entity_MainBoard.Instance"

# 电源状态关联
PowerState: "<=/Scanner_PowerGood.Value"

# 传感器读值关联和表达式
Reading: "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))"

# 传感器状态关联
ReadingStatus: "<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)"

关联说明 ​

  • Entity关联: 传感器必须关联对应的实体对象
  • PowerState: 可关联电源状态信号,支持动态上下电控制
  • Reading: 支持复杂表达式计算,可关联多个Scanner值
  • ReadingStatus: 传感器状态管理,支持条件表达式

📂 分类标准 ​

硬件属性 ​

  • 定义:与硬件特性和物理参数直接相关的属性
  • 特点:通常与IPMI标准协议规范对应,反映硬件特性
  • 示例:SensorType, ReadingType, SensorName, AssertMask, DeassertMask, ReadingMask, BaseUnit, M, RBExp, NominalReading, UpperCritical, LowerCritical, UpperNoncritical, LowerNonCritical, UpperNonrecoverable, LowerNonrecoverable, PositiveHysteresis, NegativeHysteresis, MaximumReading, Reading, ReadingStatus

软件属性 ​

  • 定义:用于逻辑控制和软件管理的参数
  • 特点:由CSR配置管理,用于传感器逻辑控制
  • 示例:Id, Instance, Slot, Name, Presence, PowerState, OwnerId, OwnerLun, EntityId, EntityInstance, Initialization, Capabilities, Unit, MinimumReading, SensorNumber, DiscreteType

📝 配置示例 ​

温度传感器配置 ​

json
{
  "Entity": {
    "Id": 7,
    "Instance": 96,
    "Name": "MainBoard",
    "Presence": 1,
    "PowerState": "<=/Scanner_PowerGood.Value",
    "Slot": 255
  },
  "ThresholdSensor": {
    "OwnerId": 32,
    "OwnerLun": 0,
    "EntityId": "<=/Entity_MainBoard.Id",
    "EntityInstance": "<=/Entity_MainBoard.Instance",
    "Initialization": 127,
    "Capabilities": 232,
    "SensorType": 1,
    "ReadingType": 1,
    "SensorName": "CPU Temperature",
    "AssertMask": 516,
    "DeassertMask": 516,
    "ReadingMask": 4626,
    "Unit": 128,
    "BaseUnit": 1,
    "M": 1,
    "MaximumReading": 127,
    "MinimumReading": 128,
    "UpperCritical": 85,
    "LowerCritical": 0,
    "PositiveHysteresis": 2,
    "NegativeHysteresis": 2,
    "Reading": "<=/Scanner_CpuTemp.Value",
    "ReadingStatus": "<=/Scanner_CpuTemp.Status",
    "SensorNumber": 255
  }
}

电压传感器配置 ​

json
{
  "Entity": {
    "Id": 7,
    "Instance": 97,
    "Name": "PowerBoard",
    "Presence": 1,
    "PowerState": "<=/Scanner_PowerGood.Value",
    "Slot": 255
  },
  "ThresholdSensor": {
    "OwnerId": 32,
    "OwnerLun": 0,
    "EntityId": "<=/Entity_PowerBoard.Id",
    "EntityInstance": "<=/Entity_PowerBoard.Instance",
    "Initialization": 127,
    "Capabilities": 232,
    "SensorType": 2,
    "ReadingType": 1,
    "SensorName": "BCU1 VCC_12V0_1",
    "AssertMask": 516,
    "DeassertMask": 516,
    "ReadingMask": 4626,
    "Unit": 0,
    "BaseUnit": 4,
    "M": 6,
    "RBExp": 224,
    "NominalReading": 204,
    "MaximumReading": 255,
    "MinimumReading": 0,
    "UpperCritical": 220,
    "LowerCritical": 180,
    "PositiveHysteresis": 4,
    "NegativeHysteresis": 4,
    "Reading": "<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr(($2 == 0) ? 0 : (($1 / 12) > 255 ? 204 : ($1 / 12)))",
    "ReadingStatus": "<=/Scanner_12v1.Status;<=/Scanner_12v1.Value;<=/Scanner_PowerGood.Value |> expr((($1 == 0) && (($2 / 12) > 255) && ($3 == 1)) ? 2 : $1)",
    "SensorNumber": 255
  }
}

离散传感器配置 ​

json
{
  "Entity": {
    "Id": 7,
    "Instance": 98,
    "Name": "SystemBoard",
    "Presence": 1,
    "PowerState": 1,
    "Slot": 255
  },
  "DiscreteSensor": {
    "EntityId": "<=/Entity_SystemBoard.Id",
    "EntityInstance": "<=/Entity_SystemBoard.Instance",
    "Initialization": 99,
    "Capabilities": 64,
    "SensorType": 35,
    "ReadingType": 111,
    "SensorName": "Watchdog2",
    "AssertMask": 271,
    "DeassertMask": 271,
    "DiscreteMask": 271,
    "Unit": 192,
    "BaseUnit": 0,
    "DiscreteType": 0,
    "SensorNumber": 255
  }
}

风扇传感器配置 ​

json
{
  "Entity": {
    "Id": 29,
    "Instance": 96,
    "Name": "FanBoard",
    "Presence": 1,
    "PowerState": "<=/Scanner_PowerGood.Value",
    "Slot": 255
  },
  "ThresholdSensor": {
    "OwnerId": 32,
    "OwnerLun": 0,
    "EntityId": "<=/Entity_FanBoard.Id",
    "EntityInstance": "<=/Entity_FanBoard.Instance",
    "Initialization": 127,
    "Capabilities": 232,
    "SensorType": 4,
    "ReadingType": 1,
    "SensorName": "Fan1 Speed",
    "AssertMask": 516,
    "DeassertMask": 516,
    "ReadingMask": 4626,
    "Unit": 0,
    "BaseUnit": 18,
    "M": 1,
    "MaximumReading": 255,
    "MinimumReading": 0,
    "LowerCritical": 20,
    "PositiveHysteresis": 2,
    "NegativeHysteresis": 2,
    "Reading": "<=/Scanner_FanSpeed.Value",
    "ReadingStatus": "<=/Scanner_FanSpeed.Status",
    "SensorNumber": 255
  }
}

🔧 使用指南 ​

配置步骤 ​

  1. 创建实体对象:首先配置Entity,定义传感器所属的实体
  2. 选择传感器类型:根据需要选择ThresholdSensor或DiscreteSensor
  3. 关联实体:通过EntityId和EntityInstance关联对应的Entity
  4. 配置传感器属性:设置SensorType、ReadingType、SensorName等基本属性
  5. 设置掩码:配置AssertMask、DeassertMask、ReadingMask等掩码
  6. 配置单位和范围:设置Unit、BaseUnit、MaximumReading、MinimumReading等
  7. 关联数据源:通过Reading和ReadingStatus关联Scanner等数据源
  8. 设置门限:配置UpperCritical、LowerCritical等门限值(ThresholdSensor)
  9. 配置迟滞量:设置PositiveHysteresis、NegativeHysteresis避免抖动

注意事项 ​

  • IPMI标准遵循:所有配置必须符合IPMI标准协议规范
  • 实体关联:传感器必须关联对应的Entity对象
  • 数据格式:注意有符号数和无符号数的MaximumReading和MinimumReading配置
  • Capabilities配置:根据实体的在位和上下电状态选择合适的Capabilities值
  • 传感器编号:SensorNumber建议配置为255,由sensor模块自动分配
  • 表达式语法:使用复杂表达式时需要确保语法正确
  • 门限设置:ThresholdSensor的门限值要在MinimumReading和MaximumReading范围内

性能建议 ​

  • 合理设置迟滞量:避免传感器事件频繁触发和恢复
  • 优化Reading表达式:复杂表达式可能影响性能
  • 实体状态管理:合理配置Presence和PowerState减少无效扫描
  • 传感器分组:相同类型的传感器可以考虑优化配置策略

故障排查 ​

  • 传感器不显示:检查Entity关联和Capabilities配置
  • 读值异常:检查Reading表达式和数据源关联
  • 事件不触发:检查AssertMask和DeassertMask配置
  • 门限显示错误:检查ReadingMask和门限值配置
  • 单位显示错误:检查Unit和BaseUnit配置
  • 传感器状态异常:检查ReadingStatus表达式和实体状态