马上注册,享受更多特权

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

x

本帖最后由 lirui 于 2020-2-16 11:23 编辑

image.png (190.48 KB, 下载次数: 365)

2020-2-16 10:43 上传

image.png (197.92 KB, 下载次数: 364)

2020-2-16 10:43 上传

image.png (35.96 KB, 下载次数: 357)

2020-2-16 10:43 上传

image.png (135.14 KB, 下载次数: 350)

2020-2-16 10:43 上传

1.ST语言简介

1.1 ST语言特点

结构化文本编程语言是一种高级语言,类似于 Pascal,是一种特别为工业控制应用而开发的一种语言,也是在 InoProShop中最常用的一种语言, 对于熟悉计算机高级语言开发的人员来说,结构化文本语言更是易学易用,它可以实现选择、迭代、跳转语句等功能。

此外,结构化文本语言还易读易理解,特别是当用有实际意义的标识符、批注来注释时,更是这样。 在复杂控制系统中, 结构化文本可以大大减少其代码量, 使复杂系统问题变得简单,缺点是调试不直观, 编译速度相对较慢。结构化文本的视图如图所示:

image.png (126.4 KB, 下载次数: 355)

2020-2-16 10:50 上传

结构化文本有以下特点:

1、高级文本编程语言

2、结构化的编程

3、简单的标准结构

4、快速高效的编程

5、使用直观灵活

6、与PASCAL类似

7、有计算机编程经验的人可以很容易地使用它

8、符合IEC 61131-3标准

1.2 ST语言的执行顺序

使用结构化文本的程序执行顺序根据“行号” 依次从上至下开始顺序执行,如图所示。

image.png (50.97 KB, 下载次数: 356)

2020-2-16 10:52 上传

1.3 表达式执行顺序

整个 ST 程序由指令构成,指令由分号 “;”分隔。这些指令由关键字和表达式组成。其中,表达式由操作符和操作数组成。一个操作数可以是一个常量,变量,功能调用或其他表达式。常量,例如:20,t#20s,‘22231 test’。

变量,例如:iVar,Var1[2,3]。

功能调用,值为调用返回值,例如:Fun1(1,2,4)。

其它表达式:10+3,var1 OR var2,(x+y)/z,                   iVar1:=iVar2+22。

表达式的求值以特定的操作符优先权定义的顺序,按操作符对操作数进行求值。表达式中具有最高优先权的操作符应首先进行求值,接着是下一个较低优先权的操作符等,从高到低依次求值完成。下表记录了ST语言的操作符及其优先级顺序。

image.png (34.54 KB, 下载次数: 352)

2020-2-16 10:55 上传

2.关键字

关键字是语言元素特征化的词法单元。在 IEC61131-3 标准中,关键字作为编程语言的字,被用于定义不同结构或启动和中指特定的软件元素。

部分关键字配对使用,如 FUNCTION 与 END_FUNCTION 等。部分关键字单独使用,如 ABS等。关键字不能用于任何其他目的,如不能作为变量名或扩展名,既不能用 TON 作为变量名,也不能用 VAR 作为扩展名。

image.png (124.52 KB, 下载次数: 366)

2020-2-16 10:59 上传

此外,下列功能模块和函数的标识符也被保留作为关键字:

1) 标准数据类型: BOOL, REAL, INT 等。

2) 标准函数名和功能块名: SIN, COS, RS, TON 等。

3) 指令表语言中的文本操作符: LD, ST, ADD, GT 等

4) 结构化文本语言中的文本操作符: NOT, MOD, AND 等。

3.操作符

image.png (200.65 KB, 下载次数: 355)

2020-2-16 11:00 上传

image.png (98.82 KB, 下载次数: 346)

2020-2-16 11:00 上传

image.png (133.6 KB, 下载次数: 358)

2020-2-16 11:00 上传

4.常用ST指令介绍

4.1 赋值指令

赋值指令用于变量赋值,也就是赋值关键字的左边是变量,右侧为要赋的值,通过赋值关键字进行赋值。例如:Var1 := Var2 * 10;完成执行后,Var1值为Var2的10倍。其中的赋值关键字包含三种:“:=”、“S=”、“R=”。

(1)  “:=”为一般赋值,右值直接赋给左值,左值和右值相等。

(2) “S=”为置位赋值,表示如果右值为TRUE,左值变量变为TRUE(置位),  直到调用R=命令来初始化。

(3)  “R=”为复位赋值,表示如果右值为TRUE,左值变量变为FALSE(复位)。用于复位S=指令置位的变量。例如:a S= b; 一旦b为 TRUE后,a会保持 TRUE, 即使b 变为 FALSE后。

4.2 功能块的调用

语法:  (FB输入变量:=|, |...更多 FB 输入变量);

下例中,一个延时功能块(TON)被调用,参数IN和PT被分配。那么结果变量Q被分配到变量A。延时FB通过"TMR:TON"实例化。

, :

TMR(IN := %IX5, PT := 300);

A:=TMR.Q;

4.3 RETUTN 指令

RETURN指令表示当前置条件为TRUE时,离开此POU。

语法:

RETURN;

示例

IF b=TRUE THEN

RETURN;

END_IF;

a:=a+1;

如果b是TRUE,语句a:=a+1;不会被执行,POU会立即被返回。

4.4 IF 指令

通过IF关键字,可以判断执行条件,根据执行条件,执行相应的指令。

语法:

IF THEN

{ELSIF THEN

ELSIF THEN

ELSE

}

END_IF;

其中,{}内部分是可选的, 如果 为TRUE, 那么只有 被执行,其它不被执行,否则,从 开始,一个一个计算布尔条件表达式直到其中一个表达式值为TRUE,然后执行此表达式对应的指令,如果没有表达式值为TRUE,那么执行 对应的指令。

示例

IF temp<17

THEN heating_on := TRUE;

ELSE heating_on := FALSE;

END_IF;

这里,当温度低于17度时,加热打开,否则它保持关闭。

4.5 CASE 指令

使用CASE指令,可以根据一个条件变量,根据其对应的多个值罗列处理对应的命令。条件变量只能是整数。

语法:

CASE OF

:

:

:

:

...

:

ELSE

END_CASE;

CASE指令根据以下流程处理:

*  如果变量的值为 , 那么会被执行

*  如果 没有匹配任何一个值,那么被执行

* 如果同一个指令在几个变量值时执行,那么可以把这些值一个接一个的写出来,用逗号隔开,因此共同执行

*  如果同一个指令会在一个变量范围内执行,可以写上初始值和结束值,中间用两个点隔开。你可以把这些情况合一 。

4.6 WHILE 循环

WHILE循环和FOR循环一样可以作为循环处理使用,但和FOR循环不同是循环条件可以是任意布尔表达式 。一旦循环条件满足,循环就执行,否则退出循环。

语法:

WHILE DO

END_WHILE;

当值为TRUE时,指令开始执行,直到值为FALSE。在第一次值为FALSE,那么 永不会被执行。如果 永远不会为FALSE,那么 重复执行不停,这叫做死循环,编程时一定确保不要出现死循环。

示例

WHILE Counter<>0 DO

Var1:= Var1*2;

Counter := Counter-1;

END_WHILE

在一定意义上来说,WHILE循环和REPEAT循环比FOR循环功能更强大,因为不需要在执行循环之前计算循环次数。因此,在有些情况下,用WHILE循环和REPEAT循环两种循环就可以了。然而,如果清楚知道循环次数,那么FOR循环更好。

4.7 REPEAT

REPEAT循环不同于WHILE循环,因为循环条件是在循环指令执行后才检查的,这意味着,循环至少执行一次,不管循环条件值如何。语法:

REPEAT

UNTIL

END_REPEAT;

执行逻辑为:一直执行直到值为TRUE。如果在第一次值TRUE,那么 只被执行一遍。如果 值永远不是TRUE,那么 永远执行不停,导致死循环。

示例

REPEAT

Var1:=Var1*2;

Counter:=Counter-1;

UNTIL Counter=0;

END_REPEAT;

4.8  CONTINUE 语句

CONTINUE指令在 FOR, WHILE和 REPEAT循环中使用,用于提前结束本轮循环,并重新开始下一轮循环。

示例

FOR Counter:=1 TO 5 BY DO

INT1:=INT1/2;

IF INT1=0 THEN

CONTINUE;

END_JF

Var:=Var1/UBT1L

END_FOR;

Erg:=Var1;

4.9 FOR循环

通过FOR循环,可以编写重复处理逻辑。

语法:

FOR := TO {BY } DO

END_FOR;

{} 内的部分是可选的。INT_Var是计数器,是整数类型,只要计数器不大于,会被执行。在执行 之前首先要检查该条件,如果 大于 , 不会被执行。

当 执行一次后, 自动增加。可以是任意整数值,如果不写此参数,默认值为1。当大于时,循环停止。

示例

FOR Counter:=1 TO 5 BY 1 DO

Var1:=Var1*2;

END_FOR;

Erg:=Var1;

我们假设Var1默认值是2, 经过FOR循环后,它的值是32。

4.10 注释

在结构化文本中有两种写注释的方法。

多行注释,用“(*”开始,“*)”结束。这允许注释跨行注释。例如: "(*This is a comment.*)"

单行注释,用“//”作为注释的开始直到本行结束。例如: "// This is a comment."

注释可以在ST编辑器声明或实现部分的任意地方。

注释的嵌套:注释可以放置在其他注释中

示例(*a:=inst.out; (*to be checked*)b:=b+1;*)

st计算机编程语言,ST语法编程基础-ST语言简介相关推荐

  1. c语言移动通信功率计算,《移动通信软件编程基础—C语言》第3章_运算符.ppt

    <移动通信软件编程基础-C语言>第3章_运算符.ppt 移动通信软件编程基础 C语言,知识回顾3,运算符,第,章,本章目标理解表达式,掌握赋值运算符和赋值表达式,掌握关系运算符和关系表达式 ...

  2. 计算机编程语言python-PYTHON之计算机语言基础知识 —— 编程语言的分类

    一.计算机语言分类 低级语言.高级语言.专用语言.脚本语言 1.低级语言:机器语言.汇编语言和符号语言.机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令(机器码)的合集,他是计算机的设 ...

  3. html语言技术基础,第2章Web编程基础HTML语言技术方案.ppt

    通过Internet浏览世界各地的网络资源,或者要把信息通过Internet以Web方式发布到全球,就必须使用网页.网页就是用户在浏览器上看到的一个个画面.通过网页,即便是一个不懂计算机的人,也能借助 ...

  4. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  5. 计算机c语言程序,计算机编程|C语言简介

    int main(void) { float total; printf('输入总钱数:\n'); scanf('%f',&total); int num; printf('输入红包数量:\n ...

  6. Java基础----Java语言简介

    1.什么是Java语言 Java语言是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言,是一种强类型语言. Java是一门面向对 ...

  7. st计算机编程语言,ST(结构化文本语言(ST))_百度百科

    ST (结构化文本语言(ST)) 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 结构化文本/结构式文件编程语言(英语:Structured ...

  8. html是不是网络编程语言或技术,网页编程基础HTML语言.ppt

    这是精心收集的精品经典资料,值得下载保存阅读! 2.1 HTML概述2.2 文字风格设置2.3 段落控制标记2.4 超链接标记; 通过Internet浏览世界各地的网络资源,或者要把信息通过Inter ...

  9. kotlin编程语言_Kotlin初学者编程基础

    kotlin编程语言 什么是Kotlin? (What is Kotlin?) Kotlin is a programming language developed by Jetbrains, the ...

  10. python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...

    socket介绍: socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工. socket应用: 不夸张来说,只要跟网络 ...

最新文章

  1. querySelector用法改进
  2. iframe如何发送请求_插件分享 | 如何半天玩转一个“ES未授权利用”插件
  3. 在discuzNT中加入Adsense广告(只在第一楼显示)
  4. linux mysql 端口配置文件_linux虚拟机中各服务端口及配置文件路径
  5. 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)
  6. android uri跳转导航,android:scheme 通过uri跳转到APP应用指定Activity
  7. 去掉 Warning:$HADOOP_HOME is deprecated
  8. JZOJ 4.2 C组 打鼹鼠
  9. 轻量级高并发物联网服务器接收程序源码
  10. 串口抓包/截断工具的安装及使用详解
  11. 第二次作业:微博案例分析
  12. 代码量怎么计算_怎么样利用南方CASS三角网法和方格网法进行土方量计算
  13. 7天快速掌握MySQL-DAY2
  14. docker swarm英文文档学习-7-在集群中管理节点
  15. kernel too old
  16. 支付宝小程序 支付时订单处理失败 报ALI38173
  17. STM32-RCC的功能和使用
  18. 云计算介绍之云计算服务器
  19. 基于CH340的一键下载电路
  20. php与ui设计的区别,UI设计和平面设计的区别

热门文章

  1. Keil4 keil5兼容
  2. ROS2中的行为树 BehaviorTree
  3. 苹果7p更新系统老是服务器出错,7p为什么无法更新系统 7p无法更新系统怎么办...
  4. Win10下连接树莓派ZeroW(附win10虚拟网卡驱动下载)
  5. LU分解 LDL分解 Cholesky分解
  6. python参考文献期刊格式_论文参考文献格式
  7. 如何在cad中模块计算机,AutoCAD如何创建块 CAD模块创建方式一览
  8. z世代消费力白皮书_LSPACE丨Z世代虽穷但买的态度你真的懂吗
  9. Linux的ssh登录命令,linux之ssh命令详解
  10. 如何将本地图片转成链接?