您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400系列PLC的用户程序使用的堆栈
来源:艾特贸易2018-03-26
简介如图 4-2 所示,堆栈是 CPU 中一块特殊的存储区,它采用“先入后出”的规则存入和取出数据。堆栈这种“先入后出”的存取规则刚好满足块调用(包括中断处理时的调用)的要求,因此
如图4-2所示,堆栈是CPU中一块特殊的存储区,它采用“先入后出”的规则存入和取出数据。堆栈这种“先入后出”的存取规则刚好满足块调用(包括中断处理时的调用)的要求,因此堆栈在计算机程序设计中得到了广泛的应用。下面介绍STEP 7中3种不同的堆栈。
1.局域数据堆栈(L堆栈)
局域数据堆栈用来存储块中局域数据的临时变量、组织块的启动信息、块传递函数的信息和梯形图程序的中间结果。局域数据可以按位、字节、字和双字来存取,例如L 0.0、LB9、LW4和LD52。
各逻辑块均有自己的局域变量表,局域变量仅在它被创建的逻辑块中有效。对组织块编程时,可以声明临时变量( TEMP)。临时变量仅在块被执行的时候使用,组织块块执行完后将被别的数据覆盖。
2.块堆栈(B堆栈)
如果一个块在处理过程中因为调用另外一个块,或者被更高优先级的块终止,或者被对错误的服务中止,CPU将在块堆栈中存储以下信息。
①被中断块的类型(OB、FB、FC、SFB、SFC)、编号和返回地址。
②从DB和DI寄存器中获得块被中断时打开共享数据块和背景数据块的编号。
③局域数据堆栈的指针。
CPU处于STOP模式时,可以在STEP 7中显示B堆栈保存的在进入STOP模式时没有处理完的所有块,在B堆栈中,块按照它们被处理的顺序排列,如图4-3所示。
图4-2堆栈操作
图4-3 块堆栈与局域数据堆栈
每个中断优先级对应的块堆栈中可以储存数据的字节数与CPU的型号有关。
3.中断堆栈(I堆栈)
如果程序被优先级更高的OB中断,操作系统将保存下述寄存器内容:当前累加器和地址寄存器的内容、数据块寄存器DB和DI的内容、局域数据的指针、状态字、MCR(主控继电器)寄存器和B堆栈的指针。
新OB执行完后,操作系统从中断堆栈中读取信息,从程序被中断的地方开始继续执行。中断堆栈的过程示意图如图4-4所示。
图4-4中断堆栈过程示意图
CPU在STOP模式时,可以在STEP 7中显示I堆栈中保存的数据,用户可以由此找出使CPU进入STOP模式的原因。
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)