龙空技术网

坚持学习第一天:西门子博途SCL语言学习——IF指令、CASE OF指令

老冯自动化 1750

前言:

当前看官们对“if赋值表达式”大致比较关怀,我们都需要了解一些“if赋值表达式”的相关内容。那么小编也在网上网罗了一些有关“if赋值表达式””的相关内容,希望小伙伴们能喜欢,同学们快快来学习一下吧!

一、IF(条件执行)指令1.第一种表达式---IF分支

IF "Tag_1" THEN

“Tag_2” := 3*3;

END_IF;

使用博途仿真运行,程序运行效果图如图1、图2所示:

图1 条件不成立

图2 条件成立

程序说明:如果条件“Tag_1”为1,那么执行计算指令“3 * 3 ”,将运算结果9赋值给“Tag_2”;如果条件“Tag_1”为0,那么程序将从 END_IF 后的下一条指令开始继续执行。

2.第二种表达式---IF 和 ELSE 分支

IF "Tag_3 " >= 10 AND "Tag_3 " < 15 THEN

“Tag_4” := 10 / 2 ;

ELSE

“Tag_4” := "Tag_3 " ;

END_IF;

使用博途仿真运行,程序运行效果图如图3、图4所示:

图3 条件不成立

图4 条件成立

程序说明:如果条件"Tag_3" >= 10 AND "Tag_3"成立,那么执行计算指令“10/2”,将运算结果5赋值给“Tag_4”;如果条件"Tag_3" >= 10 AND "Tag_3"不成立,那么程序将执行 ELSE 后编写的指令,将"Tag_3" 赋值给“Tag_4”。

3.第三种表达式---IF、ELSIF 和 ELSE 分支

IF ("Tag_5" > "Tag_6") AND "Tag_6" <> 0 THEN

“Tag_7” := 10 - 2 ;

ELSIF "Tag_6" > "Tag_5" THEN

“Tag_7” := 10 ** 2 ;

ELSE

“Tag_7” := 2 * 3 + 5 ;

END_IF;

使用博途仿真运行,程序运行效果图如图5、图6、图7所示:

图5 ("Tag_5" > "Tag_6") AND "Tag_6" <> 0条件成立

图6 "Tag_6" > "Tag_5"条件成立

图7 条件全部不成立

程序说明:如果条件("Tag_5" > "Tag_6") AND "Tag_6" <> 0成立,那么执行计算指令“10 -2”,将运算结果8赋值给“Tag_7”,执行完本条指令后,程序将从“END_IF”后继续执行;如果条件("Tag_5" > "Tag_6") AND "Tag_6" <> 0不成立,那么将执行第二个条件,即“ELSIF”后的条件,如果条件"Tag_6" > "Tag_5"成立,那么执行计算指令“10 ** 2”(10的平方),将计算结果100赋值给“Tag_7”,执行完本条指令后,程序将从“END_IF”后继续执行;如果("Tag_5" > "Tag_6") AND "Tag_6" <> 0与"Tag_6" > "Tag_5"条件全部不成立,那么将执行“ELSE”后的指令,那么执行计算指令“2 * 3 + 5”,将计算结果11赋值给“Tag_7”,再执行 END_IF 后的程序部分。

在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。可以选择对 ELSE 分支进行编程。

注:Tag_1如果是开关量可以不用表达出“=”“<”“>”等条件(因为开关量非0即1),如果是模拟量则需要进行条件设定。本文章仅供参考,具体情况还需根据实际工艺需求进行程序编写。

二、CASE OF(创建多路分支)指令

使用“创建多路分支”指令,可以根据数字表达式的值执行多个指令序列中的一个。表达式的值必须为整数。执行该指令时,会将表达式的值与多个常数的值进行比较。如果表达式的值等于某个常数的值,则将执行紧跟在该常数后编写的指令。其中常数值可以为以下值:

a.整数(例如,5)

b.整数范围(例如,15 到20 ,表达方式为 15..20)

c.由整数和范围组成的枚举(例如,10、11、21 到 25,表达方式为10,11,21..25)

CASE “Tag_8” OF

5:

”Tag_9” := 2;

10,11:

”Tag_9” := 3;

15...20:

”Tag_9” := 4;

25,27,29...32:

”Tag_9” := 5;

ELSE

”Tag_9” := 6;

END_CASE;

使用博途仿真运行,程序运行效果图如图8、图9、图10、图11、图12所示:

图8“Tag_8”为5时

图9“Tag_8”为11时

图10“Tag_8”为18时

图11“Tag_8”为29时

图12“Tag_8”为0时

程序说明:如果表达式“Tag_8”的值为5,那么程序将执行指令,将常数“2”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_8”的值为0或11,那么程序将执行指令,将常数“3”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_1”的值为15到20中的任意一个整数,那么程序将执行指令,将常数“4”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_9”的值为25或27或29到32中的任意一个整数,那么程序将执行指令,将常数“5”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_9”的值不是以上条件内任何一个整数,那么程序将执行ELSE后的指令,将常数“6”赋值给“Tag_9”。

注:CASE 指令也可通过使用 CASE 替换一个指令块来进行嵌套。END_CASE 表示 CASE 指令结束。ELSE 是一个可选的语法部分,可以省略。

博途仿真程序图

不足之处还望海涵,请多多指教。

标签: #if赋值表达式