淮南S7-1200PLC西门子代理商原装现货 淮南西门子S7-1200PLC代理,淮南西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
西门子PLC在用户程序中使用的堆栈有哪几种
堆栈(见图4-4)是CPU中的一块特殊的存储区,它采用“先入后出”的规则存入和取出数据。堆栈*上面的存储单元称为栈顶,要保存的数据从栈顶“压入”堆栈时,堆栈中原有的数据依次向下移动一层,*下面的存储单元的数据丢失。在取出栈顶的数据后,堆栈中所有的数据依次向上移动一层。堆栈的这种“先人后出”的存取顺序,刚好满足块调用时(包括中断处理的块调用)存储和取出数据的要求,因此堆栈在计算机的程序设计中得到了广泛的应用。下面介绍STEP7中3种不同的堆栈。
1.局部数据堆栈(L堆栈)
各逻辑块都有它的局部变量(L)存储区,局部变量在逻辑块的变量声明表中生成,只在它被创建的块中有效。每个组织块用20B的临时局部数据来存储它的启动信息。局部数据可以按位、字节、字和双字来存取,例如L0.0、LB9、LW4和LD52。淮南S7-1200PLC西门子代理商原装现货 淮南西门子S7-1200PLC代理,淮南西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
CPU分配给当前正在处理的块的临时局部数据的存储器容量是有限的,这一存储区(即局部堆栈)的大小与CPU的型号有关。CPU给每一优先级分配了局部数据区,这样可以保证不同优先级的OB都有它们可以使用的局部数据空间。
通过在STEP7中设置参数,可以给S7-400CPU的每一优先级指定不同大小的局部数据区。S7-300 CPU每一优先级的局部数据区的大小是固定的。
2. 块堆栈(B 堆栈)
如果一个块的处理因为调用另外一个块,或者被更高优先级的OB块中止,CPU将在块堆栈中存储以下信息
1)被中断的块的类型(OB、FB、FC、SFB、SFC)、编号和返回地址。
2)从DB和DI寄存器中获得的块被中断时打开的共享数据块和背景数据块的编号。3)局部数据堆栈的指针。
利用这些数据,可以在中断它的任务处理完后恢复被中断的块的处理。在多重调用时,堆栈可以保存参与嵌套调用的几个块的信息。图4-5中的OB1调用功能FC2,FC2的执行被电源故障组织块OB81中断,图中给出了块堆栈中的数据动态变化的情况。
CPU处于STOP模式时,可以在CPU的模块信息对话框中,查看块堆栈保存的进入STOP模式时没有处理完的块,在块堆栈中,信息按照它们被处理的顺序存储(见图4-5)。
每个中断优先级对应的块堆栈可以储存的数据的字节数与CPU的型号有关。
3.中断堆栈(1堆栈)
如果程序的执行被优先级更高的OB中断,操作系统将保存下述寄存器的内容当前的累加器和地址寄存器的内容、数据块寄存器中DB和DI的内容、局部数据的指针、状态字、MCR(主控继电器)寄存器和块堆栈的指针。新的OB执行完后,操作系统读取中断堆栈中的信息,从被中断的块被中断的地方开始继续执行程序。
PLC的程序分为操作系统和用户程序,操作系统用来实现与特定的控制任务无关的功能,处理PLC的启动、刷新过程映像输入/输出表、调用用户程序、处理中断和错误、管理存储区和处理通信等。用户程序包含处理用户特定的自动化任务所需要的所有功能。
1. 用户程序的结构
淮南S7-1200PLC西门子代理商原装现货 淮南西门子S7-1200PLC代理,淮南西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
STEP7将用户编写的程序和程序所需的数据放置在块中,使单个的程序部件标准化。通过块与块之间类似于子程序的调用,使用户程序结构化,可以简化程序组织,使程序易于修改、查错和调试。块结构显著地增加了PLC程序的组织透明性、可理解性和易维护性。各种块的简要说明见表4-1,OB、FB、FC、SFB和SFC都包含程序,统称为逻辑块。程序运行时所需的大量数据和变量存储在数据块中。
可以将控制任务分层划分为工厂级、车间级、生产线、设备等多级任务,分别建立与各级任务对应的逻辑块。每一层的控制程序(逻辑块)作为上一级控制程序的子程序,前者又可以调用下一级的子程序。这种调用称为嵌套调用,即被调用的块又可以调用别的块。
可以多次重复调用同一个块,来处理同一类任务。FB和FC的内部应全部使用局部变量,不使用I、Q、M、T、C和共享数据块中的全局地址。这样的块具有很好的可移植性,不作任何修改,就可以用于其他项目。
FB和FC通过其输入、输出参数来实现与“外部”的数据交换,即与过程控制的传感器和执行器、用户程序中的其他块交换数据。在块调用中,调用者可以是各种逻辑块,被调用的块是OB之外的逻辑块。调用功能块和系统功能块时需要为它们指定一个背景数据块,后者随这些块的调用而打开,在调用结束时自动关闭。
在图4-1中,OB1调用FB1,FB1调用FC1,应按下面的顺序创建块FC1→FB1及其背景数据块→OB1,即编程时被调用的块应该是已经存在的。
如果出现中断事件,CPU将停止当前正在执行的程序,去执行中断事件对应的组织块OB(即中断程序)。中断程序执行完后,返回到程序中断处继续执行。
2.组织块(OB)
组织块是操作系统与用户程序的接口,由操作系统调用,用于控制扫描循环和中断程序的执行、PLC的启动和错误处理等,CPU的档次越高,能使用的同类型组织块越多。
(1) OB1
OB1是用户程序中的主程序,CPU的操作系统完成启动过程后,将循环执行OB1,可以在0B1中调用其他逻辑块。
(2)事件中断处理
如果出现中断事件,例如时间中断、硬件中断和错误处理中断等,当前正在执行的块在当前指令执行完后被停止执行(被中断),操作系统将会调用一个分配给该事件的组织块。该组织块执行完后,被中断的块将从断点处继续执行。
这意味着部分用户程序不必在每次循环中处理,而是在需要时才被及时地处理。处理中断事件的程序放在该事件驱动的 OB 中。
(3)中断的优先级
OB按触发事件分成几个级别,这些级别有不同的优先级,高优先级的OB可以中断低优先级的0B。
3.临时局部数据
生成功能和功能块时可以声明临时局部数据。这些数据是临时的,退出逻辑块时不保留临时局部数据。它们又是局部(Local)数据,只能在生成它们的逻辑块内使用。CPU按优先级划分局部数据区,同一优先级的块共用一片局部数据区。可以用STEP7改变S7-400 每个优先级的局部数据区的大小(见图2-35)。
除了临时局部数据外,所有的逻辑块都可以使用共享数据块中的共享数据。