结构化文本语言ST编程资料下载.pdf

上传人:wj 文档编号:5981758 上传时间:2023-05-05 格式:PDF 页数:38 大小:671.51KB
下载 相关 举报
结构化文本语言ST编程资料下载.pdf_第1页
第1页 / 共38页
结构化文本语言ST编程资料下载.pdf_第2页
第2页 / 共38页
结构化文本语言ST编程资料下载.pdf_第3页
第3页 / 共38页
结构化文本语言ST编程资料下载.pdf_第4页
第4页 / 共38页
结构化文本语言ST编程资料下载.pdf_第5页
第5页 / 共38页
结构化文本语言ST编程资料下载.pdf_第6页
第6页 / 共38页
结构化文本语言ST编程资料下载.pdf_第7页
第7页 / 共38页
结构化文本语言ST编程资料下载.pdf_第8页
第8页 / 共38页
结构化文本语言ST编程资料下载.pdf_第9页
第9页 / 共38页
结构化文本语言ST编程资料下载.pdf_第10页
第10页 / 共38页
结构化文本语言ST编程资料下载.pdf_第11页
第11页 / 共38页
结构化文本语言ST编程资料下载.pdf_第12页
第12页 / 共38页
结构化文本语言ST编程资料下载.pdf_第13页
第13页 / 共38页
结构化文本语言ST编程资料下载.pdf_第14页
第14页 / 共38页
结构化文本语言ST编程资料下载.pdf_第15页
第15页 / 共38页
结构化文本语言ST编程资料下载.pdf_第16页
第16页 / 共38页
结构化文本语言ST编程资料下载.pdf_第17页
第17页 / 共38页
结构化文本语言ST编程资料下载.pdf_第18页
第18页 / 共38页
结构化文本语言ST编程资料下载.pdf_第19页
第19页 / 共38页
结构化文本语言ST编程资料下载.pdf_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

结构化文本语言ST编程资料下载.pdf

《结构化文本语言ST编程资料下载.pdf》由会员分享,可在线阅读,更多相关《结构化文本语言ST编程资料下载.pdf(38页珍藏版)》请在冰点文库上搜索。

结构化文本语言ST编程资料下载.pdf

结构文本基础例子:

图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:

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语句IFELSE语句IFELSIF语句嵌套的IF符号逻辑比较含义例子=等于IFa=bTHEN不等于IFabTHEN大于IFabTHEN=大于等于IFa=bTHEN小于IFabTHEN=小于等于IFabTHEN1.比较Result:

=1;

1.语句(s)ELSIFTHENELSIFacTHEN2.比较(可选)Result:

=2;

2.语句(s)ELSEELSE前面IF语句都不满足(可选)Result:

=3;

3.语句(s)END_IFEND_IF判断结束结构文本(ST)TM命令组4.4.1IF最简单的IF判断语句。

基本上,如果条件表达式的结果为TRUE就执行语句。

如果条件表达式的结果是FALSE,程序就执行END_IF后面的语句。

条件表达式可以是简单关联的语句或用运算符(and,or等)连接的复合语句。

图.简单IF语句程序图.简单IF语句流程图结构文本(ST)TM4.4.2ELSE它是简单IF语句的扩展。

在IF结构中应该只有一个ELSE。

如果条件为TRUE,执行语句A。

如果条件为FALSE,执行语句B。

命令组图.IF-ELSE语句图.IFELSE程序结构文本(ST)TM命令组4.4.3ELSIF运用一个或多个ELSE_IF语句可以实现多个不同的条件,而不用使用多个简单的IF语句创建复杂的程序逻辑。

图.IF-ELSIF-ELSE流程图图.0IF-ELSIF-ELSE程序处理器自上而下地执行判定。

如果条件的结果为TRUE,那么就执行属于这个条件的指令和命令,之后处理器就跳到判断语句的结尾(END_IF)。

在程序的一次循环中,无论下一个条件是否为TRUE,只有上面属于第一个条件TRUE的语句被执行。

如果IF或ELSIF条件都不为TRUE,那么就执行属于ELSE下的指令。

结构文本(ST)TM命令组任务:

气象站第I部分用温度计来测量室外的温度,温度通过模拟量读取(=0),并且要以文本的形式在房间里显示。

当温度在C以下,显示cold(冷)。

当温度是在C到C之间,显示opt(最佳)。

当温度是C以上,显示hot(热)。

用IF,ELSIF和ELSE语句实现这个任务。

图.温度计,例子,IF备注:

在ST中,按如下指定一个字符串文本:

StringVar:

=COLD结构文本(ST)TM命令组4.4.4嵌套的IF语句嵌套对于依赖其它条件的条件测试很有用处。

一个嵌套的IF语句其优先级低于上一层的优先级,它的执行取决于上一层IF条件的结果。

使用嵌套时必须注意每个IF要和END_IF相匹配,否则会导致错误的执行顺序。

建议在每个嵌套的IF语句和它的执行语句中使用缩排。

IF语句可以嵌套在你想要的深度,但是三十或四十级以后,编辑器会用完内存,所以这是一种非常糟糕的编程格式!

这时你完全丢失了代码的总貌。

当使用嵌套多于级或级时,你应该重组程序代码。

图.嵌套IF语句图.嵌套IF语句程序结构文本(ST)TM0用两个但并不嵌套的IF语句也可以达到同样的功能,就像嵌套的语句一样。

可以在多个语句中运用标识变量或一个标志。

第一个IF语句描述该标志,其他的IF语句利用该变量。

命令组任务:

气象站第II部分检测温度和湿度。

只在当湿度介于0和%之间并且温度在和C之间显示文本OPT。

否则显示Temp.OK。

运用嵌套的IF语句完成该任务。

图.两个IF语句Fig.两个IF语句结构文本(ST)TM命令组在这种情况下,IF语句有相同的优先级,第二个IF语句和第一个IF语句一样每次都执行。

不用相同的变量,你可以有两个独立的IF语句。

当发生以下情况时,推荐使用Case语句代替IF语句:

IF结构有过多分层使用过多(三个或更多)的ELSE_IF在这种情况下Case语句更容易读懂。

CASE与IF结构相比较还具有另一个优点:

CASE语句中只做一次计算,并能创建更有效的代码。

结构文本(ST)TM命令组4.5Case语句在CASE语句中,控制变量与几个值作比较,如果表达式的结果与其中一个值相同,那么就执行相应的语句。

如果表达式的结果与任何一个值都不相同,那么就执行象IF语句一样的ELSE分支。

语句执行完后,继续执行END_CASE后的程序。

图.CASE流程图关键字语法描述CASEOFCASEstepvariableOFCASE开始,:

Display:

=MATERIAL从到:

=TEMP,.0:

=OPERATION,0END_CASEEND_CASECASE结束结构文本(ST)TM命令组在程序的一次循环中,只执行case的一个子句。

图.CASE语句程序CASE语句的语法:

CASE语句以CASE开始,以END_CASE结束,并且各自单独占一行。

在CASE和OF之间的变量必须是UINT类型。

在CASE的子句中,只能使用正整数,不允许使用变量名或表达式。

数字不能重叠使或在几个区域内使用。

备注:

在CASE语句步骤中可以用常量来代替数字。

这样可以更加容易读程序。

酿造槽酿造槽的填充程度由low,ok,和high表示。

分别运用输出表示low,ok,和high等级。

通过读取模拟量输入内部转换成0-00%来表示槽中液体的水平面。

如果容量低于%,将会出发一个警告声。

运用CASE语句创建一个方案。

Fig.0酿造槽结构文本(ST)TM命令组4.6循环语句在很多应用程序中,需要多次执行某些步骤,这就是重复执行代码的原因,这个过程叫循环。

循环程序的设计中需要建立这样一种程序使它能够循环返回并循环执行自身程序。

循环语句使源代码简短并一目了然。

循环语句可以嵌套在其它语句中。

循环程序编写时很容易进入死循环,一直重复执行自身程序,引起控制器启动看门狗限制,并产生一个严重错误阻碍程序的执行。

因此,通常使用一些方法来跳出循环:

设定循环次数或条件改变时停止循环。

在ST中有几种不同的循环方式:

有限制的FOR无限制的WHILEREPEAT结构文本(ST)TM命令组4.6.1FOR如果提前可以确定循环的次数就用FOR语句,否则就用WHILE或REPEAT。

FOR语句可以递增或递减循环控制变量的值,使它从起始值到达终止值。

递增或递减的默认值为。

每次循环之前都会检测终止条件,如果循环控制变量的值超过终止值时,就不再执行语句段了。

关键字语法描述FORTOBYDOFORi:

=StartValTOStopValBYStepDO中的部分是可选的Res:

=value+;

循环语句段END_FOREND_FORFOR语句结束图.FOR流程图图.0FOR语句程序FOR循环中的语句反复被执行,而递增值分配给了FOR语句的循环控制变量(i)。

每次循环后,变量StepVal会自动加。

StartVal和EndVal是循环控制变量的起始值和终止值。

当控制变量达到终止值时,程序就执行END_FOR语句。

循环控制变量、起始值和终止值都必须是相同的数据类型(U)SINT,(U)INT,(U)DINT),并且不能由循环语句改变。

起重机个独立的负载悬挂在起重机上。

为了得到总负载,您需要累加每个独立的负载。

图.Crane使用FOR循环语句创建任务解决方案。

结构文本(ST)TM命令组4.6.2WHILEWHILE循环除了条件可以是任意的布尔表达式以外其他和FOR循环用处一样。

当条件满足时,执行循环语句。

当逻辑条件为TRUE就重复调用语句时,使用WHILE语句。

WHILE语句执行时首先检测条件。

如果条件为TRUE就执行语句段。

当执行完语句段后,再次检测条件,如果条件仍为TRUE,那么就再次执行语句段,直到条件不为TRUE。

如果条件一开始就为FALSE,那么就不会执行语句段。

关键字语法描述WHILEDOWHILEi退出条件END_REPEATEND_REPEAT循环结束图.REPEAT流程图图.REPEAT语句程序备注:

如果UNTIL条件永远不为TRUE,那么程序进入死循环,并产生一个运行错误。

结构文本(ST)TM04.6.4EXITEXIT语句是当终止条件满足时,退出所有的循环语句。

图.EXIT流程图图.EXIT语句程序图.嵌套循环中的EXIT流程图图.FOR嵌套语句中的EXIT语句程序当EXIT语句用在一个嵌套的循环中时,退出只是在EXIT所在的循环中执行。

循环结束后继续执行结束语句后的程序。

命令组结构文本(ST)TM4.7调用功能块ST中调用功能块的方法:

写出功能块的名称,并在括号中给的需的输入参数分配变量名。

在调用功能块之前,需要给输入参数分配所需的值。

功能块调用放在一行里,以分号结束。

在调用功能块之后才能读取FB输出值。

首先是功能块的名称,接着是位于括号里的输入参数。

输入参数用逗号隔开。

功能块调用以分号结束。

图.0调用功能块流程图图.调用功能块程序Functionblockcallindetail:

图.功能块调用的明细命令组结构文本(ST)TM任务:

瓶记数创建一个程序来计算传送带上瓶子的数量。

运用STANDARD库中的CTU(上升沿计数器)功能块。

图.瓶记数备注:

在调用功能块是可以参考AutomationStudio在线帮助。

命令组结构文本(ST)TM4.8指针和动态变量B&

R为您提供指针以扩展ST的功能。

使用这些是可选的。

在运行时,系统给动态变量PV分配了一个内存地址,这个过程叫做动态变量的寻参或初始化。

当一个动态变量被初始化后,根据数据类型它可以获得它所指向的存储器的内容。

图.定位动态变量用ADR()操作符,返回的是小括号中变量的地址,为UDINT类型。

这行语句应该以分号“;

”结束。

命令组结构文本(ST)TM5、小结结构文本是一种高级语言,并能提供非常广泛的指令。

ST的优势在于它的简洁性,它比ANSIC简单易学,比梯形图或指令表效率更高。

过去和现在当学习完这个培训模块后,您就可以编写自己的ST任务了。

您也可以把该培训模块当作参考。

该编程语言尤其在数学功能和数学公式的运算时十分有用。

小结结构文本(ST)TM6、练习任务:

起重箱两个传送带(doConvTop,doConvBottom)把箱子传输到起重机。

如果光电池(diConvTop,diConvBottom)激活,相应的传送带停止并调用起重机。

如果起重机没有被调用,它返回到适当的位置(doLiftTop,doLiftBottom)。

当起重机到达正确位置(diLiftTop,diLiftBottom),起重机传送带(doConvLift)启动直到箱子完全位于起重机上。

然后起重机运动到卸载位置(doLiftUnload)。

当它到达该位置(diLiftUnload),箱子移到卸载带上。

知道箱子离开了起重机,起重机才能空闲接受下一个请求。

图.起重箱练习结构文本(ST)TM7、附录7.1关键字关键字是ST可用的语句,但不能作为变量名。

AutomationStudio编辑器用蓝色来显示它们。

关键字描述ACCESS使用动态变量。

BIT_CLRA:

=BIT_CLR(IN,POS)A为变量IN在POS位清0后的值。

IN值保持不变。

BIT_SETA:

=BIT_CLR(IN,POS)A为变量IN在POS位置后的值。

BIT_TSTA:

=BIT_TST(IN,POS)位的状态值。

A为IN变量在POS位的状态值。

BY参考FOR语句。

CASE参考CASE语句。

DO参考WHILE语句。

EDGE检测上升沿和下降沿信号。

EDGENEG检测上升沿信号。

EDGEPOS检测下降沿信号。

ELSE参考IF语句。

ELSIF参考IF语句。

END_CASE参考CASE语句。

END_FOR参考FOR语句。

END_IF参考IF语句。

END_REPEAT参考REPEAT语句。

END_WHILE参考WHILE语句。

EXIT参考EXIT语句。

FOR参考FOR语句。

IF参考IF语句。

REPEAT参考REPEAT语句。

RETURN可以通过例子中的条件来结束函数。

THEN参考IF语句。

TO参考FOR语句。

UNTIL参考REPEAT语句。

WHILE参考WHILE语句。

附录结构文本(ST)TM7.2函数在结构文本中使用有些函数不需插入库函数。

AutomationStudio编辑器用蓝色显示这些函数。

函数例子ABS返回数的绝对值。

ABS(-)返回。

ACOS返回数的arccosine值。

(cosine的反函数)。

ADR返回变量的地址。

AND位操作逻辑与。

ASIN返回数的arcsine值。

(sine的反函数)。

ASR操作数算术右移:

A:

=ASR(IN,N)IN右移N位,左边由符号位填充。

ATAN返回数的arctangent值。

(tangent的反函数)。

COS返回数的cosine值。

EXP指数函数:

=EXP(IN).EXPT一个操作数为另一个操作数的幂:

=EXPT(IN,IN).LIMITA=LIMIT(MIN,IN,MAX)MIN是结果的下限,MAX是结果的上限。

如果IN小于MIN,则返回结果是MIN。

如果IN大于MAX,则返回结果是MAX。

否则,返回结果为IN。

LN返回数的自然对数。

LOG返回以0为底的数的对数。

MAX最大值函数。

返回两个数中较大的数。

MIN最小值函数。

返回两个数中较小的数。

MOD将USINT,SINT,INT,UINT,UDINT,DINT变量取模除另一个这些类型的变量。

MOVE把输入变量复制到输出变量。

=符号用有赋值语句中。

=B;

和A:

=MOVE(B)相同;

MUX选择:

A=MUX(CHOICE,IN,IN,.INX);

CHOICE指定返回哪个操作数(IN,IN,.INX)。

NOT位取反。

OR位操作逻辑或。

ROL循环左移操作数:

=ROL(IN,N);

IN中每位左移N次,最左面的位移到右边。

ROR循环右移操作数:

IN中每位右移N次,最右面的位移到左边。

SEL二进制选择:

=SEL(CHOICE,IN,IN)CHOICE必须是BOOL类型。

如果CHOICE为FALSE,那返回IN,否则返回IN。

SHL操作数的位左移:

=SHL(IN,N);

IN左移N位,右边的位以零填充。

附录结构文本(ST)TMSHR操作数的位右移:

=SHR(IN,N);

IN右移N位,左边的位以零填充。

SIN返回数的sine值。

sizeof以字节数返回指定变量的长度。

SQRT返回数的平方根。

TAN返回数的tangent值。

TRUNC返回数的整数部分。

XOR位操作逻辑异或附录结构文本(ST)TMNotes

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2