线下实训
HOME
线下实训
正文内容
plc编程字大小 PLC的各种变量怎样使用?
发布时间 : 2025-02-25
作者 : 小编
访问数量 : 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双字、字、字节和位的关系总结

最近做项目,用到了IO-Link设备,在读取从站数据时候,用到从双字中提取字、字节和位的知识,作为一个菜鸟,由于以前也没有仔细关注过这个细节,所以又查了下资料,并做了程序进行测试,现记录一下,以备自己将来使用,也方便有类似问题的人使用;

下面主要从资料查询、准备程序、程序验证进行记录:

一、资料查询:

相信从网上搜一下西门子数据类型方面的资料,会有一大堆,最常见的就是解释双字和字节之间的组成关系,如下图:

就以这个资料为基础,进行试验验证;

二、 程序准备

由于资料上大部分都是以M区介绍双字和字节等关系,但是实际情况是DB块中的数据居多,故在此实验中,将M区和DB区的内容进行对比,以方便观察,进行如下准备:

1、 新建DB块,里面创建需要的变量:

2、 创建M区变量,以方便做比较,这里取MD24,然后将其拆成字、字节、位,以方便观察:

3、 创建FC程序:主要是将双字拆成字、双字,并将双字传送给单字、单字传送给双字,为了方便置位双字中的位,特意用数组逐位传送给双字中的位:

三、程序验证:

省略掉程序的下载啊、仿真啊的操作步骤,因为那个不是重点,直接展示测试结果:从数组中,分别置位不同的位,则相当于分别对双字中的位进行置位,可以分别观察结果,现在取比较有代表性的两个位,即将第0位和第16位置1,结果如下两图所示:

通过测试可以发现如下规律:

1、西门子双字中位的排列,是从右向左排的,这点和平时写字顺序正好相反,但是我觉得可以从进制的位数去记忆一下,比如我们十进制,从右往左分别是个、十、百、千、万等位,这个正好类似于那个;

2、 可以看下双字传给单字的情况,对于截取数据时候比较有帮助,具体不总结,可以体会一下;

3、第三条也是我一开始比较迷糊的地方,观察双字的四个字节,和位的排序是一样的,即0位在右,依次往左增大,但是M区其实按照这个方向排列,但是让人很迷糊,上图为例,我们置位0位的时候,在DB中是第0个字节有变化,但是在M区中对应的是MB27变化,虽然按照一开始资料所示,MB27是在最右边,但是MB27是第0字节,MB26是第1字节,依次类推,大小和字节顺序又反了一次,虽然仔细想一下就明白怎么回事,但是依然有点小别扭;

遇到类似情况的,应该不止我一个,分享一下,希望能帮到需要的人,第一次发分享贴,文笔有点差劲,大家见谅,有不足和错误的地方,欢迎斧正;

相关问答

三菱plc注释字体大小设置?

你好,在三菱PLC编程软件中,可以通过以下步骤设置注释字体大小:1.在编程软件中打开程序文件,点击菜单栏中的“选项”按钮。2.在弹出的“选项”对话框中,...

PLC编程中的进制数该如何表示?相互之间又是如何转换的?

PLC也是一台微电脑,许多功能指令离不开进制转换,同时也是为了增加程序的可读性,想要对PLC进行编程,那么必须得清楚数制的设置以及转化和对应的符号。当然,...PL...

plc大小怎么判断?

1、小型PLC输入、输出点数在128点以下,用户存储器容量在2KB以下。小型PLC适用于开关量控制场合,具有逻辑运算、计算、计时等功能,可以实现条件控制、定时、计...

plc规格要求?

PLC(可编程逻辑控制器)规格要求通常包括以下几个方面:1.输入/输出数量:规定了PLC可以控制的最大输入和输出设备数量。这包括数字输入和输出、模拟输入和输出...

PLC的规模大小怎么划分?

PLC的规模大小主要根据其I/O点数和内存容量来划分。一般来说,根据I/O点数的多少,可以将PLC分为小型、中型和大型三种规模。小型PLC:具有少量I/O点数(一般不超...

一个plc可以写进几个程序?

一个PLC编程时,主程序只能有一个,但子程序的多少仅仅受内存大小限制,数量上是不受限制的,所以在内存足够的情况下,可以说有无限个。不过,子程序编程时,参...

大型plc编程电脑配置要求-ZOL问答

当涉及到大型PLC编程时,为了确保程序的高效运行和稳定性,电脑配置要求就需要一定的考虑。以下是一些重要的因素:1.处理器:处理器是PLC的核心组件之一,它负责...

三菱plc注释以后怎么调注释的大小?

不能控制梯形图的大小,只能改变注释的大小和每一行显示触点的个数;触点的个数在菜单栏-》工具-》选项,弹出对话框里点程序编辑器-》梯形图-》梯形图,在显示格...

触摸屏控制PLC地址怎么填写?

双击你的元件,或是按钮,此时,会打开他的属性,你会看到有个PLC名称,跟地址,这个地方,选择你对应PLC的地址,就可以了标注:在属性选项中,有个:字体,你...双击你...

plc的规模大小取决于?

PLC(ProgrammableLogicController,可编程逻辑控制器)的规模大小取决于以下几个因素:1.应用需求:PLC的规模通常与应用的复杂程度和需要控制的设备数量有...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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