首页 理论教育 ST编程要素现代控制工程设计

ST编程要素现代控制工程设计

时间:2023-11-19 理论教育 版权反馈
【摘要】:ST是一种使用语句来定义执行动作的文本化编程语言。表3-2 常规赋值语句说明为字符串赋值ASCII字符通过赋值运算符可将ASCII字符赋给字符串标签中的DATA成员。常用的有CONCAT指令和INSERT指令。每扫描一次ST程序,指令执行一次。在ST的程序中,除非用户预先规定ST指令的执行条件,否则指令将会在其被扫描时执行。

ST编程要素现代控制工程设计

ST是一种使用语句来定义执行动作的文本化编程语言(同C语言很相近,但有区别)。有几个基本原则:

●结构化文本不区分字母大小写

●使用Tab(制表符)和Enter(回车)键使得结构化文本易于阅读;

●注释信息尽量详尽。

ST由赋值语句(Assignment)、表达式(Expression)、指令(Instruction)、结构(Con-struct)以及注释(Comment)组成。在本小节中将进行详细说明。

1.赋值语句(Assignments)

(1)常规赋值语句

使用常规赋值语句改变标签内存储的数值。常规赋值语句的语法是:

tag∶=expression

有关上式的说明,见表3-1。

表3-1 常规赋值语句说明

978-7-111-42627-1-Chapter03-103.jpg

(2)非保持赋值语句

非保持赋值语句与上面所描述的常规赋值语句不同,控制器每次处于下面的任一状态,非保持赋值语句中的标签会重置为0。

●进入运行模式;

●当用户设置SFC为自动重置(Automatic Reset)的情况下,离开SFC的步时(仅适用于用户在步的操作间嵌入赋值语句,或者使用操作通过JSR指令调用结构化文本例程的情况)。

非保持赋值语句的语法如下:tag[∶=]expression

上式的说明见表3-2。

表3-2 常规赋值语句说明

978-7-111-42627-1-Chapter03-104.jpg

(3)为字符串赋值ASCII字符

通过赋值运算符可将ASCII字符赋给字符串标签中的DATA成员。通过指定字符值或者指定标签名称、DATA成员和字符元素来为字符串赋值。注意,这里经常出现一些错误,例如将string1标签定义为字符串(string)数据类型,如果要将大写字母A赋于string1.DATA[0],正确的写法是string1.DATA[0]∶=65;而不是string1.DATA[0]∶=A;。

注意:ASCII字符串指令用于增加或者插入ASCII字符串。常用的有CONCAT指令和INSERT指令。这时用户可以在RSLogix5000软件的Help菜单下查看这两种指令的用法。

2.表达式(Expression)

(1)表达式组成

一个表达式大致由以下的元素组成:

●标签名称:用以存储数值(变量);

●用户直接输入到表达式的数值(立即数);

●函数,例如,ABS、TRUNC;

●运算符,例如,+、-、>、<、AND、OR等。

(2)表达式的类型

在结构化文本中,用户可以使用以下两种类型的表达式:

布尔表达式:产生1(真)或0(假)布尔值的表达式。用户在使用时请注意以下三点:

1)布尔表达式使用布尔标签、关系运算符和逻辑运算符来比较条件是否为真或假。

2)简单的布尔表达式可以是一个单独的布尔型标签。

3)一般情况下,用户使用布尔型表达式作为执行其他逻辑的条件。

数值表达式:计算整数或者浮点数的表达式。用户在使用时注意以下两点:

1)数值表达式使用算术运算符、算术函数和按位(bitwise)运算符。例如,tag1+5。

2)通常情况下,用户会将数值表达式嵌套到布尔表达式中。例如,(tag1+5)>65。

(3)使用运算符和函数

算术运算符和函数是表达式不可缺少的组成部分。常用的算术运算符见表3-3。

表3-3 常用的算术运算符

978-7-111-42627-1-Chapter03-105.jpg

算术函数用来执行数学操作。在函数中需指定常数、非布尔量的标签和表达式。常用的算术函数见表3-4。

表3-4 常用的算术函数

978-7-111-42627-1-Chapter03-106.jpg

(续)

978-7-111-42627-1-Chapter03-107.jpg

示例:如果adjustment和position均为DINT型标签,并且sensor1和sensor2均为实型标签,要求计算sensor1和sensor2平均值的绝对值再加上adjustment,并将结果存于position。

输入的程序如下所示:

position∶=adjustment+ABS((sensor1+sensor2)/2);(www.xing528.com)

关系运算符是将两数值或者字符串进行比较,产生一个真(1)或者假(0)的结果。经常使用的关系运算符见表3-5,逻辑运算符见表3-6。

表3-5 常用的关系运算符

978-7-111-42627-1-Chapter03-108.jpg

表3-6 常用的逻辑运算符

978-7-111-42627-1-Chapter03-109.jpg

示例:如果count和length均为双整型标签,done是布尔量标签,要求“如果count大于或者等于length,计算完成”,输入的程序如下所示:

done∶=(count<=length);

示例:如果photoeye1和photoeye2均为布尔型标签,open是布尔量标签,并且要求“如果photoeye1和photoeye2同为真,置位open”,输入如下的程序:

open∶=photoeye1&photoeye2;

按位运算符是对标签中的各位做逻辑运算。

常用的按位运算符见表3-7。

表3-7 常用的按位运算符

978-7-111-42627-1-Chapter03-110.jpg

示例:如果input1、input2和result1均为双整型标签,并且要求“计算input1和input2的按位运算结果,并将其存到result1标签”。用户输入以下程序即可:

result1∶=input1ANDinput2

(4)运算顺序

运算是按照预先规定的顺序,而不是一定按照从左到右的顺序来执行,但有两个原则:

1)同级运算的顺序是从左到右的执行。

2)如果表达式中包含多个运算符或者函数,可通过小括号“()”将条件分组,这样可以确保执行顺序正确并使得表达式更具有可读性。

运算的顺序见表3-8。

表3-8 运算的顺序

978-7-111-42627-1-Chapter03-111.jpg

(5)注意事项

1)表达式中可以混合使用大小写字母。例如,“AND”也可以书写为And和and。

2)对于较复杂的应用场合,可以在表达式内使用括号集合多个表达式。

3.指令(Instruction)

ST的编程语句可以是指令。每扫描一次ST程序,指令执行一次。每次结构条件为真时,结构中的ST指令执行。如果结构中的条件为假,则结构中的语句不被扫描。此时没有梯级条件或者状态转变触发指令执行。与FBD指令的区别在于,FBD指令通过输入使用(EnableIn)触发其执行,而ST指令执行时相当于输入使用(EnableIn)一直置位。

与LAD指令的区别在于,LAD指令通过输入梯级条件触发执行。一些LAD指令仅当输入梯级条件从假变为真时执行。这些是转变触发型LAD指令。在ST的程序中,除非用户预先规定ST指令的执行条件,否则指令将会在其被扫描时执行。

例如,ABL指令是转变触发LAD指令。在图3-88中,当tagxic由零到置位转变一次,ABL指令执行一次。当tagxic一直置位或者清零时,ABL指令不执行。

978-7-111-42627-1-Chapter03-112.jpg

图3-88 ABL指令梯级示例

在ST中,如果用户将上面的指令写为:

IFtag_xicTHENABL0serial_con);

END_IF

tag_xic置位,ABL指令每次扫描时均执行。如果用户希望仅当tag_xic为从零到置位转变时ABL指令执行,必须编写ST条件指令,具体做法如下所示:

OSRI_01.inputbit∶=tag_xic

OSRIOSR_01);//设置正跳变沿

IFOSRI_01.outputbitTHEN

ABL0serial_con);//如果发生正跳变则执行ABL指令

END_IF

4.结构(Construction)

结构的应用十分广泛,常用的结构见表3-9,结构可以单独使用也可以与其他结构嵌套使用。在下节中将详细介绍上面几个结构的具体应用。

表3-9 ST常用的结构

978-7-111-42627-1-Chapter03-113.jpg

5.注释(Comment)

为使用户编写的ST程序更具有可读性,需要添加注释。

ST的注释下载到控制器内存,并且可以上载。添加注释的几种类型见表3-10。

表3-10 添加注释的几种类型

978-7-111-42627-1-Chapter03-114.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈