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变量表的使用,变量的声明、选用、显示、定义、更改、保持性
本篇我们以西门子S7-1200为例来介绍PLC变量表的使用。在S7-1200 CPU的编程理念中,特别强调符号寻址的使用,在开始编写程序之前,用户应当为输入、输出、中间变量定义相应的符号名,也就是标签。具体步骤如下:
PLC变量表
一、在PLC变量表中声明变量,在项目视图的项目树中,打开PLC1下的PLC变量文件夹,双击打开PLC变量表,在PLC变量表中单击第一行的名称列,输入变量符号名,例如输入start,按回车键确认。
打开变量表
在数据类型列中,选择数据类型为布尔型,在地址列中,输入地址I0.0,在注释列中根据需要输入注释,如电动机启动按钮,这样我们就完成了对start变量的声明。按照同样的方法声明stop变量和motor变量。
声明变量
二、在程序编辑器中选用和显示变量,在项目树中打开PLC1下的程序块文件夹,双击Main主程序,打开程序编辑器,在程序段1中拖放触点和线圈指令,编写电动机起保停控制程序。单击常开触点,在出现的输入框中点击旁边的方框,就会出现已定义PLC变量的下拉列表,从中选择start,按照同样的方法对所有指令完成操作。
选用变量
选中工具栏中启动或禁用绝对操作数按钮,在旁边的下拉列表中选中符号选项,则程序中只显示变量符号。 如果选择绝对选项,则程序中只显示变量地址。如果选择符号和绝对选项,则程序中同时显示变量符号和地址。
显示变量
三、在程序编辑器中定义和更改PLC变量,选中常开触点start。单击鼠标右键,选择重命名变量,在弹出的对话框中,将名称列的start改为M_start,单击更改按钮,完成输入,选中常闭触点stop,单击鼠标右键,在弹出的菜单中选择重新连接变量,将地址列的I0.1改为I0.2,单击更改按钮,完成输入。
重命名变量
在程序段2中插入常开触点,输入操作数tag1,按回车键确认。单击鼠标右键,在弹出的菜单中选择定义变量,在部分列中选择Global Memory,在地址列中输入M0.0数据类型选择为布尔型,单击定义按钮,完成输入。单击编辑栏中的PLC变量,回到PLC变量表。可以看到在程序编辑器中,对PLC变量的定义和更改已自动添加到PLC变量表中。
定义变量
四、设置PLC变量的保持性。在PLC变量表中可以为M存储器指定保持性存储区的宽度,在工具栏中单击保持性按钮,打开保持性存储器对话框。 在文本栏中输入10,表示从MB0开始的十个字节为保持性存储区,单击确定按钮。编址在该存储区中的所有变量被标识为有保持性,在PLC变量表的保持性列表中设置的复选标记,可以识别变量的保持性设置,如tag1变量的保持性。
变量保持性设置
本篇我们介绍了西门子S7-1200 PLC变量表的使用,学习了变量的声明、选用、显示、定义、更改、保持性设置等,想要学习更多PLC知识,欢迎持续关注本号文章!如需视频教程或PDF文档等学习资料可在本文留言,我会免费赠送给你,我们共同学习提高!
相关问答
PLC的各种变量怎样使用?
1、变量分局部变量和全局变量2、局部变量只能在所在子程序中使用,全局变量可以在此工程任何程序中使用,且可以直接与上位机通讯。3、如果在局部变量和全局变...
1200plc变量表使用方法?
在弹出的PLC变量表窗口中,输入名称,选择数据类型,填入地址,并根据需要填入注释。在程序编辑器中选用和显示变量。进入OB1主程序...双击打开项目树中的变量表...
很难理解PLC的变量,和变量里的内容都是怎么进去的,还有传送指令所说的传送了数据?
在设备窗口里组态好设备,先是通用串口父设备,然后选择PLC,双击进去选择内部属性,选择好你要对应的PLC变量以及读写设置,确定后选择通道连接选项卡,在“对应...
PLC变量表怎么设置?
PLC变量表是指在PLC程序中用于存储数据的表格,设置变量表的方法是首先确定需要存储的变量类型、名称和数量,然后按照PLC软件中提供的变量表编辑工具进行设置。...
s71200plc如何定义变量?
变量表里只能定义符号名称,使用PLC内部定义好的存储区,如I/O输入输出区的I,Q,M这些,这些元件数据类型都是定义好的,不能改,所以你要想用到其他数据类型必须...
西门子PLC变量监视的操作?
1、运行STEP7打开PLC软件,将左侧的文件夹层层展开直到选中Blocks,如下图所示:2、打开VAT变量表在右侧找到VAT_??的块,双击打开。一般此块排列在所有块...1、...
两个plc怎么共用一个变量?
两个PLC共用一个变量,如果是外部输入变量,比如一个按钮,一个开关,则有如下三种方法:方法1:该外部变量接两路电线到两个PLC的输入模块,或者该外部变量一根...
如何通过PLC变量切换画面?
变量的数据类型为INT型,比如说建立的变量为VW0、在变量的属性里面的“事件”栏里面,选择“更改数值”,然后调用系统函数“Activa...第一、在触摸屏上建立好变...
plc变量名的命名规则一般如下?
PLC变量命名一般是根据外围信号然后用拼音首字母和数字来命名,最好是去向一个设备的用一个字母开头。PLC变量命名一般是根据外围信号然后用拼音首字母和数字...
西门子1200plc临时变量?
其实使用临时变量只要注意一点就可以了,即先赋值后使用,因为西门子在调用完FB,FC后并不回收临时变量资源,所以可能被其他FB,FC修改数值。其实使用临时变量只...