[西门子] 西门子SCL基础教学---if then

[复制链接]
查看85429 | 回复0 | 2024-3-11 16:17:38 | 显示全部楼层 |阅读模式
上期说了基础教程,这期讲解下关于if then语句

关于if...then的解释:

执行该指令时,将对条件进行运算

如果条件为真(true),则条件成立,将会执行then后面的语句。
如果条件为假(false),则条件不成立,将不会执行then后面的语句。
下面1到3里面的in和out声明为bool型数据类型

下面4里面的in和out声明为int型数据类型
    if...then...如果条件成立,则执行then后面的语句。如果条件不成立,则执行end_if后面的语句举例:if #inthen       #out:=1;end_if;当in=0,条件不成立,那么then后面的语句不执行,out=0。当in=1,条件成立了,执行then后面的语句,out=1。然后你就会发现,当in再次等于0的时候,条件不满足,out还是等于1的。这就相当于你在梯形图中写了个置位指令,没写复位指令。那么如何复位,你可以再写一个if...then...if #in=0then       #out:=0;end_if;这时候你就需要把in的条件加上去了。因为你需要在in=0的时候你要让条件成立。条件成立才能执行then后面的语句。
    由于in是bool型数据类型,则可以省去in后面的=0(false),或者=1(true)。仅限bool数据类型。如果省去了,默认是in=0的时候条件不成立。in=1的时候条件成立。

    if...then...else...

    如果条件成立,则执行then后面的语句。执行完之后,程序将从end_if后继续执行。如果有的话。

    如果条件不成立,则执行else后面的语句。执行完之后,程序将从end_if后继续执行。如果有的话。

    举例:

    if #in

    then

           #out:=1;

    else

           #out:=0;

    end_if;

    当in=0的时候,条件不成立,那么执行else,out=0。

    当in=1的时候,条件成立,那么执行then后面的语句,out=1。
    其实你可以看出,上面1里面两个if简化之后,就是这一语句。
    if...then...elsif...

    如果第一个if条件成立,则执行第一个then后面的语句,执行完之后,程序将从end_if后继续执行。如果有的话。

    如果条件1不成立,则检查第二个条件,也就是elsif的条件,如果这个条件成立,则执行elsif后面的then的语句,执行完之后,程序将从end_if后继续执行。如果有的话。以此类推

    举例:

    if #in

    then

           #out:=1;

    elsif #in=0

    then

           #out:=0;

    end_if;

    当in=1的时候,执行第一个then后面的语句,out=1。
    当in=0的时候,第一个条件不成立,那么第一个then后面的语句不执行,此时会去检查第二个条件,当第二个条件成立,则会执行第二个then后面的语句,out=0。
    in这个条件变量,不只是bool量,也可以是别的。比如int啊,real啊等等,也可以参杂and,or等一系列指令进去。

    举例:

    if #in=10

    then

           #out:=100;

    elsif  #in=20

    then

           #out:=200;

    elsif  #in>50 and #in<100

    then

           #out:=1000;

    else

           #out:=888;

    end_if;

    当in=10的时候,第一个if条件成立,那么第一个then后面的语句会执行,out=100。

    当in=20的时候,第一个条件不成立,则第一个then后面的语句不执行。此时会判断第二个条件,发现第二个条件成立,则执行第二个then后面的语句,out=200。

    当in大于50且小于100的时候,第一第二个条件不成立,那么第一第二个then后面的语句都不会执行。此时就判断第三个条件,当第三个条件成立,那么第三个then后面的语句会被执行,也就是out=1000。

    当in不在这个范围内,也就是上述的if条件都不成立,那么最终执行else后面的语句,则out=888。

到此,if...then的基础讲解也就结束了,大家可以慢慢练习下,然后可以搭配各种指令去用一下,比如if嵌套if,if套个for等等操作。
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则