直播课堂
HOME
直播课堂
正文内容
plc编程嵌套程序 PLC中的堆栈与嵌套是什么?有什么作用?
发布时间 : 2025-04-20
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC中的堆栈与嵌套是什么?有什么作用?

堆栈和嵌套是在PLC应用程序设计中经常碰到的两个术语。

1、堆栈

堆栈就是货仓,这是数字电子技术中借用的一个名词。具体到PLC来说,堆栈就是在PLC中的一个特定存储区,用来存储某些中间运算结果和存放程序断点及数据。堆栈操作的特点是:先进后出,后进先出。

如图为一具有11个存储单元的堆栈,最下面为栈底,最上面为栈顶。把一个数据

或运算结果送入堆栈,叫进栈或压栈;把运算结果取出叫出栈。进栈时,后来的永远在栈顶,原先栈中的数则依序向下移动一个单元。出栈时,栈顶的数从栈中弹出(不在栈中了)而下面的数则依序向上移动一个单元。这就和家中的米箱类似,先进米箱的米最后吃,最后倒进去的米先吃。进栈和出栈是对堆栈的两种操作,还有一种操作叫读栈。读栈只是读出栈顶的数据,而不会把数据从栈弹出。

上面介绍的是三菱FX2N的有关堆栈知识,在计算机中,堆栈是一个非常重要的概念,他可以帮助我们正确理解许多程序运行的过程

2、嵌套

嵌套就是套中套。例如,在一个大循环中,进入循环后发现其中还有一个小循环要先做,而且每一次大循环都要先做这个小循环,直到大循环做完,这就叫做循环嵌套。再如调用子程序,子程序是一段公共程序,可以在主程序的任何地方进行调用,调用完后又回到主程序继续往下运行。如果一个程序在调用子程序时,子程序在运行中,又去调用另一个子程序,这就叫子程序嵌套。从上面二个例子可以说明,在PLC中,所谓嵌套是指在执行某种功能操作的过程中,再次执行这种类型的功能操作,(当然操作内容已经不同)就叫做这种操作的嵌套。PLC对各种内容的嵌套的层数都有一定的规定。三菱FX2N对主控指令的嵌套应用最多8层,而对子程序调用嵌套最多5层等等。(技成培训原创,未经授权不得转载,违者必究!)

往期优秀文章回顾:

PLC顺序控制,行业大牛的图文案例讲述

释疑贴:西门子S7系列PLC的程序运行及其嵌套、调用机理

我是小庄,初入工控行业,目前正努力钻研、提高。即日起,借“塞北名驼”这个平台,不定期更新一些学习心得,借以鞭策自己。

一、S7-300/400 CPU中的程序

CPU原则上运行两个不同的程序:

1、操作系统 。操作系统集成在CPU中,用于组织"与特定控制任务"无关的所有CPU功能和顺序。操作系统的任务具体包括下列各项:

处理重启(热启动)和热重启 更新输入过程映像区,并写输出过程映像区 调用用户程序 采集中断信息,调用中断OB 识别错误并进行错误处理 管理内存区域 与编程设备及其他通讯伙伴进行通讯 通过修改操作系统参数,可以在某些区域影响CPU响应。

2、用户程序。 顾名思义,其为用户创建、编写并下装到CPU中的程序,用户用它来实现特定的控制任务。用户程序的任务包括:

· 确定CPU的重启(热启动)和热重启条件(例如,用特定值初始化信号) · 处理过程数据,包括数字量和模拟量数据 · 响应中断 · 处理正常程序周期中的干扰

在STEP7中,用户程序是由一个个的"块"构成的,在之前的文章中,断断续续的做了一些介绍,根据类型汇总如下:

图1 “块”的种类汇总

二、用户程序的调用体系

STEP7的用户程序由一个个的"块"构成,各个"块"要正确、有机的结合在一起,才能实现特定的功能。这就涉及到了"块"的调用和嵌套了。

1、块的创建次序与嵌套

图2阐述了一个扫描周期内块调用的次序。在编写程序时,创建块时一般遵循以下步骤:

a) 从上到下依次创建块 b) 调用的每个块必须已经存在 c) 最后在OB1中定义调用次序

图2 “块”的调用次序与嵌套

遵循上述规则,图2中创建块的顺序为:

FC1>FB1+背景数据块DB1>DB10>SFC1>背景数据块DB3>FB2+背景数据块DB2>OB2

图2还展示了块的嵌套深度。嵌套深度取决于特定的CPU。如果内嵌太深,有可能导致本地数据堆栈溢出。

2、块调用的基本原理

图3给出了用户程序中"块"调用的过程。

图3 “块”的调用原理

块的调用与被调用,原理上比较简单,注意到以下几个方面即可:

a) 组织块OB可以调用其他逻辑块,但不能被其他块调用; b) SFB、SFC是集成在CPU中的一些特定功能/功能块,它们的程序逻辑是固定的,用户不能自定义,因此,它们只能被其他逻辑块调用,而不能调用其他逻辑块 c) 用户自定义的FB、FC既可以调用其他FB、FC、SFB、SFC,也可以被其他逻辑块调用。

相关问答

对于西门子PLC中嵌套指令的说明-盖德问答-化工人互助问答社区

jin-s-这个好理解,就像我们数学里的四则运算中的括号一样,先算括号里面的,再算外面的我就是不明白,什么时候用a(什么时候用o(开头这个好理解,就...

三菱PLC主控嵌套,在竖线上的那个开点,怎么敲上去?

用不着输入,将软件选为“读出模式”就会自动显示。读出模式用不着输入,将软件选为“读出模式”就会自动显示。读出模式

plc怎样添加子程序?

子程序调用指令CALL的编号为FNC01。操作数为P0~P127,此指令占用3个程序步。子程序返回指令SRET的编号为FNC02。无操作数,占用1个程序步。如果X0接通,则转到...

plc例子程序与函数有什么区别?

区别1.PLC例子程序和函数在使用方式和作用上有着不同。2.-PLC例子程序是一种宏观的、完整的解决方案,包含了多个指令的组合,用于实现特定的功能。它可以...

plc今后会被单片机代替吗?梯形图变成高级语言?

这是一个很有意思的话题,我就个人经历谈谈我对两者的看法吧,仅供参考。07研究生期间,我当时研究方向是嵌入式,但因为老板的军工项目接触了PLC。项目是在国家...

plc是实时系统吗?

是。所有的PLC都应该是实时操作系统,大部分的嵌入系统也应该是实时操作系统。特点就是响应的最大时间不会超过允许值(对于PLC来说就是最长扫描周期)、可靠性...

西门子struct用法?

在西门子的PLC编程中,结构体(struct)可以用来定义一组相关的变量,方便程序员进行统一管理和调用。以下是一些西门子struct的使用方法:1.定义结构体:使用...

单片机与PLC的区别?

一、区别:1、PLC是建立在单片机之上的产品,单片机是一种可编程的集成芯片。2、plc就是由单片机加上外围电路做成的,单片机开发式底层开发,程序编写用汇编...

s7-200cpu所支持的组织块类型包括循环组织块?

(01)自由循环组织块OB1S7CPU启动完成后,操作系统循环执行OB1,OB1执行完成后,操作系统再次启动OB1。在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执...

如何在MCGS中做出一个按钮?

在触摸屏中可以用SLEEP和WAITFOR函数,不过这两个函数在嵌入版软件中不能用(无效)。用PLC做就简单了,画面中的按钮对应PLC里面的一个辅助触点,PLC辅助触点的...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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