返回主站|会员中心|保存桌面

赛巴综合服务商    

隔膜阀|单向阀|压力变送器|流量计|接头连接件|高纯管|扩管器扳手|电磁阀|空气过滤...

新闻分类
  • 暂无分类
站内搜索
 
友情链接
  • 暂无链接
首页 > 新闻中心 > 上升沿防抖程序!
新闻中心
上升沿防抖程序!
发布时间:2025-09-10        浏览次数:1        返回列表

上升沿防抖程序是工业控制中常用的程序,用于处理按钮、传感器等输入信号的抖动问题,确保系统只响应一次一次有效的上升沿触发。以下是几种常见的上升沿防抖程序实现方法:

1. 基于定时器的上升沿防抖程序(梯形图思路)

这是最常用的方法,通过设定一个延时定时器来过滤抖动信号:


plaintext

// 输入信号:I0.0(需要防抖的信号)
// 输出信号:Q0.0(防抖后的上升沿信号)
// 中间变量:M0.0(中间存储位)、T37(延时定时器,100ms为单位)

// 检测输入信号的上升沿
LD     I0.0
AN     M0.0
=      M0.1       // 产生原始上升沿信号

// 启动定时器,设置防抖时间(例如500ms)
LD     M0.1
TON    T37, 5    // 5*100ms=500ms

// 定时器计时完成后,确认上升沿有效
LD     T37
AN     Q0.0
=      Q0.0       // 输出防抖后的上升沿信号

// 存储当前状态用于下次比较
LD     I0.0
=      M0.0

2. 基于扫描周期计数的上升沿防抖(STL 语言)

通过累计扫描周期来实现延时,适用于没有定时器资源的情况:


plaintext

// 输入:I0.0,输出:Q0.0
// 变量:DB1.Count(计数器),DB1.OldState(上一周期状态)

IF I0.0 <> DB1.OldState THEN       // 状态发生变化
    DB1.Count := 0;                // 重置计数器
ELSE
    IF DB1.Count < 10 THEN         // 假设需要10个扫描周期防抖
        DB1.Count := DB1.Count + 1;
    END_IF;
END_IF;

// 当状态稳定10个周期且为上升沿时输出
IF DB1.Count = 10 AND I0.0 = 1 AND DB1.OldState = 0 THEN
    Q0.0 := 1;
ELSE
    Q0.0 := 0;
END_IF;

DB1.OldState := I0.0;              // 保存当前状态

3. 边沿检测指令结合防抖(SCL 语言)

利用 PLC 的边沿检测指令,配合防抖逻辑:


plaintext

FUNCTION_BLOCK FB_RisingEdgeDebounce
VAR_INPUT
    Signal : BOOL;              // 输入信号
    DebounceTime : TIME := T#50MS; // 防抖时间
END_VAR
VAR_OUTPUT
    RisingEdge : BOOL;          // 防抖后的上升沿
END_VAR
VAR
    edgeDetect : BOOL;          // 边沿检测
    oldSignal : BOOL;           // 上一状态
    timer : TON;                // 定时器
END_VAR

// 检测原始上升沿
edgeDetect := Signal AND NOT oldSignal;

// 启动定时器
IF edgeDetect THEN
    timer(IN := TRUE, PT := DebounceTime);
ELSIF NOT Signal THEN
    timer(IN := FALSE);
END_IF;

// 定时器完成且信号仍为1时,确认有效上升沿
RisingEdge := timer.Q AND Signal;

// 保存当前状态
oldSignal := Signal;
END_FUNCTION_BLOCK

防抖程序设计要点:

  1. 防抖时间选择:根据实际设备特性,通常按钮选择 20-200ms,机械开关选择 50-500ms

  2. 资源占用:定时器方式简单但占用定时器资源,扫描计数方式更灵活

  3. 应用场景:高速信号建议使用硬件滤波 + 软件防抖双重处理

  4. 状态保持:确保在防抖期间信号状态保持稳定才认为有效


实际应用时,可根据 PLC 型号和具体需求选择合适的实现方式,关键是要确保过滤掉抖动信号,同时不影响正常操作的响应速度。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服