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

S7-300/400PLC功能块的调用及内存分配

来源:艾特贸易2017-10-30

简介CPU 提供块堆栈( B 堆栈)来存储与处理被中断块的有关信息。当发生块调用或有来自更高优先级的中断时,就有相关的块信息存储在 B 堆栈里,并影响部分内存和寄存器。如图 4-5 所示


   CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息。当发生块调用或有来自更高优先级的中断时,就有相关的块信息存储在B堆栈里,并影响部分内存和寄存器。如图4-5所示为调用块时B堆栈与L堆栈的变化。如图4-6所示为STEP 7的块调用情况。

   (1)B堆栈与L堆栈

    B堆栈存储以下被中断块的数据。

    ①块号、块类型、优先级、被中断块的返回地址;

    ②块寄存器DBDI被中断前的内容;

临时变量的指针(被中断块的L堆栈地址)。

 图4-5 B堆栈与L堆栈

4-5 B堆栈与L堆栈

 图4-6调用指令对CPU内存的影响

4-6调用指令对CPU内存的影响

  L堆栈在块调用时被重新分配。L堆栈用来存储逻辑块中定义的临时变量,也分配给I临时本地数据使用。梯形图的方块指令与标准功能块也可能使用L堆栈存储运算的中间结果。

   (2)调用功能块FB

    当调用功能块(FB)时,会有以下事件发生。

    ①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;

    ②数据块(DB)寄存器内容与DI寄存器内容交换;

    ③新的数据块地址装入DI寄存器;

    ④被调用块的实参装入DBL堆栈上部;

    ⑤当功能块(FB)结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈;

   ⑥DBDI寄存器内容交换。

   (3)调用功能(FC)

    当调用功能(FC)时会有以下事件发生。

   ①(FC)实参的指针存到调用块的L堆栈;

调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈;

    ③功能块存储临时变量的L堆栈区被推入L堆栈上部;

    ④当被调用(FC)结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。

    因为(FC)不用背景数据块,不能分配初始数值给(FC)的局部数据,所以必须给(FC)提供实参。