好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

施耐德UnityPro结构化文本(ST).docx

26页
  • 卖家[上传人]:新**
  • 文档编号:525857578
  • 上传时间:2023-12-13
  • 文档格式:DOCX
  • 文档大小:43.77KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 施耐德 Unity_Pro 结构化文本 (ST)结构化文本( ST)目录结构化文本( ST) 1概述 2 一.结构化文本 ST 简介 31. 结构化文本 ST 简介 3 2.操作数 4 3. 操作符 5 二.指令 102. 指令 10 2. 赋值 10 3. 选择指令IF …THEN END_IF 114 . 选择指令ELSE 12 5. 选择指令 ELSE-THBN 13 6. 选择指令CASEOF-END_CASE 13 7. 重复指令 FOR TO -BY -DO- END_FOR 14 8. 重复指 令 WHILE DO- END_WHILE 15 9. 重复 指令 REPEAT UNTIL -END_REPEAT 16 10. 重复指 令 16 11. 子程序调 用 17 12. RETURN 17 13. 空指 令 17 14. 标签和跳 转 18 15. 注 释 18 三.调用基本功能、基本功能块、导出的功能块和过 程 191. 调用基本功能 ... 19 2. 调用基本功能块和导出的功能块 基本功能块 23 3. 过程 29概述本章介绍符合 IEC 61131 的编程语言结构化文本 ST。

      本章包含了哪些内容? 本章包含了以下部分:结构化文本 ST 简介 ???一.结构化文本 ST 简介概述本节包含结构化文本 ST 的概述 本节包含了哪些内容? 本节包含了以下主题:结构化文本 ST 简介 ? ??1. 结构化文本 ST 简介简介使用结构化文本 (ST) 的编程语言,可以执行多种操作,例如调用功能块、执行功能和赋值、有条件地执行指令和重复任务 表达式ST 编程语言使用 "表达式 " 表达式是由操作符和操作数组成的结构,在执行表达式时会返回值 操作符操作符是表示要执行的操作的符号 操作数操作符供操作数使用操作数为变量、数值、 FFB 输入 / 输出等 说明指令用于将表达式返回的值赋给实际参数,并构造和控制表达式ST 段的表示形式ST 段的表示形式:段大小指令行的长度不应超过 300 个字符ST 段的长度在编程环境中没有限制 ST 段的长度仅受 PLC 存储器大小的限制 语 法标识符和关键字不区分大小写 例外:不允许使用空格和制表符 ??????关键字 数值 值标识符 变量和限制符组合 [ 例如用于注释的 (*]执行顺序计算表达式时将根据操作符的优先级所定义的顺序将操作符应用于操作数(请参见操作符表)。

      首先执行表达式中具有最高优先级的操作符,接着执行具有次优先级的操作符,依此类推,直到完成整个计算过程优先级相同的操作符将根据它们在表达式中的书写顺序从左至右执行可使用括号更改此顺序例如,如果 A、 B、 C 和 D 的值分别为 1 、 2、 3 和 4 ,并按以下方式计算: A+B-C*D结果则为 -9 在下面的计算中: (A+B-C)*D 结果则为 0 如果操作符包含两个操作数,则先执行左边的操作数,例如在表达式 SIN(A)*COS(B)中,先计算表达式 SIN(A) ,后计算 COS(B) ,然后计算它们的乘积 错误行为下面的情况在执行表达式时作为错误处理:尝试除以 0 操作数包含的数据类型不适合对应的运算 ? 数字运算的结果超出了其数据类型的 值范围如果执行运算的过程中出现错误,则会设置相应的系统位 (%S) (如果使用的 PLC 支持这一设置) IEC 遵从性有关针对 ST 编程语言的 IEC 遵从性的描述,请参见 IEC 遵从性2. 操作数简介操作数可以是:???????地址 数值 变量多元素变量多元素变量的元素 功能调用 FFB 输出数据类型处理操作数的指令中的数据类型必须相同。

      如果需要处理不同类型的操作数,则必须预先执行类型转换在下面的示例中,整数变量 i1 在添加到实数变量 r4 中之前会先转换为实数变量r3 := r4 + SIN(INT_TO_REAL(i1)) ;此规则的例外情况是,数据类型为 TIME 的变量可乘以或除以数据类型为 INT 、 DINT、UINT 或 UDINT 的变量 允许的运算:timeVar1 := timeVar2 / dintVar1; ?timeVar1 := timeVar2 * intVar1; ?timeVar := 10 * time#10s;?此功能由 IEC 61131-3 作为 "不希望 " 的服务列出 直接使用地址地址可直接使用(无需事先声明)在本例中,地址数据类型是直接分配的该数据类型的分配通过使用 " 大前缀 " 进行要将其他数据类型指定为地址的缺省数据类型,必须通过显式声明进行使用变量编辑器可方便地完成变量的声明地址的数据类型不能在 ST 段中直接声明(例如,不允许声明 AT %MW1:UINT) 例如,在变量编辑器中声明以下变量: UnlocV1: ARRAY [1..10]OF INT;LocV1: ARRAY [1..10] OF INT AT %MW100; LocV2: TIME AT %MW100; 下面的调用具有正确的语法: %MW200 := 5;UnlocV1[2] := LocV1[%MW200]; LocV2 := t#3s; 访问字段变量访问字段变量 (ARRAY) 时,只有数值和数据类型为 INT 、 UINT、 DINT 以及 UDINT的变量才允许用于索引项。

      如果范围的阈值下限为负数,则 ARRAY 元素的索引也可为负数 示例:使用字段变量 var1[i] := 8 ;var2.otto[4] := var3 ; var4[1+i+j*5] := 4 ;3. 操作符简介操作符是一种符号,它表示:要执行的算术运算,或 ? 要执行的逻辑运算 ? 功能编辑(调用)?操作符是泛型的,即,它们自动适应操作数的数据类型 操作符表操作符根据优先级按顺序执行,另请参见执行顺序二.指令概述本节描述结构化文本 ST 编程语言的指令 本节包含了哪些内容? 本节包含了以下主题:???????????????指令选择指令 CASE...OF...END_CASE子程序调用1. 指令描述指令是 ST 编程语言的 "命令 " 指令必须以分号结尾一行中可以有多个指令(由分号分隔) 单个分号表示空指令2. 赋值简介执行赋值时,单元素或多元素变量的当前值会替换为表达式的计算结果赋值表达式的结构为:左边是变量名称,之后是赋值操作符 := ,然后是要求值的表达式 两个变量(分别位于赋值操作符的左侧和右侧)的数据类型必须相同 数组是个特例显式启用后,也可对长度不同的两个数组执行赋值操作。

      将一个变量的值赋给另 一个变量赋值用于将一个变量的值赋给另一个变量 例如,指令 A := B ;用于将变量 A 的值替换为变量 B 的当前值如果 A 和 B 是基本数据类型,则 B的单个值会传递给 A 如果 A 和 B 是导出的数据类型,则所有 B 元素的值都传递给 A将数值赋给变量赋值用于将数值赋给变量 指令 C := 25 ;用于将值 25 赋给变量 C 将运算值赋给变量赋值用于将运算结果赋给变量 例如,指令X := (A+B-C)*D ;用于将 (A+B-C)*D 的运算结果赋给变量 X 将 FFB 的值赋给变量赋值用于将功能或功能块返回的值赋给变量 例如,指令B := MOD(C,A) ;用于调用MOD (模数)功能并将计算结果赋给变量 B例如,指令A := MY_TON.Q ;用于将MY_TON功能块(TON功能块的实例)的Q输出值赋给变量A这不是功能块调用)多重赋值多重赋值是对 IEC 61131-3 的补充,必须显式启用 即使已经启用,下列情况下也不能进行多重赋值:?在功能块调用的参数列表中? 在用于初始化结构化变量的元素列表中指令X := Y := Z是允许的指令FB(in1 := 1, In2 := In3 := 2) ;是不允许的。

      strucVar := (comp1 := 1, comp2 := comp3 := 2) ;数组与WORD-/DWORD量之间的赋值数组和WORD-/DWORD量之间进行赋值时必须先执行类型转换,例如: %Q3.0:16 := INT_TO_AR_BOOL(%MW20) ;提供了下面的转换功能(常规库, Array 系列):?MOVE_BOOL_AREBO?OMLOVE_WORD_ARWO?MRODVE_DWORD_ARDW?OMRODVE_INT_ARINT?MOVE_DINT_ARDINT?MOVE_REAL_ARREAL3. 选择指令 IF - THEN END_IF描述(真)时,才会执行指令或一组指令THEN 指令标识条件的结尾和指令的IF 指令只有确定其相关布尔表达式的值为 1如果条件为 0 (假),将不会执行该指令或指令组 END_IF 指令标记指令的结尾注意: 可以嵌套任何数量的 IF...THEN...END_IF 指令,以生成复杂的选择指令示例 IF...THEN...END_IF该条件可以使用布尔变量表达如果 FLAG 为 1 ,将执行指令;如果 FLAG 为 0 ,则不会执行。

      IF FLAG THENC:=SIN(A) * COS(B) ; B:=C - A ; END_IF ;该条件可使用返回布尔结果的操作表达如果 A 大于 B ,将会执行指令;如果 A 小于或等于 B ,则不会执行 IF A>B THENC:=SIN(A) * COS(B) ; B:=C - A ; END_IF ;示例 IF NOT...THEN...END_IF该条件可使用 NOT 反转(为 0 时执行这两个指令) IF NOT FLAG THENC:=SIN_REAL(A) * COS_REAL(B) ; B:=C - A ; END_IF ; 另请参见ELSE ELSIF4. 选择指令 ELSE描述ELSE 指令始终出现在 IF...THEN 、 ELSIF...THEN 或 CASE 指令后面如果 ELSE 指令出现在 IF 或 ELSIF 指令后面,则仅当 IF 和 ELSIF 指令的关联布尔表达式为 0 (假)时,才会执行该指令或指令组如果 IF 或 ELSIF 指令的条件为 1(真),则不会执行该指令或指令组如果 ELSE 指令出现在 CASE 后面,则仅当所有标签都不包含选择器的值时,才会执行该指令或指令组。

      如果某个标识包含选择器的值,则不会执行该指令或指令组注意: 可以嵌套任何数量的 IF...THEN...ELSE...END_IF 指令,以生成复杂的选择指令 示例 ELSEIF A>B THENC:=SIN(A) * COS(B) ; B:=C - A ; ELSEC。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.