龙空技术网

聊一下博图软件中的字节排序问题

控制研究控 797

前言:

此刻小伙伴们对“字节序大端小端”大体比较注意,大家都想要剖析一些“字节序大端小端”的相关资讯。那么小编在网上网罗了一些对于“字节序大端小端””的相关资讯,希望朋友们能喜欢,小伙伴们快快来学习一下吧!

前天我发了一个微头条说OPC中的字节中有大端字节序和小端字节序的排序方法,我还提到STEP7软件中搜索不到这些字眼,但是在博图软件中可以搜索到,因此今天来看一下博图中的大小端字节排序是怎样的?

还是先把那天微头条上的字节序图片再上一下!

OPC软件上的大/小端字节序截图

这个图片上,大端模式和小端模式的是表示有点不很好,因为大端模式上字节1的位是0-7,而字节2它又标注一个8-15,这样的意思是组成字节1和字节2组合成字1的时候,给人的感觉还是字节2在左边,字节1在右边!---这样和图片下方的小端模式又有点相同了!不知道是理解方法不同,还是有错误!

---不知道小伙伴们怎么以为?

因为有像SWAP这的字节交换指令,所以一般也无需特别去记忆所谓大端字节序还是小端字节序!

还是回到我文章的主题,看一下我在博图软件中搜索到的信息:

博图中搜索出大/小端格式读写指令

可以看到博图软件中是几个指令,主要是以大端格式或者小端格式进行读取或者写入!我随便找一段来测试一段程序,看看结果,就知道博图中的大小端字节格式,或者说字节排序是怎样的?---其实,叫大端字节序好像比大端格式要好理解一些!

另外,需要说明的是我的博图软件是TIA Portal V14,虽然现在V16也已经有了,我好像下载了还没有来得及去更新,所以不清楚V16中是否有新的指令!

直接看程序吧:

博图中大/小端写入程序截图

这段程序是我在OB1中调用FC1和FC2,FC1中就是调用的WRITE_BIG指令,FC2中是调用的WRITE_LITTLE指令!

FC1是将16#ABCD以大端写入的格式,写入到DB1.DBW0中;

FC2是将16#ABCD以小端写入的格式,写入到DB1.DBW10中;

为了让大家看清楚不用大小端格式指令写入,我用了MOVE指令直接将16#ABCD传送到MW10和MW60中!

再来看一下变量表中的监控值:

上边程序的变量监控图

这个图片看着不是很直观,我变换一下:

大/小端格式写入对比

结合这两个图片就可以看出来,16#ABCD大端模式写入DB1.DBW0后的值还是16#ABCD,和我用MOVE指令直接传送给MW42的值是一样的,这里就间接的得出一个观点,西门子博图PLC中的数据排序默认就是大端格式排序,或者说是大端字节序!

而经过FC2小端格式写入DB1.DBW10中的值是16#CDAB,也可以说是反转了高低字节后存入的,本来应该是DB1.DBB10中存入AB的被存入了CD!

以上就是博图软件中所谓的大端格式和小端格式,我经过程序验证后,大家应该对此有了更深入的认识!

本文就写到这里了,感谢阅读!

---顺便说一点,我在文中说的SWAP字节交换指令,之前我写过一篇文章,有兴趣的可以去看一下:西门子200PLC中的字节交换指令

标签: #字节序大端小端