Codesys——模拟喷泉(if 语句)

以下内容纯属个人理解,如有错误欢迎指正。

本篇主要是关于ST编程IF语句的一个小案例,是模拟喷泉的一个小程序。

控制要求:
按下10.0启动,按下10.1停止启动后,
1、A组先喷5秒后灭
2、B、C同时喷,5秒后B停,再5秒C停
3、A、B又同时喷,2秒后,C也喷,持续5秒后全部停。

/********************变量声明************************/
PROGRAM PLC_PRG
VAR
	BUTTON_ON: BOOL;      //启动按钮
	BUTTON_OFF: BOOL;     //停止按钮
	TEMP0: BOOL;          //中间变量
	LED1: BOOL;           //灯(喷泉)1
	LED2: BOOL;           //灯(喷泉)2
	LED3: BOOL;           //灯(喷泉)3
	
	TON_0_PT: TIME:=T#5S; //定时器0预设值
	TON_1_PT: TIME:=T#5S; 
	TON_2_PT: TIME:=T#5S;
	TON_3_PT: TIME:=T#2S;
	TON_4_PT: TIME:=T#5S;
	TON_5_PT: TIME:=T#3S;
	TON_0_ET: TIME;       //定时器0当前值
	TON_1_ET: TIME;
	TON_2_ET: TIME;
	TON_3_ET: TIME;
	TON_4_ET: TIME;
	TON_5_ET: TIME;
	TON_0_Q: BOOL;        //定时器0输出
	TON_1_Q: BOOL;
	TON_2_Q: BOOL;
	TON_3_Q: BOOL;
	TON_4_Q: BOOL;
	TON_5_Q: BOOL;
	
	TON_0: TON;
	TON_1: TON;
	TON_2: TON;
	TON_3: TON;
	TON_4: TON;
	TON_5: TON;
END_VAR


/********************程序编写************************/
//起保停电路,当停止按钮按下或者定时器5时间到(流程结束)的时候,TEMP值为0。
TEMP0 := (TEMP0 OR BUTTON_ON) AND (NOT BUTTON_OFF) AND (NOT TON_5_Q);
IF TEMP0 THEN
	//亮5S后灭,10S之后再亮,亮7S后灭。
	LED1 := (TEMP0 OR TON_2_Q ) AND (NOT TON_0_Q) AND (NOT TON_4_Q);
	//启动5S后亮5S后灭,5S后再亮,亮7S后灭
	LED2 := (TON_0_Q OR TON_2_Q OR TON_3_Q ) AND (NOT TON_1_Q) AND (NOT TON_4_Q);
	//启动5S后亮10S后灭,2S后再亮,亮5S后灭
	LED3 := (TON_0_Q OR TON_3_Q ) AND (NOT TON_2_Q) AND (NOT TON_4_Q);
    
	TON_0(IN:=TEMP0 , PT:=TON_0_PT , 
		  Q=>TON_0_Q , ET=>TON_0_ET );
	TON_1(IN:=TON_0_Q , PT:=TON_1_PT , 
		  Q=>TON_1_Q , ET=>TON_1_ET );
	TON_2(IN:=TON_1_Q , PT:=TON_2_PT , 
		  Q=>TON_2_Q , ET=>TON_2_ET );
	//复位定时器完成位,否则后续流程无法顺利进行。
	IF  TON_2_Q THEN
    	TON_0_Q := FALSE;
 		TON_1_Q := FALSE;
    END_IF
	TON_3(IN:=TON_2_Q , PT:=TON_3_PT , 
		  Q=>TON_3_Q , ET=>TON_3_ET );	
	IF  TON_3_Q THEN
    	TON_2_Q := FALSE;
    END_IF
	TON_4(IN:=TON_3_Q , PT:=TON_4_PT , 
		  Q=>TON_4_Q , ET=>TON_4_ET );
	TON_5(IN:=TON_4_Q , PT:=TON_5_PT , 
		  Q=>TON_5_Q , ET=>TON_5_ET );
    IF  TON_5_Q THEN
    	TON_4_Q := FALSE;
		TON_3_Q := FALSE;
    END_IF

END_IF

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: CODESYS是一个广泛使用的工业自动化软件平台,提供了丰富的编程功能。其中的CASE语句是一种常见的编程结构,用于处理多个条件分支。 CASE语句与IF语句类似,可以根据不同条件执行不同的操作,但不同之处在于,CASE可以处理多个条件分支,增加代码的可读性和易于维护性。 其基本语法为: CASE [变量名] OF 条件1: 执行语句1; 条件2: 执行语句2; ... ELSE: 执行语句n; END_CASE; 其中,变量名代表待检测的变量;条件1、条件2等代表不同的条件分支,每个条件分支后面需要加“:”符号,然后紧跟着对应的执行语句。 当变量与某个条件分支匹配时,CASE会执行对应的执行语句,如果所有条件都不满足,则会执行ELSE分支中的语句。 举个例子,假设我们要判断一个数字变量的奇偶性,可以用如下代码实现: CASE num OF 0: WriteText("输入的数字为0"); 1,3,5,7,9: WriteText("输入的数字为奇数"); 2,4,6,8: WriteText("输入的数字为偶数"); ELSE: WriteText("输入的不是数字"); END_CASE; 以上代码表示当num为0、1、3、5、7、9时,输出“输入的数字为奇数”,当num为2、4、6、8时,输出“输入的数字为偶数”,如果num不是任何一个满足条件的数字,则输出“输入的不是数字”。 总之,在程序中使用CASE语句可以使代码逻辑更加清晰,易于理解和维护。 ### 回答2: CODESYSCoDeSys)是一种常见的工业自动化编程软件,可用于PLC(可编程逻辑控制器)编程。CASE语句CODESYS中的一种流程控制语句,常用于多分支判断。 CASE语句语法如下: CASE [expression] OF value1: statement1; value2: statement2; … valueN: statementN; ELSE statement0; END_CASE 其中,expression是需要进行判断的表达式,value1至valueN为可选值,用于判断expression的结果是否等于某个值。如果expression的结果与value1至valueN中的某个值相等,则执行对应的statement语句;如果与所有value均不相等,则执行ELSE语句中的statement0。 例如,以下代码对输入的数值进行判断,输出对应的文字: CASE n IN 0: s := '零'; 1: s := '一'; 2: s := '二'; 3: s := '三'; ELSE s := '其他'; END_CASE 若输入n为0至3中的某个值,则输出对应的汉字文字;否则输出“其他”。这就是CODESYS CASE语句的简单用法,能够方便快捷地处理多分支判断。 ### 回答3: CodeSys是一个广泛使用的工业自动化编程软件,在其编程语言中,Case语句是一种常用的分支控制语句。它的作用是根据不同的条件,从多种可选项中选择一个执行。 Case语句一般包括一个要被分支控制的变量,以及多个Case分支和1个default分支。格式如下: CASE 变量 OF 选项1:操作代码1; 选项2:操作代码2; ... 选项N:操作代码N; ELSE 默认操作代码; END_CASE; 当变量的值匹配某个选项时,对应的操作代码就会被执行。如果变量的值不匹配任何一个选项,那么就会执行默认的操作代码。不同的选项间用分号隔开,最后一项不需要再加分号。 Case语句简化了代码的编写,同时也增强了代码的可读性和维护性。在实际编程中,我们常将Case语句与其他控制语句一起使用,如循环语句、函数语句等,以实现更为复杂的逻辑控制。 总之,Case语句CodeSys编程中常用的分支控制语句,它可以根据不同的条件执行不同的操作,使用灵活简便,有助于提高程序的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值