结构文本(ST)TM246结构文本(ST) TM前提培训模块:TM0–AutomationStudio基础TM–AutomationStudio在线通讯TM–自动化运行(Runtime)系统TM–AutomationStudio诊断软件:无硬件:无简介结构文本(ST) TM目录・简介………………………………………………………………………………………. 目的……………………………………………………………………………・结构文本特点……………………………………………………………………………. 概述……………………………………………………………………………. 特点……………………………………………………………………………. 可能性…………………………………………………………………………・结构文本基础……………………………………………………………………………. 表达式…………………………………………………………………………. 赋值……………………………………………………………………………. 注释……………………………………………………………………………. 操作符优先级…………………………………………………………………・命令组……………………………………………………………………………………. 布尔逻辑操作…………………………………………………………………. 算术运算……………………………………………………………………. 比较操作……………………………………………………………………. 判断…………………………………………………………………………. Case语句……………………………………………………………………. Loops………………………………………………………………………. 调用功能块…………………………………………………………………. 指针和动态变量……………………………………………………………・小结……………………………………………………………………………………・练习……………………………………………………………………………………・附录……………………………………………………………………………………. 关键字………………………………………………………………………. 函数…………………………………………………………………………结构文本(ST) TM简介1、简介结构文本是一种高级语言,如果你知道如何使用高级语言来编程,像:Basic、PACSAL或C,那么你会很轻松的掌握StructuredText(ST)编程;如果不知道,你会看到ST有着简单、标准的结构,保证程序高效、快速运行并简单易懂。图.书本印刷:过去和现在在下一章里,你会学习到ST的命令、关键字、语法和其它的主题。所有的这些你都可以做练习,我们有许多帮助你理解ST的简单例程。结构文本(ST) TM1.1 目的课程参与者将熟悉使用结构文本给自动化目标编程。课程参与者将学到每个独立的命令组和它们之间如何工作。课程参与者将了解结构文本预留的关键字。图.综述简介结构文本(ST) TM2、结构化文本的特点2.1 概述ST是针对自动化系统的高级文本编程语言。简单的标准结构确保快速、高效的编程。ST使用了高级语言的许多传统特性,包括:变量、操作符和控制流程语句。ST还能与其它的PLC编程语言一起工作。那么什么是结构文本呢?结构是指高水平的结构化编程能力,象一个结构化的编程;文本是指应用文本而不是梯形图和顺序函功能表的能力。ST语言不能代替其它的语言,每种语言都有它自己的优点和缺点。ST主要的一个优点就是能简化复杂的数学方程。2.2 特点结构化文本有以下特点:高级文本编程语言结构化的编程简单的标准结构快速高效的编程使用直观灵活与PASCAL类似有计算机编程经验的人可以很容易地使用它符合IEC-标准2.3 可能性AutomationStudio提供以下功能:数字量和模拟量I/O逻辑操作逻辑比较表达式算术运算判断语句机器的状态语句循环语句功能块可选用的动态变量诊断工具结构文本特点结构文本(ST) TM3、结构文本基础3.1 表达式表达式是指返回变量评估值的结构。表达式由操作符和操作数组成。操作数可以是常量,变量,调用函数或其它表达式。3.2 赋值操作符通过一个表达式和一个值来给变量赋值。赋值语句包括位于左边的变量,赋值操作符:=,及后边需要计算的表达式。所有的语句,包括赋值语句,必须要以分号;结尾。当这行程序执行后,变量Var的值是变量Var的两倍。3.3 注释虽然注释经常被删掉,但它们是源代码中非常重要的一部分。它们解释了一部分代码,使程序更易读懂。注释帮助你或其他人读你的程序,即使过去了很长时间。注释不被编译,因此不会影响程序的执行。注释应该用一对星号和小括号括起来(*comment*)。结构文本基础例子:图Assignment例子:图.单行注释例子:结构文本(ST) TM3.4 操作符优先级如果在一个表达式中使用几个操作符,就会出现优先级的问题(执行的顺序)。操作符按优先级的顺序来执行。在任何一个表达式中,首先执行最高级别的操作符,接着执行低一级的操作符,等等,直到执行完所有的操作符。具有相同级别的操作符按照书写顺序从左至右依次执行。结构文本基础操作符符号/语法:括号()最高优先级函数调用例子Callargument(s)LN(A),MAX(X),等.注释**取反NOT乘除取模(取除法的余数)*/MOD加减+-比较,,=,=等于不等于=逻辑与AND逻辑异或XOR逻辑或OR最低优先级结构文本(ST) TM执行顺序:结构文本基础例:图.例:执行顺序首先做乘法,然后是加法,最后是减法。使用小括号(最高优先级),可以得到你想要的执行顺序。看下面的例子。例:如下所示,将操作符放到小括号里可能影响执行的顺序。图.例:执行顺序表达式从左至右执行。先执行小括号里的操作,接着是乘法。因为小括号的优先级高于乘法的优先级。可以看出,这两个例子看起来很相似,但结果不同。结构文本(ST) TM4、命令组ST有下面的命令组:布尔逻辑操作算术操作比较操作判断Case语句4.1 布尔逻辑操作操作数不需要是BOOL类型。布尔逻辑操作:真值表:这些操作符可以形成一个逻辑表达式和条件语句,结果是真(TRUE)或假(FALSE)。命令组符号逻辑操作例子NOT取反a:=NOTb;AND逻辑与a:=bANDc;OR逻辑或a:=bORc;XOR异或a:=bXORc;输入ANDORXOR0000000000结构文本(ST) TM0ST编辑器允许任何数的分枝。命令组例:图.0电气图例:图.0电气图练习:当按下BtnLigntOn开关后,输出DoLight应该亮起,直到BtnLightOff按下后才关闭。使用布尔逻辑操作编写该任务。图.例子,逻辑操作结构文本(ST) TM4.2 算术运算使用高级语言的决定性因素是看它处理算术运算的简单程度。4.2.1 基本的算术运算ST为应用程序提供了以下基本的算术运算:数据类型是非常重要的参数。看下面的表格。:*编译器出错信息:Typemismatch:CannotconvertREALtoINT.你可以看到,结果也依赖于语法和数据类型。表达式左边的数据类型应该等同于(或大于)右边的数据类型。命令组符号算术操作例子:=赋值a:=b;+加a:=b+c;-减a:=b-c;*乘a:=b*c;/除a:=b/c;MOD取模(显示余数)a:=bmodc;语法数据类型结果ResOpOpRes:=/;INTINTINTRes:=/;REALINTINT.0Res:=.0/;REALREALINT.Res:=.0/;INTREALINTError备注:左面数据类型:=右面数据类型;结构文本(ST) TM4.2.2 隐性数据类型转换该类型的转换由编译器完成。编译器将表达式中低的数据类型转换成高的数据类型。如果有两种或多个类型的变量参与运算,那么必须将它们转换成相同的类型以便执行运算。图.隐性数据类型转换SINT_Var首先转换成INT类型。命令组DatatypeBOOLSINTINTDINTUSINTUINTUDINTREALBOOLBOOLxxxxxxxSINTxINTDINTUSINTUINTUDINTREALINTxINTDINTINTUINTUDINTREALDINTxDINTDINTDINTUDINTUDINTREALUSINTxUSINTINTDINTUINTUDINTREALUINTxUINTUINTDINTUINTUDINTREALUDINTxUDINTUDINTUDINTUDINTUDINTREALREALxREALREALREALREALREALREAL例子:图.固有数据类型转换例子结构文本(ST) TM4.2.3 显性数据类型转换显性数据类型转换也是数据类型转换问题。我们知道,表达式的左右两边要有相同的数据类型,但还需注意…第一眼看上去好像没什么问题,但和(INT_Weight+INT_Weight)超过了INT的取值范围。在这种情况下,必须使用显性数据类型转换。变量DINT_TotalWeight应该为DINT类型,右边的变量中至少有一个应转换成DINT类型。这种转换用的是OPERATOR库中的函数。命令组例子:例子:练习:在两个不同的地方检测玻璃钢的温度,编写程序来计算平均温度,并以模拟量显示输出。注意模拟量输入和输出必须是INT类型。图.玻璃钢结构文本(ST) TM命令组4.3 比较操作高级编程语言ST或以允许比较操作的简单结构分枝。比较的结果是真(TRUE)或假(FALSE)。比较操作作为一个逻辑条件用在IF,ELSE,WHILE和UNTIL语句中。4.4 判断用IF语句表示判断,这里还要用到比较操作。判断分三部分:简单IF语句IF–ELSE语句IF–ELSIF语句嵌套的IF符号逻辑比较含义例子=等于IFa=bTHEN不等于IFabTHEN大于IFabTHEN=大于等于IFa=bTHEN小于IFabTHEN=小于等于IFa=bTHEN判断语法描述IFTHENIFabTHEN1.比较Result:=1;1.语句(s)ELSIFTHENELSIFacTHEN2.比较(可选)Result:=2;2.语句(s)ELSEELSE前面IF语句都不满足(可选)Result:=3;3.语句(s)END_IFEND_IF判断结束结构文本(ST) TM命令组4.4.1 IF最简单的IF判断语句。基本上,如果条件表达式的结果为TRUE就执行语句。如果条件表达式的结果是FALSE,程序就执行END_IF后面的语句。条件表达式可以是简单关联的语句或用运算符(and,or等)连接的复合语句。例子:图.简单IF语句程序图.简单IF语句流程图结构文本(ST) TM4.4.2 ELSE它是简单IF语句的扩展。在IF结构中应该只有一个ELSE。如果条件为TRUE,执行语句A。如果条件为FALSE,执行语句B。命令组图.IF-ELSE语句图.IF–ELSE程序结构文本(ST) TM命令组4.4.3 ELSIF运用一个或多个ELSE_IF语句可以实现多个不同的条件,而不用使用多个简单的IF语句创建复杂的程序逻辑。图.IF-ELSIF-ELSE流程图图.0IF-ELSIF-ELSE程序处理器自上而下地执行判定。如果条件的结果为TRUE,那么就执行属于这个条件的指令和命令,之后处理器就跳到判断语句的结尾(END_IF