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 );

谢谢大家~

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 CODESYS 编写的一个简单的延时启动和停止程序,可以根据需要进行修改: ``` PROGRAM DelayedStartStop VAR bStart: BOOL := FALSE; // 启动信号 bStop: BOOL := FALSE; // 停止信号 bRunning: BOOL := FALSE; // 运行标志 tStartTime: TIME; // 启动时间 tStopTime: TIME; // 停止时间 nDelayTime: INT := 10; // 延迟时间 END_VAR IF NOT bRunning THEN // 如果没有运行 IF bStart THEN // 如果有启动信号 tStartTime := TON(0, nDelayTime * 1000); // 设置启动时间 bStart := FALSE; // 清除启动信号 bRunning := TRUE; // 设置运行标志 END_IF ELSE // 如果正在运行 IF bStop THEN // 如果有停止信号 tStopTime := TON(0, nDelayTime * 1000); // 设置停止时间 bStop := FALSE; // 清除停止信号 END_IF // 判断是否到达停止时间 IF tStopTime.IN() THEN bRunning := FALSE; // 停止运行 END_IF END_IF ``` 在上面的程序中,我们定义了一个 `bStart` 变量用于表示启动信号,一个 `bStop` 变量用于表示停止信号,以及一个 `bRunning` 变量用于表示程序是否正在运行。我们还定义了一个 `tStartTime` 变量用于保存启动时间,一个 `tStopTime` 变量用于保存停止时间,以及一个 `nDelayTime` 变量用于设置延迟时间。 程序的逻辑非常简单,如果当前没有运行,则检查是否有启动信号,如果有则设置启动时间,并开始运行。如果正在运行,则检查是否有停止信号,如果有则设置停止时间,并在到达停止时间时停止运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值