技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 这个DB DI寄存器在功能与功能块调用时会互换是什么原理?

这个DB DI寄存器在功能与功能块调用时会互换是什么原理?

刘玉蓉 发布于2014-11-05 17:34 407 0 标签:

调用FB时为什么数据块DB寄存器内容与DI寄存器内容要进行交换?
原文是这样的:帮我注意②和⑥:

 当调用功能块(FB)时,会有以下事件发生:
①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;

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

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

④被调用块的实参装入DB和L堆栈上部;

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

⑥DB和DI寄存器内容交换。

其中②和⑥我看不太明白,为什么在调用时进行寄存器的交换,此时正发生什么情况?

佳答案

这涉及到功能块调用时的堆栈操作。我们必须明白每个功能块FB都有其自己私有的背景数据块,数据块地址寄存器用于存放所有数据块的数据,而且多可以同时打开一个共享数据块和一个背景数据块,而执行FB时打开背景数据块时,必须执行指令OPEN DI,而不能执行OPEN DB,这就是为什么在执行当前FB块时,发生新的FB块调用时必须互换DI寄存器和DB寄存器的内容。而DI寄存器保存背景数据块的内容,而DB寄存器保存共享数据块的内容
当发生块的调用或有来自更优先级的中断时,就将有关的块的信息存储在块(B)堆栈。在逻辑快调用其它块时,这就有一个问题,而且每个FB有其自己的背景数据块(DI),你在执行先前块时已经执行OPEN DIX打开一个背景数据块(数据块存储在DI寄存器中),现在要调用其它FB块,必须又要打开新的背景数据块,而背景数据块只能用指令OPEN DI,所以必须执行数据块寄存器的互换,即把先前的背景数据块暂时存储在DB寄存器中,而新的背景数据块存储在DI寄存器中,然后执行OPEN DIX指令打开被调用块的背景数据块;
如果你明白以上的解释,那么就很容易理解⑥DB和DI寄存器内容交换,你在执行完被调用块的操作后,必须把数据寄存器的内容换回,就把刚执行的被调用块的背景数据块保存到DB数据块寄存器,而把前边调用块的背景数据块保存到DI数据寄存器中,以便继续执行先期FB的程序执行,而FB块的执行,必须使用OPEN DI打开其背景数据块,所以必须进行互换的原因。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签