您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400系列PLC的用户程序使用的堆栈

来源:艾特贸易2018-03-26

简介如图 4-2 所示,堆栈是 CPU 中一块特殊的存储区,它采用“先入后出”的规则存入和取出数据。堆栈这种“先入后出”的存取规则刚好满足块调用(包括中断处理时的调用)的要求,因此


  如图4-2所示,堆栈是CPU中一块特殊的存储区,它采用“先入后出”的规则存入和取出数据。堆栈这种“先入后出”的存取规则刚好满足块调用(包括中断处理时的调用)的要求,因此堆栈在计算机程序设计中得到了广泛的应用。下面介绍STEP 73种不同的堆栈。

    1.局域数据堆栈(L堆栈)

    局域数据堆栈用来存储块中局域数据的临时变量、组织块的启动信息、块传递函数的信息和梯形图程序的中间结果。局域数据可以按位、字节、字和双字来存取,例如L 0.0LB9LW4LD52

    各逻辑块均有自己的局域变量表,局域变量仅在它被创建的逻辑块中有效。对组织块编程时,可以声明临时变量( TEMP)。临时变量仅在块被执行的时候使用,组织块块执行完后将被别的数据覆盖。

    2.块堆栈(B堆栈)

    如果一个块在处理过程中因为调用另外一个块,或者被更高优先级的块终止,或者被对错误的服务中止,CPU将在块堆栈中存储以下信息。

    ①被中断块的类型(OBFBFCSFBSFC)、编号和返回地址。

②从DBDI寄存器中获得块被中断时打开共享数据块和背景数据块的编号。

    ③局域数据堆栈的指针。

CPU处于STOP模式时,可以在STEP 7中显示B堆栈保存的在进入STOP模式时没有处理完的所有块,在B堆栈中,块按照它们被处理的顺序排列,如图4-3所示。

 

4-2堆栈操作

 

4-3  块堆栈与局域数据堆栈

    每个中断优先级对应的块堆栈中可以储存数据的字节数与CPU的型号有关。

    3.中断堆栈(I堆栈)

    如果程序被优先级更高的OB中断,操作系统将保存下述寄存器内容:当前累加器和地址寄存器的内容、数据块寄存器DBDI的内容、局域数据的指针、状态字、MCR(主控继电器)寄存器和B堆栈的指针。

OB执行完后,操作系统从中断堆栈中读取信息,从程序被中断的地方开始继续执行。中断堆栈的过程示意图如图4-4所示。

 

4-4中断堆栈过程示意图

CPUSTOP模式时,可以在STEP 7中显示I堆栈中保存的数据,用户可以由此找出使CPU进入STOP模式的原因。

 

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务