一、结构化文本(ST 语言)
结构化文本(Structured Text)简称 ST 语言,是 IEC61131-3 所规定的 PLC 编程语言之一,
用于工业控制的高级语言。由于其编写方式与一般计算机语言相似,多用于较为复杂的控制
场合和复杂的控制算法中。
1、特点:
编程语言采用高度简化的表达形式,使得程序紧凑,结构清晰;
带有多种控制语句,便于实现复杂的控制逻辑,如IF、 CASE条件语句和FOR、WHILE、 REPEAT循环语句;
程序结构清晰,便于阅读。
2、ST程序结构
ST语言的程序由语句组成,语句由表达式和关键字组成,表达式由操作数和操作符组成。
ST结构
二、语法基础
1、表达式
表达式的构成
ST语言的程序中,表达式由操作数和操作符组成。
一个表达式可包含一个或多个操作符、变量和函数
语法1
操作数
操作数可以是表示数据的数据文字、字符串文字、时间文字、变量元素、函数调用和其他表达式;
例如: 15、 TRUE、 T#20S、 ARRAY1[1]、 SIN(A)、(A>B) &(C=D)。
操作符
在一个表达式中使用多个操作符时,按优先级从高到低依次执行。 相同优先级的操作符按照书写顺序从左向右依次执行。
操作符
2、语句
赋值语句
赋值语句用于将赋值符号(:=)右侧的表达式计算的值赋给左侧的变量。
格式
赋值语句的一般形式如下, 其中“:=”为赋值操作符, 且要用分号“;”结尾。
格式 变量 := 表达式 ;
例子
变量1 := 100 ; //对变量1赋值100
变量2 := TRUE ; //对变量2赋值TRUE
变量3 := 变量1 *2 ; //将变量1乘以2后得到结果赋值给变量3
变量4 := SIN(变量3); //将变量3做正弦运算后的结果赋给变量4
数组A[1] := 1.5; //对数组A下标为1的元素赋值1.5
变量5 := 1; 变量6 := 1.5; 变量7 := FALSE; //一行中可以同时存在多条赋值语句
函数调用
u 函数(FC)调用后将其返回值作为表达式的值赋值给其他变量,其一般格式如下:
变量 := 函数名(参数表) ;
参数表有两种书写方式:
方式1: 变量 := 函数名 ( 函数输入参数1 := 输入变量1 ,函数输入参数2 := 输入变量2 , … );
方式2: 变量 := 函数名 (输入变量1 , 输入变量2 , … );
例如:通过函数MAX(取最大值)选取变量1和变量2中的最大值,并将该最大值赋值给变量3,两种调用方式如下:
方式1:变量3: =MAX(IN1:=变量1, IN2:=变量2);
方式2: 变量3: =MAX(变量1,变量2);
注意:
通过方式2调用时,参数表中的变量从左往右依次与函数的输入参数对应,所以不能空缺;
某些二元操作符不能作为函数名进行函数调用,如MOD、 AND,NOT等:
注意 变量: =MOD(变量1,变量2); ×
变量: =变量1 MOD 变量2; √
例子
函数调用
功能块调用
功能块(FB)调用需要将其进行实例化,通过实例名称实现调用,其一般格式如下:
格式
功能块实例名(参数表) ;
参数表有两种书写方式:
方式1: 功能块实例名 ( 功能块输入参数1 := 输入变量1 ,
功能块输入参数2 := 输入变量2 ,
…
功能块输出参数1=> 输出变量1 ,
功能块输出参数2=> 输出变量2,
… )
方式2: 功能块实例名 (输入变量1 , 输入变量2 , …,输出变量 1,输出变量2, ….);
例如:通过功能块TON的实例名TIMER1对TON进行调用:
方式1:
TIMER1( EN:= 变量1 , IN:= 变量2 , PT:= T#1S,
ENO =>变量4, Q =>变量5, ET=>变量6 );
或
方式2:
Timer1 (变量1 , 变量2 , T#1S, 变量4, 变量5, 变量6 );
直接赋值与间接赋值
直接赋值
通过功能块TON的实例名Timer1对TON进行调用:
Timer1 ( EN:= 变量1 ,
IN:= 变量2 ,
PT:= T#1S,
ENO =>变量4,
Q =>变量5,
ET=>变量6 );
间接赋值
Timer1 .EN:= 变量1; //对TON的输入参数EN进行赋值
Timer1 . IN:= 变量2; //对TON的输入参数IN进行赋值
Timer1 . PT:= T#1S; //对TON的输入参数PT进行赋值
Timer1 ( ); //调用TON功能块执行
变量4 := Timer1 .ENO; //将TON功能块输出参数ENO的状态输出到变量4
变量5 := Timer1 .Q; //将TON功能块输出参数Q的状态输出到变量5
变量6 := Timer1 .ET; //将TON功能块输出参数ET的状态输出到变量6
这次先讲到这里,下一篇我们继续学习ST里面常用的语句。
喜欢这篇文章的可以转发和关注我,如果有好的建议或意见请留言告诉我。
下次见!!
我是气球哥!!