tt99166 发表于 2023-11-22 15:25:11

Codesys——启动延时、延时启动电路(基础指令的应用)

以下内容属于个人理解,如有错误欢迎指正。
本篇主要有三个基础的小案例,分别是启动延时关断电路、延时启动电路、以及闪烁计数停止电路。主要用到了基础的与或非指令以及定时器计数器指令,代码的相应部分做了注释便于大家理解。如果有不懂的地方可以私信我,下一篇将提供几个关于ST编程语句指令应用的案例哦~
启动延时关断电路

控制要求:按下点动启动按钮,Q0.0点亮,5s后灭掉
/********************变量声明************************/
PROGRAM PLC_PRG
VAR
        BUTTON_ON: BOOL;          //启动按钮
        LED: BOOL;                //灯
             
        TON0_PT: TIME := T#5S;    //定时器0预设值
        TON0_ET: TIME;            //定时器0当前值
        TON0_BASE: BOOL;          //定时器条件
       
        TON_0: TON;               //上升沿声明
        R_TRIG_0: R_TRIG;         //定时器声明
END_VAR

/********************程序编写************************/
//启动按钮上升沿
R_TRIG_0(CLK:=BUTTON_ON, Q=> );
//灯起保停
LED := (R_TRIG_0.Q OR LED ) AND (NOT TON_0.Q);
//定时器条件
TON0_BASE := LED AND (NOT TON_0.Q);
//定时器启动
TON_0(IN:=TON0_BASE , PT:=TON0_PT ,
          Q=> ,ET=>TON0_ET);延时启动电路

控制要求:按下I0.0(点动按钮),5S后,Q0.0点亮
/********************变量声明************************/
PROGRAM PLC_PRG
VAR
        BUTTON_ON: BOOL;       //启动按钮
        BUTTON_ON_UP: BOOL;    //启动按钮上升沿变量
        BUTTON_OFF: BOOL;      //停止按钮
        LED: BOOL;             //灯
        TEMP: BOOL;            //中间变量
       
        TON_IN: BOOL;          //定时器0启动信号
        TON_PT: TIME:=T#5S;    //定时器0预设值
        TON_ET: TIME;          //定时器0当前值
        TON_Q: BOOL;         //定时器0输出信号
       
        R_TRIG_0: R_TRIG;      //上升沿声明
        TON_0: TON;            //定时器声明
END_VAR

/********************程序编写************************/
//启动按钮上升沿
R_TRIG_0(CLK:=BUTTON_ON ,
             Q=> );
//启动按钮的上升沿信号接通TEMP变量。并对TEMP变量进行自锁。
//与上停止按钮的常闭点,即当停止按钮按下,TEMP变量为0.
//这里不与上停止按钮的常闭点的话无法断开TEMP变量,导致
//在启动不到5S的时候,点击停止按钮,灯还是会亮。
TEMP := (TEMP OR R_TRIG_0.Q) AND (NOT BUTTON_OFF);
TON_IN := TEMP AND (NOT BUTTON_OFF);
//定时器指令
TON_0(IN:=TON_IN , PT:=TON_PT ,
          Q=>TON_Q , ET=>TON_ET );

LED := TON_Q AND (NOT BUTTON_OFF);闪烁计数停止电路

控制要求:按下I0.0(点动按钮),Q0.0闪三次后熄灭。
/********************变量声明************************/
PROGRAM PLC_PRG
VAR
        BUTTON_ON: BOOL;
        BUTTON_ON_UP: BOOL;
       
        LED: BOOL;
        TEMP0: BOOL;
       
        CTU0_RESET: BOOL;
        CTU0_PV: WORD:=3;
        CTU0_Q: BOOL;
        CTU0_CV: WORD;
       
        TON0_PT: TIME:=T#1S;
        TON1_PT: TIME:=T#1S;

    TON0_IN: BOOL;
        TON1_IN: BOOL;
        TON0_ET: TIME;
        TON1_ET: TIME;

        TON0_Q: BOOL;
        TON1_Q: BOOL;
       
        R_TRIG_0: R_TRIG;
        TON_0: TON;
        TON_1: TON;
        TON_2: TON;
        TON_3: TON;
        TON_4: TON;
        TON_5: TON;
        CTU_0: CTU;
END_VAR

/********************程序编写************************/
//启动按钮的上升沿。
R_TRIG_0(CLK:=BUTTON_ON, Q=>BUTTON_ON_UP );
//启动按钮的上升沿信号接通TEMP变量。并对TEMP变量进行自锁。
TEMP0 := TEMP0 OR BUTTON_ON_UP;
//下面是一个振荡电路,每次闪一次灭一次对计数器进行加一。
LED := TEMP0 AND ((NOT TON_0.Q) OR TON_1.Q) AND (NOT CTU0_Q);

TON0_IN := TEMP0 AND (NOT TON_1.Q);
TON1_IN := TEMP0 AND TON_0.Q;
TON_0(IN:=TON0_IN , PT:=TON0_PT , Q=>TON0_Q , ET=>TON0_ET );   //亮1S
TON_1(IN:=TON1_IN , PT:=TON1_PT , Q=>TON1_Q , ET=>TON1_ET ); //灭1S

//利用启动按钮的上升沿对计数器进行复位,否则第二次启动的话灯将无法闪烁。
CTU_0(CU:=TON_0.Q , RESET:=BUTTON_ON_UP , PV:=CTU0_PV , Q=>CTU0_Q , CV=>CTU0_CV );谢谢大家~
页: [1]
查看完整版本: Codesys——启动延时、延时启动电路(基础指令的应用)