打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SCL的简单入门




一、SCL的运算符

      SCL具有完整的运算符,它包含算术、比较、逻辑等。每个运算符都有相应的优先级。优先级是指在一个表达式中可能包含多个由不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算符时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

运算符及函数一览表

二、SCL的程序注释

       适当的注释可以增加代码的可读性,便于后续的功能维护或升级。SCL中的程序注释有两种,分别为符号“//”和“(*…*)”,前一种用于行注释,也就是后面只可以有一行注释。后面一种用于段注释,“(* ” 是一段注释的起始符,最后用“*)” 结尾。

“//”使用方法:

“(*…*)”使用方法:

三、程序控制指令介绍

      程序是语法和数据的有机结合,这里介绍的流程控制即属于基本的语法。SCL是高级编程语言,工程师根据工艺需求将各种控制语句进行有机组合并对输入数据(包括各种现场信号、操作员命令等)的处理最终得出相应的控制命令至现场设备或相关的数据在HMI上显示构成了控制程序。(控制程序=数据+语句)

      SCL编辑器支持流程控制语句的快速输入,我们只需将光标移动到编辑器中目标位置,然后双击收藏夹中的语句图标即可在编辑器中插入语句模板,我们只需要在模板的基础上编写修改即可,参见下图;

直接插入即可

1.条件语句

      所谓的条件语句就是根据已知条件判断该执行哪段语句,使程序有选择的执行。条件语句就是判断条件,它可以是一个变量,也可以是一段语句的运算结果。

      如果判断条件是变量,那么它必须为BOOL型;如果判断条件是语句,那么它的运算结果也必须是BOOL型。

IF语句示例:

    //条件变量必须是B00L型

    IF Start THEN

        Q:=TRUE;//如果Start为TRUE则执行该语句

    END_IF;

      在上面的语句中,判断条件就是变量Start的值。如果这个值是TRUE,那么变量Q被置为TRUE;如果这个值为FALSE则跳过该语句,Q将保持原来的值而不做任何改变。

IF语句示例:

    //条件语句的结果必须是BOOL型

    IF (M-Number)<>0 THEN

          Q:=TRUE;//如果(M-Number)<>0的结果为TRUE则执行此语句

    END_IF;

       在上面的语句中,判断条件是语句(M-Number)<>0的运算结果。如果这个值为TRUE,那么变量Q被置为TRUE;如果这个值为FALSE则跳过该语句,Q将保持原来的值而不做任何改变。

IF…ELSE语句示例:

    //条件语句的结果必须是BOOL型

    IF (M-Number)<>0 THEN

          Data:=100;//如果(M-Number)<>0的结果为TRUE则执行此语句

    ELSE

          Data:=200;//如果(M-Number)<>0的结果为FALSE则执行此语句

    END_IF;

    在上面的语句中,判断条件是语句(M-Number)<>0的运算结果是TRUE,那么将变量Data赋值为100;反之赋值为200;

2. 选择语句

      一个变量或语句可能存在若干个值,如果需要根据不同的值选择执行不同的语句的话,那么就需要选择语句了。选择语句是使用关键字CASE在语句或变量(变量和语句结果只可以是整型)可能存在的若干个结果中选择执行相应的程序。它和IF语句相似,但IF语句对于多个可能性分支的选择编写较繁琐,而CASE可以很好的解决这个问题,它支持在多个可能存在的结果中选择。一般若小于3个条件分支建议使用IF语句,而若多于3个的条件分支则建议使用CASE语句。

CASE…OF语句示例:

    CASE  #Select Input  OF       //Select Input只可以是整型

        1:

            #NextLable:='a’;

        2:

            #NextLable:='b’;

        3:

            #NextLable:='c’;

        ELSE

            #NextLable:='d’;

    END_CASE;

      在上面的语句中,程序首先读取Select Input的值,然后根据这个值选择执行相应的语句。若这个值为1,则执行NextLable:='a’,若这个值为2,则执行NextLable:='b’,若这个值为3,则执行NextLable:='c’,若此值不符合所有的选择条件则执行ELSE后面的语句NextLable:='d’。

、SCL的案例程序

1.一键启停

   在右边的语句中,当#IN等于1时,导通CU加计数计1,当#CV当前计数值等于1时,执行THEN后面的语句,将1赋值给OUT;当#IN再次等于1时,导通CU加计数计2,当#CV=当前计数值等于2时,加计数Q点输出复位加计数,并且执行ELSE后面的语句,将0赋值给OUT;依次循环逻辑。

    #IEC_Counter_0_Instance(CU:=#IN,

                                                R:=#Q,

                                                PV:=2,

                                                Q=>#Q,

                                                CV=>#CV);//加计数计到2时自己复位自        己;

    IF #CV=1 THEN

        #OUT := 1;//当加计数当前值等于1时将1赋值给OUT;

    ELSE

        #OUT := 0;//当当前值不等于1时将0赋值给OUT;

        ;

    END_IF;

2.星三角控制:

      在左边的语句中,当#Start等于1时,导通CU加计数计1,当#CV当前计数值等于1时,执行CASE1:后面的语句,将1赋值给#KM和#KMY,当#KMY等于1时导通TON定时器;当#Time_Q等于1时,导通CU加计数计2,当#CV当前计数值等于2时,执行CASE2:后面的语句,将1赋值给KM和KM△,将0赋值给KMY,按下停止按钮#stop,复位加计数#CV值,并且执行ELSE后面的语句,将0赋值给KM、KMY、KM△;

    #IEC_Counter_0_Instance(

                                              CU:=#Start OR #Time_Q,

                                               R:=#Stop,

                                               PV:=2,

                                               CV=>#CV);

    CASE #CV OF

        1:  // 当CV计数值等于1时启动星型;

                 #KM := 1;

                 #KMY := 1;

                 #IEC_Timer_0_Instance(IN:=#KMY,

                                                        PT:=#Time,

                                                        Q=>#Time_Q);

3.指示灯功能块:

      工业生产中,为显示设备的不同状态,通常采用信号灯的显示方式来区分。这里我们编写一个具有常量、慢速闪烁和快速闪烁功能的信号灯功能块(封装成一个FB),该功能块可以重复调用。

    #Q := (#SF AND (NOT #FF) AND 'Clock_1.25Hz')

                OR

               (#FF AND (NOT #SF) AND 'Clock_2.5Hz')

                OR

                #NL;

      该FB的各参数功能如下,当NL为TRUE时,灯常亮(Q=1),当SF为TRUE时,灯慢速闪烁(Q在0和1之间慢速间歇变化)当FF为TRUE时灯快速闪烁(Q在0和1之间快速间歇变化)。




      SCL语言作为西门子未来的发展趋势,是一门必须要掌握的核心高级语言,我们用10大项目带你真正掌握SCL的编程框架,而不是把梯形图翻译成SCL毫无意义!线上学SCL编程,只要看这个就够了!

     直播间更有好礼送不停哦


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
2.4.1 赋值运算符与赋值表达式
完美Python入门基础知识点总结,看完你的Python就完全入门了!
中小学教育资源站
VB编程语言基础知识点总结
Excel VBA解读(16):VBA的运算符
第4讲 运算符(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服