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]