西门子S7-300/400系列CPU数据块寄存器使用错误

描述

西门子 S7-300/400 系列 CPU 拥有两个数据块寄存器,它们保存着当前打开的数据块编号: DB 寄存器保存着打开的共享数据块编号 DI 寄存器保存着打开的背景数据块编号特别提示:DI 寄存器主要用于 FB 引用背景数据块,但也常用于程序中同时打开两个数据块的操作。如下图的程序即完成了将 DB1.DBW0(16#2222)传送到 DB4.DBW0 中的工作。用户请注意程序中的格式(如 T DIW0),详细信息请参考 STEP7 编程手册中的寻址方式部分。

寄存器

寄存器

那么上述两者有何区别呢?从两图中的对比可以看出:

 

L DBW0 //不改变 DB  寄存器的内容
T DIW0 //不改变 DI 寄存器的内容
L DB1.DBW0 //改变DB 寄存器的内容
T DB4.DBW0 //改变DB 寄存器的内容,相当于增加了 OPN DB4 的指令。

 

也就是说,对于数据块中地址的完整引用,将影响到DB 寄存器的内容。那么对于下面的程序,我们将很容易发现其中的错误。

程序原目的:

将 3333 传送至 DB1.DBW0

将 4444 传送至 DB1.DBW2

寄存器

故障分析:

由于程序的 Network5 中使用了对于 DB4.DBW0 的比较指令,此指令改变了 DB 寄存器的内容,因而我们将得到如下的错误结果,DB1.DBW2 并没有得到正确数值,正确数值 4444 被错误地送到了DB4.DBW2中:

寄存器

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分