记一种西门子SCL倒计时程序

程序概况

目的:输入 #启动信号 加 #总分钟数, 输出 时分秒 倒计时,倒计时结束输出一个完成信号。

思路:输入总分钟数换算成总秒数,分别计算时、分、秒。使用自带时钟存储器进行每秒-1计算,总秒数为0时,输出完成信号。

程序编写

变量设置

Input
    StartSignal: BOOL;  // 启动信号(上升沿触发)
    TotalMinutes: INT;  // 输入总分钟数(1-1440)
 
Output 
    Hours: INT;        // 剩余小时 
    Minutes: INT;      // 剩余分钟 
    Seconds: INT;      // 剩余秒 
    DoneSignal: BOOL;  // 完成信号 
 
Static
    TotalSeconds: DINT;            // 总秒数计算(1440*60>INT取值范围,故使用DINT)
    PrevStartSignal: BOOL := FALSE;// 启动信号上升沿检测 

程序主体

// 检测启动信号上升沿 
IF #StartSignal AND NOT #PrevStartSignal THEN  
    #TotalSeconds := #TotalMinutes*60 ;  // 分钟转秒 
    #DoneSignal := FALSE;                // 复位完成信号 
    #StartSignal := FALSE;               // 复位启动信号
END_IF;

#PrevStartSignal := #StartSignal;
#P := "Clock_1Hz" AND NOT #P_last;
#P_last := "Clock_1Hz";

IF NOT #DoneSignal AND #TotalSeconds > 0 THEN
    // 倒计时逻辑 
    IF #P  THEN
        #TotalSeconds := #TotalSeconds - 1;
        // 时分秒转换 
        #Hours := #TotalSeconds / 3600;
        #Minutes := (#TotalSeconds MOD 3600) / 60;
        #Seconds := #TotalSeconds MOD 60;
        
        // 完成信号触发 
        IF #TotalSeconds <= 0 THEN
            #DoneSignal := TRUE;
            #Hours := 0;
            #Minutes := 0;
            #Seconds := 0;
        END_IF;
    END_IF;
END_IF;

初始化

  • 当 #StartSignal 为真时,程序开始初始化。
  • 计算 #TotalSeconds:= #TotalMinutes*60 总秒数
  • 初始化 #DoneSignal := FALSE;  #StartSignal := FALSE;
  • 时钟存储器上升沿指令#P := "Clock_1Hz" AND NOT #P_last; #P_last := "Clock_1Hz";

定时器逻辑

  • 当 #P 信号触发且总秒数>0且完成信号为假时,触发递减操作。
  • 递减 #TotalSeconds := #TotalSeconds - 1;
  • 更新输出 时钟 数值:
    • #Hours := #TotalSeconds / 3600
    • #Minutes := (#TotalSeconds MOD 3600) / 60
    • #Seconds := #TotalSeconds MOD 60
  • 如果 #TotalSeconds 减到0,则设置 #DoneSignal 为真,并停止定时器。

输出控制

  • 实时更新 时钟 数值,用于显示当前的倒计时时间。
  • 当 #DoneSignal 为真时,输出完成信号,可以用于触发后续操作。

    界面制作

    触摸屏变量设置

            在HMI变量中创建一个倒计时的变量表,在其中输入所需的变量,与PLC侧变量进行相关联。

    防止输入分钟数输入错误,限制数值上下限,0-1440,24H即可。

    手动模式画面制作

    • 倒计时设置,选用元素 - IO域;动画关联 分钟数输入变量
    • 启动按钮,选用元素 - 按钮 ;事件 - 单击,置位位 启动按钮
    • 倒计时展示,选用元素 - IO域;动画关联 时,分,秒变量
    • 完成信号,选用基本对象 - 圆;动画-外观,关联完成信号,为真时红色,为假时绿色。

    效果展示

    感谢您的耐心阅读和支持。愿您的每一天都充满阳光和快乐,不断追寻自己的梦想与目标。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值