『7x24小时有问必答』
点击蓝字

PLC自动化汇
关注我们

程序12:延时停止控制程序

功能说明

收到停止信号后,设备不立即停止,而是继续运行设定的延时时间后再停止。用于保护设备或完成当前工作循环。

应用场景

风机冷却延时
水泵排水延时
输送带清空延时
设备完成当前循环

SCL代码实现

FUNCTION_BLOCK FB_延时停止控制VAR_INPUT       // 控制信号      b_启动按钮:  BOOL;  // 输入:启动按钮      b_停止按钮:  BOOL;  // 输入:停止按钮      b_急停信号:  BOOL  :=  TRUE;  // 输入:急停信号(急停时不延时)

       // 延时参数      r_延时时间: TIME := T#10S;  // 输入:延时停止时间      b_立即停止:  BOOL  :=  FALSE;  // 输入:强制立即停止END_VAR

VAR_OUTPUT      b_设备运行:  BOOL;  // 输出:设备运行信号      b_延时指示:  BOOL;  // 输出:延时停止指示灯      b_运行指示:  BOOL;  // 输出:运行指示灯      r_剩余时间: TIME;  // 输出:剩余延时时间END_VAR

VAR      b_运行命令:  BOOL;  // 内部:运行命令      t_停止延时: TOF;  // 定时器:停止延时(TOF定时器)      e_停止状态: INT :=  0;  // 内部:停止状态      b_停止触发:  BOOL;  // 内部:停止触发标志END_VAR
// == TOF定时器工作原理 ==// TOF定时器:当IN从TRUE变为FALSE时开始计时,计时期间Q保持TRUE

// == 主控制逻辑 ==// 1. 启动/停止命令处理b_运行命令 := (b_启动按钮 OR b_运行命令)                       AND NOT b_停止按钮                     AND b_急停信号;

// 2. 停止触发检测(检测下降沿)VAR_TEMP      b_上次运行: BOOL;END_VAR

// 检测运行命令的下降沿(从ON到OFF)IF b_上次运行 AND NOT b_运行命令 THEN      b_停止触发 := TRUE;END_IF;

b_上次运行 := b_运行命令;
// 3. 延时停止状态机CASE e_停止状态 OF       0:  // 状态0:运行或停止状态            t_停止延时(IN:=FALSE);   // 复位定时器            b_延时指示 := FALSE;            r_剩余时间 := T#0S;

            IF b_运行命令 THEN                  b_设备运行 := TRUE;                  e_停止状态 :=  10;   // 进入运行状态            ELSE                  b_设备运行 := FALSE;            END_IF;

       10:  // 状态10:运行状态            b_设备运行 := TRUE;            b_运行指示 := TRUE;

             // 检查是否触发停止            IF b_停止触发 OR NOT b_急停信号 THEN                  IF b_立即停止 OR NOT b_急停信号 THEN                         // 立即停止(急停或强制停止)                        b_设备运行 := FALSE;                        b_运行命令 := FALSE;                        e_停止状态 :=  0;                  ELSE                         // 进入延时停止                        e_停止状态 :=  20;                        b_停止触发 := FALSE;   // 清除触发标志                  END_IF;            END_IF;

       20:  // 状态20:延时停止中             // TOF定时器工作:IN为FALSE时开始计时            t_停止延时(IN:=FALSE, PT:=r_延时时间);

             // TOF特性:计时期间Q保持TRUE            b_设备运行 := t_停止延时.Q;            b_延时指示 := t_停止延时.Q;   // 延时期间指示灯亮

             // 计算剩余时间            IF t_停止延时.Q THEN                  r_剩余时间 := r_延时时间 - t_停止延时.ET;            ELSE                  r_剩余时间 := T#0S;            END_IF;

             // 延时完成检查            IF NOT t_停止延时.Q THEN                   // 延时完成                  b_设备运行 := FALSE;                  b_运行命令 := FALSE;                  e_停止状态 :=  0;   // 返回初始状态

                   // 特殊处理:如果运行命令又变为TRUE(中途重新启动)                  IF b_运行命令 THEN                        e_停止状态 :=  10;                  END_IF;            END_IF;

             // 延时过程中被重新启动            IF b_启动按钮 AND b_运行命令 THEN                  t_停止延时(IN:=TRUE);   // 停止计时                  e_停止状态 :=  10;           // 返回运行状态            END_IF;END_CASE;

// 4. 运行指示灯b_运行指示 := b_设备运行;

END_FUNCTION_BLOCK

TOF定时器详解

// TOF定时器的特性演示VAR      t_演示定时器: TOF;END_VAR

// 场景:按下按钮时灯立即亮,松开按钮后灯延时10秒才灭t_演示定时器(IN:=b_按钮, PT:=T#10S);b_灯 := t_演示定时器.Q;   // Q在IN为TRUE或计时期间都为TRUE

设计要点

TOF特性理解TOF定时器的"断开延时"特性
急停处理急停时立即停止,不延时
重新启动延时过程中允许重新启动
状态指示明确指示设备处于延时停止状态
学习PLC编程是一场逻辑思维与工程实践的深度结合。沉下心来,从每一个开关、定时器、计数器开始,你终将能搭建出属于自己的自动化大厦。祝你学习顺利!
【 看完别滑走!需要你的支持!】
这篇干货文章花了大量时间整理,如果对你有帮助或启发,请一定:
  「评论区」  留下你的想法

  遇到了类似问题?有更好的方法?期待你分享见解!
  「转发」  给更多需要的人

  也许你身边的朋友,正被同样的问题困扰!
  「收藏」  随时回看复习

  知识点需要反复消化,码住不迷路!
每一次互动都是我们继续创作优质内容的动力!

感谢有你,一起进步!

---

---

推荐阅读:
分享让更多人看看
点赞
收藏
分享

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码