CSR配置字典之防抖策略类
更新时间:2025/7/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题防抖策略类配置字典
版本v1.0
创建日期2025-01-27
最后更新2025-01-27
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建防抖策略类配置字典全新文档系统管理员

🎯 类概览

防抖策略 类

属性
类名称Debounce
功能描述在通过硬件代理Scanner对象读取硬件数据的时候,可以通过debounce属性配置防抖对象,目前支持的防抖类型有中值滤波(median),均值防抖(MidAvg),持续一致(Cont),二值持续一致(ContBin),无防抖(None)等类型
所属SIG组hardware
所属组件hwproxy
责任人硬件代理组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

Median(中值滤波防抖策略)

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
WindowSizeU3210--滤波窗口大小
即参与防抖时取值的个数,如取值10,表示读取10个值取中值作为防抖后的输出值,未取满10个之前,输出默认值
通过防抖策略和参数对获取到的值进行防抖。温度类信号推荐使用中值滤波,平滑温度信号推荐使用均值滤波,二值状态推荐使用二值持续一致10CSR配置软件
DefaultValueU321--防抖策略生效前的值通过防抖策略和参数对获取到的值进行防抖1CSR配置软件

Cont(持续一致防抖策略)

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
NumU3210--防抖次数通过防抖策略和参数对获取到的值进行防抖10CSR配置软件
DefaultValueU321--默认值通过防抖策略和参数对获取到的值进行防抖1CSR配置软件

ContBin(二值持续一致防抖策略)

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
NumHU323--高电平防抖次数通过防抖策略和参数对获取到的值进行防抖3CSR配置软件
NumLU321--低电平防抖次数通过防抖策略和参数对获取到的值进行防抖1CSR配置软件
DefaultValueU320--默认值通过防抖策略和参数对获取到的值进行防抖0CSR配置软件

MidAvg(均值防抖策略)

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
WindowSizeU3210--滤波窗口大小
即取值个数
通过防抖策略和参数对获取到的值进行防抖10CSR配置软件
DefaultValueU321--默认值通过防抖策略和参数对获取到的值进行防抖1CSR配置软件
IsSignedBooleanTRUETRUE/FALSE-是否有符号通过防抖策略和参数对获取到的值进行防抖TRUECSR配置软件

None(无防抖策略)

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
DefaultValueU320--默认值
无实际意义
无实际意义,可以不配置Debounce0CSR配置软件

🔗 动态关联机制

语法规范

防抖策略通常作为Scanner的Debounce属性被引用:

yaml
# 在Scanner中引用防抖策略
Scanner:
  Debounce: "#/MedianDebounce_Temperature"    # 引用中值滤波防抖
  Debounce: "#/ContBin_H6L3"                 # 引用二值持续一致防抖
  Debounce: "#/MidAvg_ADTEST_0"              # 引用均值防抖
  Debounce: "None"                           # 无防抖

关联说明

  • 防抖策略对象被Scanner通过Debounce属性引用
  • 不同类型的防抖策略适用于不同的数据特征
  • 防抖策略处理后的数据会作为Scanner的最终输出

📂 分类标准

软件属性

  • 定义:所有防抖策略属性均为软件层面的数据处理参数
  • 特点:通过算法处理原始硬件数据,提供稳定的输出
  • 示例WindowSize, DefaultValue, Num, NumH, NumL, IsSigned

📝 配置示例

中值滤波防抖配置

json
{
  "MedianDebounce_Temperature": {
    "WindowSize": 10,
    "DefaultValue": 25
  }
}

持续一致防抖配置

json
{
  "ContDebounce_PowerStatus": {
    "Num": 5,
    "DefaultValue": 1
  }
}

二值持续一致防抖配置

json
{
  "ContBin_H6L3": {
    "NumH": 6,
    "NumL": 3,
    "DefaultValue": 0
  }
}

均值防抖配置

json
{
  "MidAvg_ADTEST_0": {
    "WindowSize": 8,
    "DefaultValue": 0,
    "IsSigned": true
  }
}

无防抖配置

json
{
  "NoneDebounce": {
    "DefaultValue": 0
  }
}

🔧 使用指南

配置步骤

  1. 选择防抖类型:根据数据特征选择合适的防抖策略
  2. 配置参数:设置窗口大小、防抖次数等关键参数
  3. 设置默认值:配置未达到防抖条件时的输出值
  4. 关联Scanner:在Scanner的Debounce属性中引用防抖对象
  5. 验证效果:观察防抖后的数据稳定性

注意事项

  • 防抖类型选择:根据数据类型和噪声特征选择合适的防抖策略
  • 窗口大小设置:WindowSize影响防抖效果和响应速度
  • 默认值配置:DefaultValue应该是合理的初始值
  • 符号处理:MidAvg策略需要正确配置IsSigned属性
  • 性能考虑:防抖窗口过大会增加内存使用和计算开销

性能建议

  • 窗口大小优化:在防抖效果和响应速度之间找到平衡
  • 内存管理:大窗口防抖会占用更多内存
  • 计算开销:复杂防抖算法会增加CPU使用
  • 数据类型匹配:选择与数据特征匹配的防抖策略

防抖策略详解


中值滤波(Median)

  • 适用场景:脉冲噪声较多的场景
  • 工作原理:取窗口内数据的中值作为输出
  • 优点:对脉冲噪声有很好的抑制效果
  • 缺点:对连续变化的数据可能有延迟

持续一致(Cont)

  • 适用场景:需要确保数据稳定性的场景
  • 工作原理:连续N次读取到相同值才输出
  • 优点:确保输出数据的稳定性
  • 缺点:对快速变化的数据响应较慢

二值持续一致(ContBin)

  • 适用场景:二值信号(如开关状态)的防抖
  • 工作原理:高低电平分别设置不同的防抖次数
  • 优点:对二值信号的防抖效果很好
  • 缺点:只适用于二值信号

均值防抖(MidAvg)

  • 适用场景:模拟量数据的平滑处理
  • 工作原理:取窗口内数据的平均值作为输出
  • 优点:对随机噪声有很好的平滑效果
  • 缺点:对突变信号有延迟

无防抖(None)

  • 适用场景:数据质量很好,无需防抖的场景
  • 工作原理:直接输出原始数据
  • 优点:响应速度最快
  • 缺点:无法抑制噪声

常见问题

  • Q: 如何选择合适的防抖策略?
    • A: 根据数据特征选择:脉冲噪声用Median,随机噪声用MidAvg,二值信号用ContBin,稳定性要求高用Cont
  • Q: WindowSize设置多大合适?
    • A: 在防抖效果和响应速度之间平衡,一般5-20之间,噪声大可以适当增大
  • Q: 默认值如何设置?
    • A: 设置为系统的安全值或正常工作值,例如12V电压的默认值可以设为12000(毫伏)
  • Q: IsSigned什么时候设置为TRUE?
    • A: 当数据可能为负值时(如温度传感器的负温度值)设置为TRUE