一、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);
2: // 当CV计数值等于2时启动三角型
#KM:=1;
#KM△ := 1;
#KMY := 0;
ELSE // 当CV计数值不等于1或者2时复位输出
#KM := 0;
#KM△ :=0;
#KMY := 0;;
END_CASE;
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的转换指令和移动指令,高度关注(智控基础教育官网)哦!!!!