您现在的位置是:首页 > 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堆栈存储以下被中断块的数据。
①块号、块类型、优先级、被中断块的返回地址;
②块寄存器DB、DI被中断前的内容;
③临时变量的指针(被中断块的L堆栈地址)。
图4-5 B堆栈与L堆栈
图4-6调用指令对CPU内存的影响
L堆栈在块调用时被重新分配。L堆栈用来存储逻辑块中定义的临时变量,也分配给I临时本地数据使用。梯形图的方块指令与标准功能块也可能使用L堆栈存储运算的中间结果。
(2)调用功能块FB
当调用功能块(FB)时,会有以下事件发生。
①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;
②数据块(DB)寄存器内容与DI寄存器内容交换;
③新的数据块地址装入DI寄存器;
④被调用块的实参装入DB和L堆栈上部;
⑤当功能块(FB)结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈;
⑥DB和DI寄存器内容交换。
(3)调用功能(FC)
当调用功能(FC)时会有以下事件发生。
①(FC)实参的指针存到调用块的L堆栈;
②调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈;
③功能块存储临时变量的L堆栈区被推入L堆栈上部;
④当被调用(FC)结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。
因为(FC)不用背景数据块,不能分配初始数值给(FC)的局部数据,所以必须给(FC)提供实参。
点击排行
