PLC编程(ST)语言常用语句及功能简介
前文给大家简单的讲了一下IEC61131-3&GB/T15969.3,可编程序控制器-第3部分:编程语言。IEC 61131-3国际标准的编程语言包括5种语言。
今天给大家带来的是其中我本人认为使用最方便,最简化的ST语言。
文本编程语言"结构文本(Structured Text),ST"来源于编程语言Pascal。主要分为赋值语句,选择语句,迭代语句。本次将从ST语言的操作符以及ST语言的语句来描述ST语言。大家不要认为ST语言很难。从本人的使用感受上来说,一个IF语句就可以应付90%以上的应用场景。
ST语言的操作符
ST语言的操作符
ST语言的语句
赋值语句(比较、结果、调用)
赋值语句用表达式的求值结果替代单个或多个元素变量的当前值。赋值语句应包括:左侧的变量应用,接着是赋值操作符":=",其后是要求值的表达式。
选择语句(IF、CASE)
选择语句包括IF语句和CASE语句。选择语句基于所规定的条件,选择其组成语句之一(或一组)用于执行。
IF 语句规定,仅当相关的布尔表达式求值为1(真)时,才会执行一组语句。如果条件为假,不是没有语句执行,而是执行跟着ELSE关键字(或ELSIF关键字,若其相关布尔条件为真)的语句组。
CASE 语句由一个对基本数据类型(选择符)变量求值表达式和一个语句组列表组成,每组都可应用一个或多个直接量或枚举值或子范围值来标记。这些标记的数据类型应该与选择符变量的数据类型匹配,选择符变量的值应该可以和标号进行比较。它规定执行第一组语句,其范围之一包含选择符的计算值。如果选择符的值在任何情形的范围中都不出现,则执行跟有关键字ELSE(若它在CASE语句中出现)的语句序列。否则,不执行任何语句序列。
迭代语句(WHILE、REPEAT、EXIT、CONTINUE、FOR)
FOR 语句使得直到END_FOR 关键字的语句序列重复地执行,一系列的值被赋给FOR循环控制变量。控制变量、初始值和终值是相同的整数类型(例如:SINT、INT、DINT)的表示,而不应被任何重复的语句改变。FOR语句将控制变量从初始值向上或者向下增加到终值,其增量由表达式的值决定;如果省略了BY结构,那么增量的默认值为1。
WHILE 语句使得直到END_WHILE 关键字的语句序列重复地执行,直到相关的布尔表达式为假时才结束。如果表达式初始就为假,则根本不执行语句组。
REPEAT 语句使得直到END_REPEAT 关键字的语句序列重复地执行(至少一次),直到相关的布尔表达式为真时才结束。
CONTINUE 语句用来跳过本次循环中CONTINUE 语句之后直到本层循环结束符之间的剩余语句。
EXIT 语句要在终止条件满足以前终止循环,应使用EXIT 语句。当EXIT 语句位于嵌套的循环结构内时,应从EXIT 所在的最内层循环退出,即在跟随EXIT 语句的第一循环的终止符后(END_FOR 、END_WHILE 、END_REPEAT ),控制应传给下一个语句。
总结,在IEC 61131-3国际标准的编程语言中,ST语言作为一种高级的文本语言。熟悉并掌握它极大的提高工程师的编程效率。笔者经常将一些重复性高的工作(如地址表)使用ST语言在EXCEL中进行制作,大大减少了编程工作量。在以后有机会我会用视频的方式给大家演示一个怎么用ST语言编译转换成3种图形编程语言。
PLC的各种变量怎样使用?
我最早接触“静态变量”的概念是在计算机C语言的编程中,清楚的记得它需要用"static"关键字来声明。静态变量(Static Variable)其实也是一种变量(Variable),因此在介绍静态变量(Static Variable)之前,我们先来介绍下在计算机和PLC的编程中“变量(Variable) ”的概念。
1 什么是变量
所谓“变量 ”,是在程序的运行过程中,其值可以根据某些条件而发生变化的量。与“变量”相对的是“常量(Constant) ”,顾名思义,常量的值在整个程序的运行中保持不变。
变量的名字称为“变量名”,变量名通常是一个助记符,用来表示一个物理地址。在这个地址上存放着变量的值。
变量有两个特性:作用域和生命周期。
2 全局变量与局部变量
变量的作用域是指变量的作用范围,也就是在哪些范围内该变量是有效的。根据作用域的不同,变量可以分为全局变量(Global Variable)和局部变量(Local Variable)。
全局变量在整个程序范围内都有效。
在C语言中,全局变量是在函数外部声明的变量。比如下面C语言代码中的“a”和“x”都是全局变量:
注:由于C语言从上而下执行,全局变量x并不能在函数func1中访问。
在西门子S7系列PLC的编程中,那些存放在公共存储区的变量都属于全局变量。公共存储区包括输入缓存区(I)、输出缓存区(Q)、位存储区(M)、全局数据块(Global DB)、定时器(T)、计数器(C)等等。比如,位存储区的M0.0,你可以在主程序(OB)或子程序(FB、FC)中访问它,它是全局的。
局部变量(Local Variable)是只能在某个子程序(FB或FC)中访问的变量。
也就是说,局部变量是私有的,子程序(FB或FC)只能访问其自身内部定义的变量,而不能访问其它子程序内部定义的变量。
从生命周期来看,全局变量的生命周期是整个程序的运行周期。也就是说,只要PLC还运行用户程序,全局变量就一直有效。
而局部变量的生命周期则取决于其存放的位置。
2 临时变量与静态变量
对于S7系列PLC而言,局部变量有两个存放的位置:临时变量存储区 (堆栈)和背景数据块 (Instance DB)。
临时变量存储区(堆栈),也称为局部变量存储区(Local Memory),用来存放FB或FC在运行过程中的临时变量 。
在S7系列PLC中,FB、FC或者OB都被称为“程序组织单元(POU,program organizational unit)”。PLC为每个POU分配一定数量的临时变量存储区,在S7-300/400 PLC中,这个区域的大小为256字节;在S7-200 Smart PLC中,这个区域的大小为64字节。
临时变量存储区中的变量称为“临时变量 ”,它们只在当前POU运行时有效。当POU运行结束后,该变量将被释放(无法保存)。
注:当POU由于中断而被挂起时,其临时变量会被保存,以便下次中断现场恢复后继续执行。
如果想保存程序运行的中间值怎么办呢?答案是使用静态变量(Static Variable)。
在博途(TIA Portal)环境或Step7开发环境中,功能块(FB)接口有“Static(STAT)”一项。所有在“STAT”栏内定义的变量都将会被存放到背景数据块中。在FB运行结束后,“STAT”中定义的变量不会被释放。这种变量称为“静态变量 ”。如下图中的变量“STAT_test1”和“STAT_test2”:
注:FB中的IN、OUT参数也会保存到背景数据块中。背景数据块中的数据只能被拥有它的功能块(FB)访问。
说到这里,你应该明白了吧?静态变量从作用域上分属于局部变量;从生命周期上来看,它与用户程序的生命周期相同。临时变量也属于局部变量,不过其生命周期短,仅在POU运行的过程中有效。
相关问答
如何设置三菱PLC的关键字?
设置关键字是要PC与PLC联机才行。8位有效数字(或开头用A,B,C)可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、...
三菱PLC的FX系列PLC用GX编程软件读不出程序,并没有要求输入...
那当然是PLC里边没有任何程序让你读出了。4条回答:【推荐答案】用FXGPWin试一试,GX对FX的兼容性不大好,尤其是8.0对7.0写的程序
三菱plcfx2n系列的解密,关键字解密?
正确安装USB转COM口驱动,连接电脑和PLC,打开你的电脑设备管理器,里面会出现虚拟COM口编号,设置软件通信,通信测试,成功再打开解密软件,设置同前面的虚拟CO...
三菱plc关键字怎么破解?
格式化PLC,然后将源程序传进去格式化PLC,然后将源程序传进去
怎么解除三菱PLC的关键字?
三菱PLC的关键字一般指以"#"符号开头的地址,这些地址通常被保留用于PLC系统中的特定用途,无法直接修改或使用。如果您需要解除这些关键字地址的限制,可以按...
三菱PLC硬件设置密码怎么样设置_汽配人问答
[最佳回答]连接plc后在编程器上选择在线-登陆关键字-新建登陆(我这里没有连接plc所以是灰色的)
三菱plc如何设置密码?
以下是设置三菱PLC密码的步骤:1.在PLC程序中选择操作对象,例如程序、数据,然后从菜单栏选择“设定”。2.选择“设定”后,选择“保护设置”,然后在保护设...
PLC培训哪里好?
科技引领生活,爱科技的小青年带你在科技的海洋里无限遨游……PLC培训哪里好,这个问题可能是所有初学者都会问的,是想着通过一个好的培训更早的掌握PLC的知识...
三菱plc如何编密码-懂得
关键字就是你需要的设定的密码,必须为8位字符,否则无效。FX3U,FX3G可以设立两重密码。
三菱PLC时间锁程序?
三菱PLC锁机([密码])设置方式:将PLC通电,并通过编程电缆和电脑连接,在编程软件GX-DEVELOPER中依次选择“在线”→“登录关键字”→“新建登录”,在弹出的对...