施耐德PLC应用,在程序中定义变量和数据!
施耐德PLC中编辑变量和数据:(一)基本知识
1、变量分类
变量是在程序执行时可以修改的内存区域。Unity Pro 软件编程可以使用两种类型的变量:
1) 定位变量:是与 I/O 硬件模块输入输出通道相关联的,或者与内存引用相关联的变量。例如:“启动电机”与输入模板通道 %I 0.5.0 相关联,“启动电机”就是定位变量。
2) 非定位变量:是既不与I/O 硬件模块输入输出通道相关联,也不与内存引用地址相关联的变量,即没有地址关联的变量成为非定位变量。非定位变量在内存中的位置不可知。这种变量定义类型可以使您在编写程序时抛开地址的束缚,完全专注于您的应用。
2、通用数据类型和范围
BOOL/EBOOL : 布尔变量必须为 FALSE (0) 或 TRUE (1). EBOOL处理强制和边沿检测
WORD : 代表 “位串16”, 意味着数据长度为 16 位
INT : 代表整型数. 数值范围从 -32768 至 +32767
UINT : 代表无符号整型数. 数值范围从 0 至 65535
REAL : 代表浮点值. 数值范围从 -3.40e+38 至 3.40e+38
3、 通用数据类型的立即值语法
通常基本数据类型(EDT)的实例采用变量名或拓扑地址的方式引用,而在数据编辑器或程序段中也可以通过立即值的方式赋值和引用。如下图所示。
4、定义变量的三种方式
方式一,在项目浏览器中鼠标双击“变量和FB实例”,在弹出的‘数据编辑器窗口’定义,编辑、修改变量,如下图。
方式二,在项目浏览器中双击CPU或I/O模块,如下图查看相应模块的地址,在模块的I/O对象表格里定义,这种方式只能生成,不支持修改和删除。
方式三,在”程序编辑窗口”中定义,这种方式只能生成,不支持修改和删除。
(二)实际操作
1、在项目浏览器中点击“变量和FB实例”,在右侧“名称”下输入start,类型选 EBOOL,在下一行输入 stop,类型选 EBOOL,然后关闭窗口。如下图:
2、从硬件属性中书写:在项目浏览器中双击DDO3202k;左键点右侧“BMX DDO3202k”,选择I/O对象,再选择%Q,然后点击“更新网络”。在该界面右侧%Q0.2.0名称下,改写为cmd_motor,再用鼠标左键选中第2行,按着鼠标左键下拉,选择右侧Q0.2.1、Q0.2.2、Q0.2.3;然后在左侧“名称前缀”框中输入cmd_,点击“创建”。即可形成cmd_0、cmd_1、cmd_2;如下图:
3、关闭所有窗口,点击“变量和FB实例”,会显示刚才所有的定义变量名。
4、按保存按钮,保存项目。
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编程中变量的概念,变量的由来和意义,以及如何使用?
如何理解PLC编程中变量的概念,变量的由来和意义,以及如何使用。首先PLC中的变量指的是内置的输入输出继电器、辅助继电器、状态、计数器、数据寄存器等各种软...
plc变量怎么理解?
PLC(可编程逻辑控制器)变量是指在PLC编程中用于存储和处理数据的符号。它们类似于其他编程语言中的变量,可以存储不同类型的数据,例如数字、布尔值、字符串等...
plc接口变量什么意思?
PLC中的变量指的是内置的输入输出继电器、辅助继电器、状态、计数器、数据寄存器等各种软元件。PLC变量适用于整个PLC。PLC程序中多数指令都通过变量来操作...
omronnjplc怎么定义变量?
在OmronNJPLC中,可以通过以下步骤来定义变量。首先,在程序编辑器中选择要定义变量的程序块。然后,使用VAR或VAR_GLOBAL指令来定义变量。在变量定义指令中...
PLC中什么是中间变量?
在PLC(可编程逻辑控制器)中,中间变量是指在程序执行过程中用于存储和传递数据的临时变量。它们通常用于在不同的程序块之间传递数据,或者在程序执行过程中进...
三菱plc结构体变量是什么意思?
首先PLC中的变量指的是内置的输入输出继电器、辅助继电器、状态、计数器、数据寄存器等各种软元件。相比于变量,我们首先说下常量,常量指的是固定的数值,在PLC...
高端推荐帖:回复:PLC心跳是什么变量?
PLC心跳一般是编程者编制的一个脉冲位,每间隔一段时间发一个脉冲。一般周期为1秒或者0.5秒。代表PLC正在运行。这个心跳通常是用在两个PLC系统通讯时其中一...
plc如何生成一个变量?
PLC通过声明变量的数据类型,并分配一个内存地址来生成一个变量。1.首先,PLC需要知道变量所使用的数据类型,例如:整数,浮点数,布尔值等。同时,PLC中支持多...
plc变量如何分配?
在PLC(可编程逻辑控制器)编程中,变量分配通常涉及将物理输入/输出信号映射到PLC内存中的变量。以下是变量分配的基本步骤:确定输入和输出信号:首先,需要识...
西门子plc局部变量是用来做什么?
全局变量在每个程序都可以用(主程序和子程序),局部变量只是在所建立变量的程序中用,其它程序中不行,大概就是这样个意思。全局变量在每个程序都可以用(主程序...