结构文本(Structured Text)类似于BASIC语言,利用它可以很方便地建立、编辑和实现复杂的算法,特别是在数据处理、计算存储、决策判断、优化算法等涉及描述多种数据类型的变量应用中非常有效。
1.结构化文本(ST)主要语法
ST程序是一系列ST语句。下列规则适用于ST程序:
●每个语句以分号(“;”)分隔符结束。
●源代码(例如变量、标识符、常量或语言关键字)中使用的名称用不活动分隔符(例如空格字符)分隔,或者用意义明确的活动分隔符(例如“>”分隔符表示“大于”比较)分隔。
●注释(非执行信息)可以放在ST程序中的任何位置。注释可以扩展到多行,但是必须以“(*”开头,以“*)”结尾。
注意:不能在注释中使用注释。
下面是基本ST语句类型:
●赋值语句(变量:=表达式;)
●函数调用
●功能块调用
●选择语句(例如IF、THEN、ELSE、CASE...)
●迭代语句(例如FOR、WHILE、REPEAT...)
●控制语句(例如RETURN、EXIT...)
●用于与其他语言链接的特殊语句
当输入ST语法时,下列项目以指定的颜色显示:
●基本代码(黑色)
●关键字(粉色)
●数字和文本字符串(灰色)
●注释(绿色)
在活动分隔符、文本和标识符之间使用不活动分隔符可增加ST程序的可读性。下面是ST不活动分隔符:
●空格
●Tab
●行结束符(可以放在程序中的任何位置)
使用不活动分隔符时,需要遵循以下规则:
●每行编写的语句不能多于一条。
●使用Tab来缩进复杂语句。
●插入注释以提高行或段落的可读性。
2.表达式和括号
ST表达式由运算符及其操作数组成。操作数可以是常量(文本)值、控制变量或另一个表达式(或子表达式)。对于每个单一表达式(将操作数与一个ST运算符合并),操作数类型必须匹配。此单一表达式具有与其操作数相同的数据类型,可以用在更复杂的表达式中。
示例:
(boo var1 AND boo var2)BOOL类型
not(boo var1)BOOL类型
(sin(3.14)+0.72)REAL类型
(t#1s23+1.78)无效表达式
括号用于隔离表达式的子组件,以及对运算的优先级进行明确排序。如果没有为复杂表达式加上括号,则由ST运算符之间的默认优先级来隐式确定运算顺序。
示例:(www.daowen.com)
2+3*6相当于2+18=20乘法运算符具有较高优先级
(2+3)*6相当于5*6=30括号给定了优先级
3.调用函数和功能块
ST编程语言可以调用函数。可以在任何表达式中使用函数调用。
函数调用包含的属性见表5-1。
表5-1 函数调用属性
(续)
当在函数主体中设置返回参数的值时,可以为返回参数赋予与该函数相同的名称:FunctionName:=;
示例
示例1:IEC 61131-3函数调用
(*主ST程序*)
(*获取一个整型值并将其转换成有限时间值*)
ana timeprog:=SPlimit(tprog cmd);
appl timer:=ANY TO TIME(ana timeprog*100);
(*被调用的FBD函数名为“SPlimit”*)
示例2:“C”函数调用-与IEC 61131-3函数调用的语法相同
(*复杂表达式中使用的函数:min、max、right、mlen和left是标准“C”函数*)
limited value:=min(16,max(0,input value));
rol msg:=right(message,mlen(message)-1)+left(message,1);
ST编程语言调用功能块。可以在任何表达式中使用功能块调用。
功能块调用属性见表5-2。
表5-2 功能块调用属性
当在功能块主体中设置返回参数的值时,可以通过将返回参数的名称与功能块名称相连来分配返回参数:
FunctionBlockName.OutputParaName:=;
示例
(*调用功能块的ST程序*)
(*在变量编辑器中声明块的实例:*)
(*trigb1:块R TRIG-上升沿检测*)
(*从ST语言激活功能块*)
trigb1(b1);
(*返回参数访问*)
If(trigb1.Q)Then nb edge:=nb edge+1;End if;
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。