如何用ST语言写一个多功能开关控制程序(附赠案例程序)-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 864|回复: 0

如何用ST语言写一个多功能开关控制程序(附赠案例程序)

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2024-8-30 15:54:59 | 显示全部楼层 |阅读模式
    在项目开发过程中,难免会遇到门襟(安全门)控制、机器状态切换、定时任务、用户界面交互等等情况,那么编写一个控制功能块就能方便地解决问题。

    控制要求:
    • 边缘触发与状态切换:当Mode变量为FALSE时,如果IN输入引脚检测到一个上升沿(即从FALSE变为TRUE),输出Q将直接被设置为TRUE。而当Mode为TRUE时,同样的上升沿将导致Q输出的状态发生切换,即从TRUE变为FALSE或反之。

    • 设置信号:一旦SET输入变量被置为TRUE,输出Q将立即被设置为TRUE。

    • 超时自动复位:如果Timeout变量被赋予了一个非零的时间值,那么在该时间值到期后,输出Q将自动被复位为FALSE。

    • 复位信号:RST输入变量一旦被置为TRUE,输出Q将立即被置为FALSE。



    功能块程序:
    [AppleScript] 纯文本查看 复制代码
    //变量声明
    VAR_INPUT CONSTANT
      Mode : BOOL;
      Timeout : TIME;
    END_VAR
    VAR_INPUT
      IN,SET,RST : BOOL;
    END_VAR
    VAR_OUTPUT
      Q : BOOL;
    END_VAR
    VAR
      Ton1 : TON;
      Edge: BOOL;
    END_VAR
    
    
    // 如果Ton1.Q,则将Q设置为FALSE  
    IF Ton1.Q THEN 
      Q := FALSE; 
    END_IF;
    
    // 如果RST(复位)信号为1,则将Q设置为FALSE
    IF RST THEN
      Q := FALSE;
    ELSIF SET THEN// 如果SET信号为1,则将Q设置为TRUE    
      Q := TRUE;
      
    //如果IN为1且Edge为0,则根据Mode的值来切换或设置Q的值 
    ELSIF IN AND NOT Edge THEN  
      IF Mode THEN 
        q := NOT Q; 
      ELSE 
        q := TRUE; 
      END_IF;
    END_IF;
    
    // 更新Edge变量的值为IN的当前值,用于下一次检测IN的变化
    Edge := IN;
    // 如果timeout的值大于0秒(即,如果设置了超时时间),则调用Ton1函数,将Q的值作为输入,并设置超时时间  
    IF Timeout > T#0S THEN 
      Ton1(in := Q, PT := Timeout); 
    END_IF;


    640?wx_fmt=png&from=appmsg.jpg
    上述功能块适用于需要根据外部信号变化来控制输出状态的场景,特别是在需要边缘触发、状态切换、超时自动复位和快速响应复位信号的控制逻辑中。


    CONTROLLER.project

    150.67 KB, 下载次数: 4, 下载积分: 酷币 -1

    +10
    不赞一个?
    打赏鼓励一下!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2026-11-9 03:46 , Processed in 0.148671 second(s), 50 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表