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

酷德网

HSC6490-cn中国制造,中国芯~
搜索附件  
酷德网 › 附件中心 › CODESYS资源下载区 › CODESYS教程文档 › 如何用ST语言写一个多功能开关控制程序(附赠案例程序): CONTROLLER.project

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

 

如何用ST语言写一个多功能开关控制程序(附赠案例程序):
在项目开发过程中,难免会遇到门襟(安全门)控制、机器状态切换、定时任务、用户界面交互等等情况,那么编写一个控制功能块就能方便地解决问题。

控制要求:
  • 边缘触发与状态切换:当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;


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



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

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

GMT+8, 2026-9-28 01:53 , Processed in 0.100444 second(s), 21 queries .

酷德网

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

返回顶部