*openUBMC 支持风扇最大转速及风扇停转策略配置功能详细设计说明书*

<table>
    <tr>
        <td>所属SIG组:</td>
        <td>hardware_sig</td>
    </tr>
    <tr>
        <td>落入版本:</td>
        <td>26.1</td>
    </tr>
    <tr>
        <td>设计人员:</td>
        <td>付明权</td>
    </tr>
    <tr>
        <td>日期:</td>
        <td>2026.1.26</td>
    </tr>
</table>

**Copyright © 2025 openUBMC Community**

您对&quot;本文档&quot;的复制，使用，修改及分发受木兰宽松许可证, 第2版协议(以下简称&quot;MulanPSL2&quot;)的约束。
为了方便用户理解，您可以通过访问<https://license.coscl.org.cn/MulanPSL2>了解MulanPSL2的概要 (但不是替代)。
MulanPSL2的完整协议内容您可以访问如下网址获取：<https://license.coscl.org.cn/MulanPSL2>。

**改版记录**

<table>
    <tr>
        <th>日期</th>
        <th>修订版本</th>
        <th>修订描述</th>
        <th>作者</th>
        <th>审核</th>
    </tr>
    <tr>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
    </tr>
    <tr>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
    </tr>
</table>

**List of abbreviations**  **缩略语清单** ：

<table>
    <tr>
        <th>Abbreviations 缩略语</th>
        <th>Full spelling 英文全名</th>
        <th>Chinese explanation 中文解释</th>
    </tr>
    <tr>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
    </tr>
    <tr>
        <td>xxx</td>
        <td>xxx</td>
        <td>xxx</td>
    </tr>
</table>

[TOC]

# 1.功能分析
## 1.1 功能背景
<!-- 描述该需求的来源或背景，比如：支撑XXX功能、XXX优化等；以及该需求对用户（含组件）带来什么具体价值，如果没有该需求，对用户（含组件）带来什么损失； -->
当前调速策略配置无法满足部分场景下的需求配置，需要对相关场景进行补充支持：
1、对于风液混合机型，当出现漏液场景时，为了避免因为风扇故障或温度点异常等场景把风扇转速拉高，从而导致泄露液体吹散，发生漏液扩散，需要支持对风扇最大转速进行限制。
2、当前风扇异常调速仅支持转速异常、不在位配置，对于风扇停转场景无法覆盖，需要新增风扇停转的异常调速类型

## 1.2 功能描述
<!-- 描述该需求交付的整体功能，主要实现XXX功能，解决XXX问题，明确方案如何实现 -->
1、新增属性支持CSR配置风扇最大转速，风扇转速下发时，根据配置的风扇转速进行校验，当需要调节的转速大于等于限制值时，按限制值进行下发
2、风扇异常调速新增风扇停转的异常类型， 检测风扇停转时，按照对应异常场景配置的风扇转速进行调速

## 1.3 功能场景
<!-- 描述该需求的业务使用场景，内容包括：
1) 场景出发条件及对象：什么角色/工具/接口等在什么具体情况下使用该特性，使用对象技能如何？
2) 使用时间及频度
3) 描述该特性主要有哪些场景、子场景及关键任务操作 -->
1、支持风扇最大转速限制
2、支持风扇停转场景异常调速

## 1.4 功能列表
<!-- 描述该需求交付的功能列表，内容包括：列出功能详细描述，标题、描述。 -->
| 功能编号 | 功能标题 | 功能描述 |
| ------- | ------- | -------- |
| 1 | 支持风扇最大转速配置 | 支持PSR配置风扇最大转速，业务逻辑根据配置的最大转速动态调整下发的PWM |
| 2 | 支持风扇停转场景下的异常调速策略 | 新增风扇停转的异常调速类型，业务逻辑根据配置的异常调速策略检查并下发PWM |


# 2.功能设计
## 2.1 总体方案分析
<!-- 描述该方案的总体设计（注：相关输出方案可同步刷新到各组件仓） -->

### 2.1.1 方案详细设计
#### 2.1.1.1 方案概述
<!-- 描述该方案的整体实现，内容包括：涉及的关键点，实现策略等 -->
1、支持风扇最大转速限制
AirCoolingConfig对象新增MaxAllowedSpeedPercent私有属性，风扇进行自动调速转速下发前，对风扇转速进行校验，若风扇转速超过最大限制值，则按最大限制值进行风扇转速下发

2、支持风扇停转场景异常调速
AbnormalFan对象的Status属性新增枚举值StopRotation，新增风扇停转场景检查，当检测风扇停转时，产生风扇转速偏差告警，并且按照异常调速配置进行相应调速

#### 2.1.1.2 开发视图
<!-- 开发视图面向系统开发及软件管理，描述系统代码结构，构建结构的视图，主要解决系统技术实现和开发的问题，它依托逻辑视图，描述代码、构建结构 -->

**架构图：**

```mermaid
graph LR
    A[AirCoolingConfig<br/>MaxAllowedSpeedPercent<br/>新增属性] --> B[cooling_mgmt<br/>转速下发前调整]
    C[AbnormalFan<br/>Status: StopRotation<br/>新增枚举值] --> B
    D[fan_object<br/>停转检测] --> C
    B --> E[fan_service<br/>转速下发]
    
    B --> |根据最大转速配置调整下发转速| A
    D --> |检测停转状态| C
    C --> |获取异常调速策略| B
    B --> |应用调整后的转速| E
```

#### 2.1.1.3 运行视图
<!-- 运行视图面向系统运行，描述系统启动过程、运行期交互的视图，主要解决系统运行期交互，描述各可执行交付件在运行期的交互关系 -->

**时序图：**

```mermaid
sequenceDiagram
    participant CSR as CSR配置表达式
    participant AC as AirCoolingConfig
    participant CM as cooling_mgmt
    participant FO as fan_object
    participant AF as abnormal_fan
    
    CSR->>AC: 动态同步MaxAllowedSpeedPercent属性
    CM->>AC: 获取最大转速限制
    CM->>CM: 根据最大转速配置调整下发转速
    CM->>FO: 下发PWM值
    
    Note over FO: 每2秒检测一次
    FO->>FO: 检测风扇停转状态
    FO->>AF: 上报停转异常
    AF->>CM: 获取异常调速策略
    CM->>CM: 应用异常调速策略
```


### 2.1.2 内部依赖分析
<!-- 是否涉及与其他组件接口依赖，如果涉及需要确认当前是否已完成，是否匹配当前需求开发诉求 -->
不涉及

### 2.1.3 外部依赖分析
<!-- 是否涉及与平台SDK的依赖关系 -->
不涉及

### 2.1.4 北向接口分析
<!-- 需要分析当前功能是否有以下接口影响，如果有影响，则需要具体的补充影响点。其中注意点如下：
（1）如果有新增IPMI接口，请排查代码中IPMI命令注册的过滤字段，是否完全和IPMI命令的定义一致？
（2）新增一个接口时，需要咨询SIG组是否还有其他的接口受影响 -->
| 特性 | SNMP | CLI | WEB | KVM_VMM | IPMI(RMCP/RMCP+) | HMM | Redfish |
| ---- | ---- | ---- | --- | ------ | ---------------- | --- | ------- |
| 支持风扇最大转速及风扇停转策略配置 | NA | NA | NA | NA | NA | NA | NA |

### 2.1.5 兼容性分析
<!-- 当前的功能对现有在网的功能是否有影响，具体的影响点进行分析之后输出影响分析表格 -->
新增属性及枚举取值，无兼容性影响

### 2.1.6 定制化接口分析
<!-- 如果支持定制化设置，则需要给出定制化时的默认值（空定制化项条件下的设置值），如果涉及到定制化接口变更或新增，注意定制化接口文档需配套修改。注意定制化默认值变更对白牌包的影响 -->
不涉及

### 2.1.7 导入导出分析
<!-- 如果支持导入导出的配置，则需要分析导入导出的schema。 -->
不涉及

### 2.1.8 传感器分析
<!-- 如果需要新增传感器，则需要提前登记和评审新增的传感器要素。新增传感器评审需要上SIG-Interface进行评审 -->
不涉及

### 2.1.9 精准告警事件分析
<!-- 如果需要新增事件，则需要提前登记和评审新增的时间要素 -->
不涉及

### 2.1.10 系统锁定分析
<!-- 对外的接口或者命令是否支持系统锁定 -->
不涉及

### 2.1.11 用例场景分析
<!-- 以表格的形式输出该需求涉及的用例场景 -->
|用例编号|	场景|	预期|
|---|---|---|
|1|	配置风扇异常调速，构造风扇转速超过最大值	|风扇转速按照最大阈值进行调速|
|2|	未配置风扇异常调速，构造风扇满转|风扇转速正常调至满转|
|3|	上电场景，构造风扇停转	|产生转速偏差告警，风扇按照对应停转异常策略调速|
|4|	下电场景，风扇支持standyby，构造风扇停转	|产生转速偏差告警，风扇按照对应停转异常策略调速|
|5|	下电场景，风扇不支持standyby，构造风扇停转	|不产生转速偏差告警，风扇正常调速|


## 2.2 非功能质量属性设计
### 2.2.1 扩展性分析
<!-- 考虑后续新增类似功能可以很好地扩展 -->
不涉及

### 2.2.2 重用性分析
<!-- 是否为通用处理方式、接口，如果是得考虑重用性 -->
不涉及

### 2.2.3 可测试性分析
<!-- 此需求如何验证，是否可直接验证，or通过XXX功能覆盖验证，or需要单独怎加测试接口验证 -->
可通过mdbctl模拟或者实际环境构造验证

### 2.2.4 资料分析
<!-- 是否涉及资料修改 -->
不涉及

### 2.2.5 资源使用分析
<!-- 新增线程、内存分配、模型属性名长度是否合理，CPU占用率是否会激增，Flash中新增文件是否合理（频繁读写Flash会大幅缩短emmc寿命）；是否涉及消息队列，如果涉及请检查是否存在某些场景下消息队列会满导致消息丢失，例如大量消息发送到队列且处理消息需要耗费较长时间的场景。 -->
不涉及

### 2.2.6 可靠性分析
| 编号 | 场景 | 问题描述 | 可靠性影响 | 问题级别 | 建议解决方案/需求 | 讨论结果 | 跟踪人 | 备注 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 风扇停转误判 | 风扇短暂转速为0但实际未停转时，可能误判为停转 | 误判为停转后应用异常调速策略，影响正常散热 | 一般 | 通过连续5次检测机制降低误判概率，转速恢复后自动清除停转状态 |  |  |  |
| 2 | 双转子风扇单转子停转 | 双转子风扇仅单转子停转时，进行转速偏差检查，可能同时判断转子转速偏差 | 单转子停转时同时判定停转和转速偏差，无法正常触发停转异常调速 | 一般 | 当前设计已考虑：单转子停转时清除转速偏差检查，不进行转速偏差检查，避免误报 |  |  |  |
| 3 | 下电状态下的停转检测 |下电且非standby供电时，风扇转速为0，此时检查会误报告警 | 该场景下风扇可能确实停转但无法检测，下电后恢复正常 | 一般 | 当前设计已考虑：下电且非standby供电时风扇不进行停转检测，避免误告警 |  |  |  |


### 2.2.7 安全性分析
| 安全合规项 | 是否涉及 | 现有的防护措施 |
| --- | --- | --- |
| 访问控制（通道、文件权限、用户权限、查询权限、配置权限、接口权限） | 不涉及 |  |
| 敏感数据 | 不涉及 |  |
| 日志（操作日志、维护日志、安全日志、运行日志） | 不涉及 |  |
| 文档 | 不涉及 |  |
| 加密及算法 | 不涉及 |  |
| 新增关键资源（密钥、证书、关键配置）备份、恢复 | 不涉及 |  |
| 新增对外接口入参校验 | 不涉及 |  |
| 新增开源及三方软件引入 | 不涉及 |  |
# 3.功能实现
<!-- 通过表格、流程图、简明文字描述提供，力求容易看懂、容易实现，详细描述细节。 -->
## 3.1【功能编号】支持风扇最大转速配置
### 3.1.1 功能实现设计
新增属性支持CSR配置风扇最大转速，风扇转速下发时，根据配置的风扇转速进行校验，当需要调节的转速大于等于限制值时，按限制值进行下发

### 3.1.2 功能详细设计
AirCoolingConfig对象新增MaxAllowedSpeedPercent私有属性，风扇进行自动调速转速下发前，对风扇转速进行校验，若风扇转速超过最大限制值，则按最大限制值进行风扇转速下发

| 属性名称| 	变化类型| 	签名| 	持久化| 	接口说明| 	接口约束| 
| --- | --- | --- |--- | --- | --- |
| MaxAllowedSpeedPercent	| 新增属性	| U8	| 不持久化	| 风扇允许的最大转速百分比，默认取值为100	| 

```json
"AirCoolingConfig_1": {
    "SpeedPercentRange": [10, 100],
    "InitialSpeedPercent": 100,
    "MaxAllowedSpeedPercent": 70
}
```


**风扇自动调速转速下发流程如下：**<br>
1、获取PID计算调速信息<br>
2、通过最小要求的风扇转速刷新调速信息<br>
3、基于异常调速值更新调速信息<br>
4、基于混动模式更新调速信息<br>
5、基于最大允许转速更新调速信息（若风扇转速超过最大限制值，则按最大限制值进行风扇转速下发）<br>
**流程图：**

```mermaid
flowchart TD
    A[开始] --> B[获取PID计算调速信息]
    B --> C[通过最小要求的风扇转速刷新调速信息]
    C --> D[基于异常调速值更新调速信息]
    D --> E[基于混动模式更新调速信息]
    E --> F{获取MaxAllowedSpeedPercent}
    F -->|存在配置| G{风扇转速 > 最大限制值?}
    F -->|不存在配置| H[下发风扇转速]
    G -->|是| I[限制为最大限制值]
    G -->|否| H
    I --> H
    H --> J[结束]
```

**时序图：**

```mermaid
sequenceDiagram
    participant CM as cooling_mgmt
    participant PID as PID算法
    participant AC as AirCoolingConfig
    participant FS as fan_service
    
    CM->>PID: 获取PID计算调速信息
    PID-->>CM: 返回PWM值
    CM->>CM: 通过最小要求的风扇转速刷新
    CM->>CM: 基于异常调速值更新
    CM->>CM: 基于混动模式更新
    CM->>AC: 获取MaxAllowedSpeedPercent
    AC-->>CM: 返回最大限制值
    CM->>CM: 校验并限制风扇转速
    CM->>FS: 下发PWM值
```


### 3.1.3 开发者测试
<!--
增加模块接口：以活动图/流程图等形式明确模块内处理流程，针对模块处理流程中的分支进行覆盖
修改模块接口处理流程：覆盖修改影响流程分支
-->
DT设计参考：
| 组件名 | 用例类型 | 测试用例描述 | 用例名称 | 预置条件 | 操作步骤 | 预期结果 |
| --- | --- | --- | --- | --- | --- | --- |
| firmware_mgmt | IT | 测试BMC固件更新生效状态 | test_update_bmc_active_status | 状态机为parallel_upgrading | 1.更新固件生效资源<br/>2.访问bmc.kepler.firmware_mgmt下/bmc/kepler/UpdateService/FirmwareActive/BMC接口<br/>3.查看/bmc/kepler/UpdateService/FirmwareActive中生效对象生效信息<br/>4.查看/bmc/kepler/UpdateService/FirmwareActive/BMC下bmc.kepler.UpdateService.FirmwareActiveInfo中生效信息 | 1.更新成功<br/>2.访问成功<br/>3.查询到bmc生效资源<br/>4.bmc生效信息：'FirmwareId'='BMC', 'FirmwareType'='BMC', 'ActiveStatus'='Ready' |
#### 3.1.3.1 单元测试
<!-- UT，主要是功能单元测试，测试对象是功能单元接口。UT测试设计要从黑盒（功能）角度设计，从输入(I)、处理（B）、预期输出（O）的角度进行用例分析设计，测试覆盖率仅作为反馈，用于分析哪些功能场景没有覆盖到，从而指导测试设计优化并补充测试用例 -->
| 组件名 | 用例类型 | 测试用例描述 | 用例名称 | 预置条件 | 操作步骤 | 预期结果 |
| --- | --- | --- | --- | --- | --- | --- |
| thermal_mgmt | UT | 测试MaxAllowedSpeedPercent属性配置后，风扇转速超过限制值时被限制 | test_max_allowed_speed_limit | 1.系统正常运行<br/>2.配置MaxAllowedSpeedPercent=70 | 1.设置风扇转速为80%<br/>2.调用update_pwm_with_max_allowed_speed_percent函数 | 风扇转速被限制为70% |
| thermal_mgmt | UT | 测试MaxAllowedSpeedPercent属性配置后，风扇转速未超过限制值时正常下发 | test_max_allowed_speed_normal | 1.系统正常运行<br/>2.配置MaxAllowedSpeedPercent=70 | 1.设置风扇转速为50%<br/>2.调用update_pwm_with_max_allowed_speed_percent函数 | 风扇转速正常下发为50% |
| thermal_mgmt | UT | 测试未配置MaxAllowedSpeedPercent属性时，风扇转速正常下发 | test_no_max_allowed_speed_config | 1.系统正常运行<br/>2.未配置MaxAllowedSpeedPercent | 1.设置风扇转速为100%<br/>2.调用update_pwm_with_max_allowed_speed_percent函数 | 风扇转速正常下发为100% |



#### 3.1.3.2 集成测试
<!-- IT，主要是组件/模块内的集成测试，测试对象是模块/组件接口。IT测试设计将模块/组件当作黑盒测试，IT测试用例中禁止对组件/模块内部代码打桩，如果确实有少量场景难以构造，可以考虑在测试框架中统一打桩并提供接口供测试用例调用构造场景。
说明：API测试属于IT，其测试对象是微服务接口。
PCST，是指PC上的服务集成测试，测试对象是功能需求。PCST测试设计，要覆盖正常功能、异常功能和交叉功能，采用灰盒 -->
无

## 3.2【功能编号】支持风扇停转策略配置
### 3.2.1 功能实现设计
风扇异常调速新增风扇停转的异常类型，检测风扇停转时，产生风扇转速偏差告警，并且按照风扇停转异常场景配置的风扇转速进行异常调速


### 3.2.2 功能详细设计
AbnormalFan对象的Status属性新增枚举值StopRotation，新增风扇停转场景检查，当检测风扇停转时，产生风扇转速偏差告警，并且按照异常调速配置进行相应调速

| 属性名称| 	变化类型| 	签名| 	持久化| 	接口说明| 	接口约束| 
| --- | --- | --- |--- | --- | --- |
| Status	| 新增属性取值	| String	| 不持久化	| 风扇异常类型，Abnormalrotation（转速异常）、NotInPosition（不在位）、StopRotation（停转）	| 

```json
"AbnormalFan_1": {
    "Id": 1,
    "FanIdx": 1,
    "Status": "StopRotation",
    "FanGroup": [1, 2, 3, 4],
    "SpeedPercentage": 90
}
```


**风扇停转检测流程如下：**<br>
1、获取风扇板MCU/CPLD升级状态、上下电状态及风扇standyby类型。如果正在升级状态或者下点状态，且风扇是非standby供电，清除统计数据，不进行后续检测<br>
2、进行风扇后转子停转状态检测，每2s检测一次，连续五次获取风扇转速为0，则认为风扇停转，否则恢复状态<br>
3、风扇不是双转子风扇，按照前转子状态进行刷新，否则和后转子一样进行风扇停转状态检测<br>
4、若前转子或者后转子存在任一转子停转，则不进行后续转速偏差检查，否则正常进行后续转速偏差检查<br>
**流程图：**

```mermaid
flowchart TD
    A[开始] --> B{MCU升级或下电且非standby?}
    B -->|是| C[清除统计数据，结束]
    B -->|否| D[检测后转子转速]
    D --> E{转速为0?}
    E -->|是| F[停转计数+1]
    E -->|否| G[停转计数清零]
    F --> H{停转计数 > 5?}
    H -->|是| I[标记后转子停转]
    H -->|否| J{是否为双转子风扇?}
    G --> J
    I --> J
    J -->|否| K[同步前转子状态]
    J -->|是| L[检测前转子转速]
    L --> M{前转子转速为0?}
    M -->|是| N[前转子停转计数+1]
    M -->|否| O[前转子停转计数清零]
    N --> P{前转子停转计数 > 5?}
    P -->|是| Q[标记前转子停转]
    P -->|否| R{任一转子停转?}
    O --> R
    Q --> R
    K --> R
    R -->|是| S[清除转速偏差检查，结束]
    R -->|否| T[正常进行转速偏差检查]
    T --> U[结束]
    C --> U
    S --> U
```

**时序图：**

```mermaid
sequenceDiagram
    participant FO as fan_object
    participant CM as cooling_mgmt
    participant AF as abnormal_fan
    participant FS as fan_service
    
    Note over FO: 每2秒检测一次
    FO->>FO: 检查MCU升级/下电状态
    alt MCU升级或下电且非standby
        FO->>FO: 清除统计数据，退出
    else 正常状态
        FO->>FO: 检测后转子转速
        alt 转速为0
            FO->>FO: 停转计数+1
            alt 连续5次为0
                FO->>FO: 标记后转子停转
            end
        else 转速不为0
            FO->>FO: 停转计数清零
        end
        alt 双转子风扇
            FO->>FO: 检测前转子转速
            alt 前转子停转
                FO->>FO: 标记前转子停转
            end
        end
        alt 任一转子停转
            FO->>CM: 上报停转异常
            CM->>AF: 获取异常调速策略
            AF-->>CM: 返回异常调速PWM值
            CM->>FS: 下发异常调速PWM
        else 无停转
            FO->>FO: 正常进行转速偏差检查
        end
    end
```


### 3.2.3 开发者测试
<!--
增加模块接口：以活动图/流程图等形式明确模块内处理流程，针对模块处理流程中的分支进行覆盖
修改模块接口处理流程：覆盖修改影响流程分支
-->
DT设计参考：
| 组件名 | 用例类型 | 测试用例描述 | 用例名称 | 预置条件 | 操作步骤 | 预期结果 |
| --- | --- | --- | --- | --- | --- | --- |
| firmware_mgmt | IT | 测试BMC固件更新生效状态 | test_update_bmc_active_status | 状态机为parallel_upgrading | 1.更新固件生效资源<br/>2.访问bmc.kepler.firmware_mgmt下/bmc/kepler/UpdateService/FirmwareActive/BMC接口<br/>3.查看/bmc/kepler/UpdateService/FirmwareActive中生效对象生效信息<br/>4.查看/bmc/kepler/UpdateService/FirmwareActive/BMC下bmc.kepler.UpdateService.FirmwareActiveInfo中生效信息 | 1.更新成功<br/>2.访问成功<br/>3.查询到bmc生效资源<br/>4.bmc生效信息：'FirmwareId'='BMC', 'FirmwareType'='BMC', 'ActiveStatus'='Ready' |
#### 3.2.3.1 单元测试
<!-- UT，主要是功能单元测试，测试对象是功能单元接口。UT测试设计要从黑盒（功能）角度设计，从输入(I)、处理（B）、预期输出（O）的角度进行用例分析设计，测试覆盖率仅作为反馈，用于分析哪些功能场景没有覆盖到，从而指导测试设计优化并补充测试用例 -->
| 组件名 | 用例类型 | 测试用例描述 | 用例名称 | 预置条件 | 操作步骤 | 预期结果 |
| --- | --- | --- | --- | --- | --- | --- |
| thermal_mgmt | UT | 测试AbnormalFan的Status属性新增StopRotation枚举值时，风扇后转子连续5次转速为0检测为停转 | test_stop_rotation_detection | 1.系统正常运行<br/>2.风扇在位<br/>3.配置AbnormalFan的Status为StopRotation | 1.连续5次设置后转子转速为0<br/>2.调用check_stop_rotation函数 | 后转子状态标记为StopRotation，应用异常调速策略 |
| thermal_mgmt | UT | 测试AbnormalFan的Status为StopRotation时，风扇后转子转速非0时恢复停转状态 | test_stop_rotation_recover | 1.系统正常运行<br/>2.风扇后转子已停转<br/>3.停转计数为6 | 1.设置后转子转速为1000<br/>2.调用check_stop_rotation函数 | 停转计数清零，后转子状态恢复为Normal |
| thermal_mgmt | UT | 测试AbnormalFan的Status为StopRotation时，双转子风扇前转子停转检测 | test_front_rotor_stop_rotation | 1.系统正常运行<br/>2.双转子风扇在位<br/>3.配置AbnormalFan的Status为StopRotation | 1.连续5次设置前转子转速为0<br/>2.调用check_stop_rotation函数 | 前转子状态标记为StopRotation |



#### 3.2.3.2 集成测试
<!-- IT，主要是组件/模块内的集成测试，测试对象是模块/组件接口。IT测试设计将模块/组件当作黑盒测试，IT测试用例中禁止对组件/模块内部代码打桩，如果确实有少量场景难以构造，可以考虑在测试框架中统一打桩并提供接口供测试用例调用构造场景。
说明：API测试属于IT，其测试对象是微服务接口。
PCST，是指PC上的服务集成测试，测试对象是功能需求。PCST测试设计，要覆盖正常功能、异常功能和交叉功能，采用灰盒 -->
无
