[三菱] 和利时DCS-ST编程语言介绍

[复制链接]
查看40963 | 回复0 | 5 天前 | 显示全部楼层 |阅读模式
1、ST 语言编辑器

ST 是结构化文本(Structured Text)的简称,是一种源自 IEC61131-3 标准的文本化编程语言。如下图所示。

POU 运算过程是由语句决定的。

库管理器中所有的函数和功能块都可以在 ST 语言中被调用。函数被调用时的部分显示范围被操作符遮盖了,功能块在 ST POU 中声明后可以被使用。他们被参数化的方法与在 LD 或 CFC 语言中一样。

与 CFC 语言不同,ST 的作用范围可以通过调用相应关键词的条件语句和循环语言被延伸。执行顺序可以通过编排在 ST 编辑器中的语句顺序得到,从左到右,从上到下。这个顺序只能通过插入循环语句而改变



使用结构化文本(ST)的编程语言,可以执行多种操作,例如调用功能块、赋值和有条件地执行指令和重复任务。(ST)的编程语言由各种元素组成,具体如下。

□ 表达式 :由操作数和操作符组成的结构,在执行表达式时会返回值。

□ 操作数 :表示变量,数值,地址,功能块等。

□ 操作符 :是执行运算过程中所用的符号。

□ 语句 :用于将表达式返回的值赋给实际参数,并构造和控制表达式。



2.赋、值语句

赋值语句用表达式的求值结果替代单元素或多元素变量的当前值。

赋值表达式的结构为:语句 A := B; (A 是变量名称;B 是求值的表达式)两个变量(分别位于赋值操作符的左侧和右侧)的数据类型必须相同。数组是个特例。显式启用后,也可对长度不同的两个数组执行赋值操作。赋值用于将一个变量的值赋给另一个变量。

3、选择语句 IF…THEN…END_IF

3.1 语义

IF 语句只有确定其相关布尔表达式的值为 1(真)时,才会执行语句或一组语句。如果条件为 0(假),将不会执行该语句或语句组。THEN 语句标识条件的结尾和语句的开头。END_IF 关键字标记语句的结尾

3.2 示例

■ IF...THEN...END_IF

该条件可以使用布尔变量表达。

如果 FLAG 为 1,将执行语句;如果 FLAG 为 0,则不会执行。



该条件可使用返回布尔结果的操作表达。如果 A 大于 B,将会执行语句;如果 A 小于或等于 B,则不会执行。

■ IF NOT...THEN...END_IF

该条件可使用 NOT 反转(为 0 时执行这两个语句)



4、选择语句 ELSE

4.1 语义

ELSE 语句始终出现在 IF...THEN、ELSIF...THEN 或 CASE 语句后面。

如果 ELSE 语句出现在 IF 或 ELSIF 语句后面,则仅当 IF 和 ELSIF 语句的关联布尔表达式为 0(假)时,才会执行该语句或语句组。如果 IF 或 ELSIF 语句的条件为 1(真),则不会执行该语句或语句组。

如果 ELSE 语句出现在 CASE 后面,则仅当所有范围都不包含选择符的值时,才会执行 ELSE 语句或语句组。如果某个范围包含选择符的值,则不会执行 ELSE 语句或语句组。

4.2 示例



5、 选择语句 ELSIF...THEN

5.1 语义

ELSE 语句始终出现在 IF...THEN 语句后面。ELSIF 语句确定仅当 IF 语句的关联布尔表达式的值为 0(假)并且 ELSIF 语句的关联布尔表达式的值为 1(真)时,才会执行语句或语句组。如果 IF 语句的条件为 1(真)或者 ELSIF 语句的条件为 0(假),则不会执行该命令或命令组。THEN 关键字标识 ELSIF 条

件的结尾和语句的开头。

5.2 示例



6、 选择语句 CASE...OF...END_CASE

6.1 语义

CASE 语句包含一个 INT 数据类型或枚举数据类型(选择符)变量求值的表达式和一个语句组列表。

每组都标记可应用的一个或多个整数(INT、DINT、UINT 或 UDINT)或枚举值或整数值的范围。它规定执行第一组语句,其范围之一包含选择符的计算值。否则,将不执行任何语句。

OF 语句指示范围的开头。

所有标签都不包含选择符的值时,才会在 CASE 语句内执行 ELSE 语句。

END_CASE 关键字标记语句的结尾。

6.2 语句结构

CASE 表达式 OF

值 1...

值 2...

ELSE

END_CASE



7、 重复语句 FOR...TO...BY...DO...END_FOR

7.1 语义

FOR 语句用于在发生次数可预先确定的情况下。否则可使用 WHILE 或 REPEAT。

FOR 语句会重复执行语句序列,直到遇到 END_FOR 语句为止。发生次数由起始值、结束值和控制变量决定。

控制变量、起始值和结束值必须具有相同的数据类型(DINT 或 INT)。控制变量、起始值和结束值可由重复语句进行更改。

FOR 语句以控制变量值为步幅递增或递减起始值,直到达到结束值。增量值的缺省值为 1。如果要使用其他值,则可以指定增幅值(变量或常量)。每个新的循环之前都要检查控制变量值。如果它位于起始值和结束值的范围之外,则将离开循环。

DO 语句标识重复定义的结尾和语句的开头。

可以使用 EXIT 提前终止循环。

END_FOR 关键字标记语句的结尾。

7..2 语句结构

FOR 表达式 1TO 表达式 2BY 表达式 3DO

表达式 1:循环变量的初始化(初始值)

表达式 2:循环条件(终止值)

表达式 3:循环变量自增

END_FOR



8、 退出循环语句 EXIT

8.1 语义

EXIT 语句用于在满足结束条件前终止重复语句(FOR、WHILE 或 REPEAT)。如果 EXIT 语句位于嵌套的重复语句内,则会离开最里面的循环(EXIT 所在的循环)。接下来,将执行循环结尾(END_FOR、END_WHILE 或 END_REPEAT)后的第一个语句。

8.2 示例

如果 FLAG 的值为 0,执行语句后 SUM 将为 15。

如果 FLAG 的值为 1,执行语句后 SUM 将为 6。



9、 函数和功能块控制语句

■ 函数和功能块控制语句由调用功能块机制,以及在物理结束函数或功能块以前把控制返回到调用实体机制组成。

□ 函数(FUN)求值应作为表达式求值部分被调用。

□ 功能块(FB)应通过语句调用,而语句由功能块实例名称和跟随其后带括号的变元表组成。在下面的例子中,通过给两个参数 IN 和 PT 赋值来调用一个定时器,然后结果变量 Q 的值赋予变量OUT。

结果变量,就像在语句表中,被表示为功能块名称后跟一个小点和变量的名字。



■ 函数的文本调用特性

函数的文本调用应由函数名称及其后的变元表组成。变元应该用逗号来分隔,而该表的左右两边应该用括号界定。

变元表具有将一组实际值赋给形式变元名称(形式变元表)的格式,即:使用操作符“:=”给输入和输入-输出变量赋值;表中变元的顺序应是不重要的。

■ 函数调用应遵守以下规则:

□ 函数输出变量的赋值应是空值或给变量赋值。

□ 对 VAR_IN_OUT 变元的赋值应是变量。

□ 对 VAR_INPUT 变元的赋值可以是空值、常量、变量或函数调用。在后一种情形,函数结果用作实际变元。

□ 输入变元的赋值应遵守下表规则,下表中定义了函数的文本调用特性。函数的文本调用应由函数名称及其后的变元素组成。

在表中的特性 1 中(形式调用),变元表具有将一组实际值赋给形式变元名称(形式变元表)的格式,即:

使用操作符“:=”给输入和输入-输出变量赋值;

使用操作符“=>”将输出变量的值赋给变量。

表中变元的顺序应是不重要的。在特性 1 中,表中未赋值的任何变量应具有缺省值,或者是相关数据类型的缺省值。

特性 2 中(非形式调用),变元表包含的变元数及其顺序和数据类型应与函数定义中完全一致,执行控制变元 EN 和 ENO 除外。



10 ST 操作符

操作符是一种符号,它表示要执行的算术运算,或要执行的逻辑运算,功能编辑调用。操作符是泛型的,即它们自动适应操作数的数据类型。

常见 ST 操作符,见下表:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则