当前位置:首页 > 机械智慧 > 正文

三菱和西门子对比一下16位和32位数据的存储关系

前几天(2月8号)我写的文章《从西门子200的PLC程序来看三菱FX5U的PLC程序》中,把西门子200和三菱FX5UPLC的程序做了个对比,说三菱PLC中数据的编排方法和西门子的不一样,但是没有深入展开来讲,因此这篇文章,就来再细致的说一下!西门子200和300PLC中的数据组合构成是一样的,因此...

前几天(2月8号)我写的文章《从西门子200的PLC程序来看三菱FX5U的PLC程序》中,把西门子200和三菱FX5UPLC的程序做了个对比,说三菱PLC中数据的编排方法和西门子的不一样,但是没有深入......

前几天(2月8号)我写的文章《从西门子200的PLC程序来看三菱FX5U的PLC程序》中,把西门子200和三菱FX5UPLC的程序做了个对比,说三菱PLC中数据的编排方法和西门子的不一样,但是没有深入展开来讲,因此这篇文章,就来再细致的说一下!

西门子200和300PLC中的数据组合构成是一样的,因此今天就上一个西门子300PLC程序的截图来说明问题:


西门子STEP7软件中的一段程序截图

这段程序很简单,全部是MOVE指令,将16进制的1,3,5,7分别传送到MB0,MB1,MB2,MB3中;将MW0,MW2,MD0传送到几个临时变量中,这里的临时变量不重要,主要是让大家看到他们中的值是多少!

16进制的对应关系不是那么直观,因此还是在变量表中看一下二进制数据:


STEP7变量表截图和西门子数据结构的关系图

从我做的这个图片上可以看到:

MB0=20011,

MB2=20111,

图片上我用了不同的颜色来区分,因此就能很明确的看出来MW0就是MB0和MB1的组合,MW2就是MB2和MB3的组合;16位的MW0和16位的MW2又组合在一起组合成一个32位的双字MD0。

---图片中的对应关系就是西门子PLC中的数据对应关系,这个编排关系可以说是和三菱中的字双字的编排关系相反的!

为了更好的对比,还是上一个三菱FX5U的程序:


GXWORKS3中的程序截图

三菱的这段程序也很简单,把16进制的3,因为10进制下还是3,所以是把3传送到D0,7传送到D1;然后用一个32位的传送指令DMOV把D0和D1的值传送到D2和D3中;MOV指令是16位的传送,再把D2传到D10,D3传到D20!

可以看到D0→D2→D10他们的值都是3,D1→D3→D20他们的值都是7。这里是没有问题的,说明的DMOV,确实是把D0和D1一起传送给了D2和D3,且对应关系挺好!---但是,这还不是要我说的重点,我要说的是D2和D3组合成一个32位数据的时候他们的存储关系!

从程序中可以看到D0和D2的10进制值都是458755,看下边的变量表中双字32位的D0的二进制值是

2#0000000000000111,0000000000000011---这段数值从我中间逗号那里分开的话,其实就是7,3,也就是说D1--D0的形式,D1在左边,D0在右边!

再多看一点监控值:


32位的D0和16位D0以及D1的关系

这个图片可以看到D0的值为3,是因为和这两个位的值为1;D1的值为7是因为,,这三个位的值为1。也因此确定了32位视图下的D0是D1链接D0这样的方式,而西门子中是32位的MD0是由MW0链接MW2的方式!他们是有点相反的意思!

上边所说的到最后就汇总成一张图片:


三菱PLC和西门子PLC分别的数据对应关系

本文到此就结束了,和前边的文章对比来看,应该是容易看懂的,希望对朋友们有点帮助,谢谢!

最新文章