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编程中变量太多怎么办?使用结构体变量,瞬间建立上万个变量
前文 三菱FX2n系列PLC结构化编程实例,电机综合控制功能块 向大家介绍了不一样的三菱FX系列PLC的编程,相信大家对下图并不陌生吧。
图一
如图一所示,这就是最后向大家介绍的结构化编程的最终例子,也就是三个电机的控制。大家看,我并没有把功能块的输入输出全部填满,为什么呢?太多了,太麻烦了。这还是三个电机,要是十个,一百个电机呢?那就要几百个变量了(注:在三菱PLC中,称之为标签,其实就是变量的意思),即使你不使用变量,直接使用物理地址,那也是很麻烦的。其实,大家肯定会碰到这种情况,比如几百个阀门的控制,几十个风机的控制,上百个气缸,电磁阀的控制,比如通讯读取写入几十个变频器或是伺服的参数等等。他们有个共同点,就是单个被控对象的变量很多,但又相似,被控对象总量又多。这时候,如果按传统方法那是很累的,因此,PLC就引入了高级功能,结构体变量。
结构体变量,是从计算机高级语言引入到PLC中的概念,它和布尔型,整型,浮点型等一样,在PLC中也是一种变量类型。在计算机高级语言中,结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。在PLC中,它是一系列不同数据类型的集合。
举个例子,比如我们要描述一个人,那么他就具有姓名,年龄,籍贯,履历等等要素构成。同样,对于一个电机也有正转,反转,停止,电流,转速等要素。如果定义一个电机为结构体变量,那么,正转,反转,停止,电流,转速等要素就构成了电机这个结构体变量。通俗的讲,结构体变量就是一系列变量的集合,用来表述一个更高级的变量。
下面小编我就举例来说明
1 新建结构体变量
图二
如 图二所示,找到结构体,然后右击,选择新建数据
图三
如 图三所示,我们选择结构体,数据名就是我们要定义的结构体变量的名字,我们就叫它MOTOR。至此,我们就建立好了一个结构体变量,但它还是空的,还没有描述它的元素。
2 为结构体变量添加元素
组成结构体的变量可以是PLC所支持的所有变量类型。
图四
如 图四所示,我们给结构体变量MOTOT添加元素,包括正转,反转,复位,速度,电流等等。注意看数据类型,包括了布尔型和浮点型,这个可以根据需求和被控对象以及工艺要求,自己添加。
至此,我们就完全建立好了结构体变量,接下来,就是在程序用调用了。
3 调用结构体变量
调用结构体变量,首先要定义结构体变量,和我们定义普通的布尔型,整型等等变量是一样的。不过结构体变量的变量类型就是我们定义的结构体变量的名字。
图五
如图五所示,这就是定义好的结构体变量,一共定义了三个变量,注意看它的数据类型,是MOTOR型,就是我们定义的结构体变量。这个怎么选呢,我们点击红色圆圈部分
图六
如图六所示,看黄色荧光笔部分,就是选择变量类型的。基本数据类型就是常规的布尔型,浮点型,而选结构体,就是定义为结构体型变量。
在程序中使用,直接用点来引用就可以了,也就是结构体变量名.结构体元素, 比如我们要引用其中的正转 Belt_Left.Frd, Belt_Righe.Frd, Fan_Heat.Frd ,需要注意的是,要使用英文输入法。
图七
如图七所示,就是我们在程序中的使用了,我们可以看到 三菱的结构化编程中,各功能块可以自由移动 ,类似CFC,这点做的不错,得表扬一下小日本。要知道,西门子博途中即使1500也不支持这种自由移动的CFC。而这种CFC指令在处理过程控制和运动控制中使用是非常方便的,比呆板的FBD好用多了。
总结:结构体变量是PLC的高级应用技术,掌握起来可能比较难,不要说初学者,就是一些老司机理解起来也比较费劲,没关系,实践是最好的老师,大家在平常的工程项目中要用于实践,多摸索,不要故步自封,多学多练,自然就会掌握。结构化变量是实现结构化编程的利器,特别是石化,钢铁,暖通等过程控制行业,控制对象往往非常多,而控制要素又差不多,使用结构体变量是非常方便的。
相关问答
plc变量怎么理解?
PLC(可编程逻辑控制器)变量是指在PLC编程中用于存储和处理数据的符号。它们类似于其他编程语言中的变量,可以存储不同类型的数据,例如数字、布尔值、字符串等...
plc变量如何分配?
在PLC(可编程逻辑控制器)编程中,变量分配通常涉及将物理输入/输出信号映射到PLC内存中的变量。以下是变量分配的基本步骤:确定输入和输出信号:首先,需要识...
plc常用变量名?
变量名都是自己起的,一般常用的有启动,停止等等。变量名都是自己起的,一般常用的有启动,停止等等。
plc形式参数变量怎么建立?
1.PLC形式参数变量可以很方便地在程序中传递和使用。2.建立PLC形式参数变量的原因是为了实现程序的灵活性和可重用性。通过将参数变量作为输入和输出,可以在...
plc变量和db块怎么关联?
在PLC编程中,变量和DB块之间的关联可以通过以下步骤进行:1创建变量:在PLC编程软件中,创建需要与DB块关联的变量。这些变量可以包括输入、输出或中间变量,...
s71200plc如何定义变量?
变量表里只能定义符号名称,使用PLC内部定义好的存储区,如I/O输入输出区的I,Q,M这些,这些元件数据类型都是定义好的,不能改,所以你要想用到其他数据类型必须...
汇川plc变量什么意思?
PLC是可编程逻辑控制器(ProgrammableLogicController)的缩写,汇川(Omron)PLC是指由日本汇川公司生产的PLC设备。它是一种用于自动化控制系统的电子计算机...
PLC的变量如何与Wincc连接?需要在PLC程序中编程吗?
使用脚本程序,调用内部函数SetTag(“PLC变量”,GetTag(“内部变量”))。SetTag和GetTag函数可详见Wincc帮助说明使用脚本程序,调用内部函数SetTag(“PLC变量....
三菱PLC编程使用标签是什么意思,怎么使用啊,万分感谢?
标签和变量,可以认为是一个意思,都是PLC编程中的重要基础概念,一般美系和日系的称作标签,比如三菱和AB,而欧系的称为变量,比如西门子。PLC的实质就是计算机...因...
威伦触摸屏怎么读取PLC脉冲变量值?
1.PLC脉冲变量值存放在哪里?对于没有设计过PLC定位程序的朋友,可能会比较陌生。PLC厂家在进行产品设计时,就已经将脉冲的当前输出频率,当前脉冲量(位置)...