课程中心
HOME
课程中心
正文内容
PLC编程常用的变量 PLC的各种变量怎样使用?
发布时间 : 2025-04-04
作者 : 小编
访问数量 : 23
扫码分享至微信

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就必须要先了解数据类型。数据类型是所有自动化软件的编程基础,只有熟练掌握,才能随心所欲的驾驭。下面我们就以西门子S7-200为例,详细讲述这些常用的数据类型。

siemens PLC

1、基本数据类型

基本数据类型由以下几种:

1.1、位(bit) 

定义为BOOL(布尔型),只有两个值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。

1.2、字节(Byte)

定义一个字节(Byte)等于8 位(Bit),其中0位为最低位,7 位为最高位。

如:IB0(包括 I0.0~I0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。

用十六进制表示的范围为:00~FF,用十进制表示的范围为 0~255。

字节

1.3、字(Word) 

定义相邻的两字节(Byte)组成一个字(Word),表示一个无符号整数,所以一个字为16位。

如:IW0 由 IB0 和 IB1 组成的,其中I是输入映象寄存器,W表示字,0是字的起始字节。特别注意的是:起始字节必须是偶数。

字的范围为十六进制的 0000~FFFF,十进制的 0~65536。

在编程时,如果已经使用 IW0,如果想再用 IB0或 IB1,就要特别慎重,避免重复定义。

1.4、双字(Double Word)

相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为 32 位。

如:MD100 是由 MW100 和 MW102 组成的,其中M是位存储区,D表示双字,100是双字的起始字节。特别注意的是:双字的起始字节也必须是偶数。

双字的范围为十六进制的 0000~FFFFFFFF(即十进制的 0~4294967295)。

在编程时如果已经使用了MD100,如果再用 MW100或MW102,就要特别慎重,避免重复定义。

双字

特别注意:以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。

1.5、16位整数(INT,Integer)

整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。

正整数

1.6、32 位整数(DINT,Double Integer)

32 位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。

负整数

1.7、浮点数(R,Real)

浮点数为 32 位,可以用来表示小数。浮点数可以为:1.m×2e。

单精度浮点数

2、复合数据类型

用户通过复合基本数据类型而生成就是复合数据类型。

复合数据类型包括以下几种:

2.1、数组(ARRAY)

将一组同一类型的数据组合在一起组成一个单位就是数组。

2.2、结构(STRUCT)

将一组同不同类型的数据组合在一起组成一个单位就是结构。

2.3、字符串(STRING)

字符串是由最多 254 个字符组成的一维数组。

2.4、日期和时间(DATE-AND-TIME)

用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用 8 个字节,BCD 编码。

星期天代码为1,星期一~星期六代码分别是 2~7。

如:DT#2004_07_15_12:30:15.200 为 2004 年 7 月 15 日 12 时 30 分 15.2 秒。

2.5、用户定义的数据类型(UDT,User-Defined Data Type)

由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。

可以在数据块DB和变量声明表中定义复合数据类型。

3、数据类型汇总表格

4、举例说明

对于有符号的整数来说,最高位用作符号位,余下的位才是数值部分。

下面以有符号整数INT来举例说明其数值范围为什么是-32768-32767?

最高位是符号位,0为"+"、1为"- ,去掉一个符号位后,余下的数据只有15位。

15位二进制1对应的整数最大正整数为2^15-1=32767,最大值为+32767,对应二进制:0111 1111 1111 1111。即十进制范围:0~32767;

15位二进制1对应的整数最大负整数为-2^15=-32768,最大值为-32768,对应二进制:1111 1111 1111 1111。即十进制范围:-32768~-1;

西门子PLC

其实,数据类型简单也复杂,尤其是自定义数据类型。看得懂,并不代表你能在编程过程中能正确使用。只有自己动手编程,对不同的数据类型进行定义和使用,才能有深入地理解和掌握。当你对数据类型充分理解后,就可以学习数据的寻址。坚持不懈的学习和实际编程,才会有可能成为变成专家。

相关问答

请问300PLC里,什么是变量,还有什么是局部变量?

在回答你的问题之前,有必要对变量声明表有一个基本了解。在STEP7中有两种用来定义符号地址的表格形式:符号表(共享符号)和变量声明表(局域符号),其本质都...

plc变量什么意思?

首先PLC中的变量指的是内置的输入输出继电器、辅助继电器、状态、计数器、数据寄存器等各种软元件。相比于变量,我们首先说下常量,常量指的是固定的数值,在PLC...

PLC的各种变量怎样使用?

1、变量分局部变量和全局变量2、局部变量只能在所在子程序中使用,全局变量可以在此工程任何程序中使用,且可以直接与上位机通讯。3、如果在局部变量和全局变...

plc定时器的两个变量是什么?

一般PLC的定时器都是有规定的,都是有定时单位的,1MS,10MS,100MS,定时器存储区:TS7--200CPU中,定时器可用于时间累计,其分辨率(时基增量)分为1ms、10ms...一般...

西门子PLC变量是什么意思,能不能用通俗的语言解释什么是变量,它有什么作用,设置后在PLC有什么动作?

建议你去看一下这个问题的问答《如何理解PLC编程中变量的概念,变量的由来和意义,以及如何使用?》--这个问题和你的问题差不多,应该对你有帮助!建议你去看一下...

plc变量的数据类型讲解?

1.位(bit):最小的数据单位,在编程时通常用于表示开关状态或二进制数值。位变量只有两种取值,即0和1。2.字节(byte):8个二进制位组成的数据单元,可以...1...

PLC中与定时器相关的变量有哪些?

举西门子为例,定时器分保持与不保持,保持和不保持里又分断电延时和通电延时,再往下就是定时单位,通常有100ms,10ms,1ms三种,剩下就是延时时间,可以直接输入...

PLC中什么是中间变量?

在PLC(可编程逻辑控制器)中,中间变量是指在程序执行过程中用于存储和传递数据的临时变量。它们通常用于在不同的程序块之间传递数据,或者在程序执行过程中进...

s71200plc如何定义变量?

变量表里只能定义符号名称,使用PLC内部定义好的存储区,如I/O输入输出区的I,Q,M这些,这些元件数据类型都是定义好的,不能改,所以你要想用到其他数据类型必须...

plc如何生成一个变量?

PLC通过声明变量的数据类型,并分配一个内存地址来生成一个变量。1.首先,PLC需要知道变量所使用的数据类型,例如:整数,浮点数,布尔值等。同时,PLC中支持多...

 法网柔情剧情  移民到希腊 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部