浅谈ST 语言编程
而很多实际应用场合当中,需要用到很多复杂的算法来分析工艺要求,计算实际数据。如果采用梯形图指令编程,那么需要使用各种四则运算指令,根据公式求解,程序编写繁多,指令繁多。
ST 语言类似于PACSAL语法,是一种计算机编程高级语言,简单高效的编程方式能表达任何复杂的运算公式,简化复杂的数学工程。
如:var_5:= (var_1-var_2+var_3)*var_4;
ST 语言使用了传统的很多高级语言的特性,包括:变量,操作符和控制流程语句,还可以和PLC 梯形图语言一起工作,相互协调,发挥各自其优势。ST语言结构中,“表达式”代表了整个语法的共通性,表达式由操作符和操作数组成,操作数可以是常量或者变量,可以任意建立符合规则的变量,制作流程表达式,所以看程序的读者看懂了表达式即看懂了程序,这是梯形图不能所及的。
如:IF temp THEN
FOR temp_循环 :=0 TO 9 DO
temp_总和:= temp_总和+SUM_累计[ temp_循环 ];
END_FOR;
END_IF;
在编写程序的时候,我们要养成编写程序注释的习惯。虽然注释经常被删掉,但它们是源代码中非常重要的一部分。它们解释了一部分代码,使程序更易读懂。注释帮助你或其他人读你的程序,即使过去了很长时间。注释不被编译,因此不会影响程序的执行。
一个优秀的工程师编写的程序,不但是能完成工艺要求,程序简洁明了,可移植性!更重要的是能够让更多的人能够通过你编写的程序来了解工艺和了解你!
在ST结构当中,一个表达式中常用多个操作符,很多时候忽略了操作符优先级顺序,造成在调试程序时,明明程序代码没问题,却怎么也达不到理想状态。所以操作符的优先级顺序处理是整个语法的关键。
在任何一个表达式中,首先执行最高级别的操作符,接着执行低一级的操作符,直到执行完所有的操作符。具有相同级别的操作符按照书写顺序从左至右依次执行。
如:var_5:= var_1-var_2*var_4; (*先执行乘法,再执行减)
在PLC 梯形图编程当中,如果没有跳转,或者调用子程序的情况下,所有的程序都是按照从上到下,从左到右依次扫描,所有的指令都是依次执行,完全没有优先级之分,这就是梯形图编程与ST语法编程最大区别之一。
之前我调试过一段程序,就是因为忽略的优先级,造成程序的不稳定,经过无数次的查找原因之后,才找到问题的关键是由“逻辑与”“逻辑或”的优先级顺序引起的。
原始程序如:
IF
Real_weight>SV_weight_low OR Real_weight=SV_weight_low AND Real_weight <SV_weight_high THEN
output:= TRUE;
ELSE
output:= FALSE;
END_IF;
修改后程序:
IF
(Real_weight>SV_weight_low OR Real_weight=SV_weight_low)
AND Real_weight <SV_weight_high THEN
output:= TRUE;
ELSE
output:= FALSE;
END_IF;
在ST语法当中,有5种命令组,需要我们加强学习,对这5种命令组掌握程度的与否,决定着你对ST语言编程的熟悉度。
1:布尔逻辑操作
2:算数操作
3:比较操作
4:判断
5:C ase语句
例:
ST 编写如下:KM1:=( SB1 OR KM1) AND NOT SB2 ;大家应该注意的是,在这个表达式当中,命令组采用的是布尔逻辑操作,而“与”的优先级高,执行“或”逻辑时,要使用括号增加优先级。
来源:技成培训网(唐倩)