电工学习网

 找回密码
 立即注册
查看: 3337|回复: 0
打印 上一主题 下一主题

双字、字、字节和位的关系总结

[复制链接]
跳转到指定楼层
楼主
发表于 2020-3-31 08:45:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近做项目,用到了IO-Link设备,在读取从站数据时候,用到从双字中提取字、字节和位的知识,作为一个菜鸟,由于以前也没有仔细关注过这个细节,所以又查了下资料,并做了程序进行测试,现记录一下,以备自己将来使用,也方便有类似问题的人使用;
下面主要从资料查询、准备程序、程序验证进行记录:
一、资料查询:
相信从网上搜一下西门子数据类型方面的资料,会有一大堆,最常见的就是解释双字和字节之间的组成关系,如下图:
双字、字、字节和位的关系总结

就以这个资料为基础,进行试验验证;
二、 程序准备
由于资料上大部分都是以M区介绍双字和字节等关系,但是实际情况是DB块中的数据居多,故在此实验中,将M区和DB区的内容进行对比,以方便观察,进行如下准备:
1、  新建DB块,里面创建需要的变量:
双字、字、字节和位的关系总结

2、 创建M区变量,以方便做比较,这里取MD24,然后将其拆成字、字节、位,以方便观察:
双字、字、字节和位的关系总结
3、 创建FC程序:主要是将双字拆成字、双字,并将双字传送给单字、单字传送给双字,为了方便置位双字中的位,特意用数组逐位传送给双字中的位:
双字、字、字节和位的关系总结
双字、字、字节和位的关系总结
三、程序验证:
省略掉程序的下载啊、仿真啊的操作步骤,因为那个不是重点,直接展示测试结果:从数组中,分别置位不同的位,则相当于分别对双字中的位进行置位,可以分别观察结果,现在取比较有代表性的两个位,即将第0位和第16位置1,结果如下两图所示:
双字、字、字节和位的关系总结
双字、字、字节和位的关系总结
通过测试可以发现如下规律:
1、西门子双字中位的排列,是从右向左排的,这点和平时写字顺序正好相反,但是我觉得可以从进制的位数去记忆一下,比如我们十进制,从右往左分别是个、十、百、千、万等位,这个正好类似于那个;
2、 可以看下双字传给单字的情况,对于截取数据时候比较有帮助,具体不总结,可以体会一下;
3、第三条也是我一开始比较迷糊的地方,观察双字的四个字节,和位的排序是一样的,即0位在右,依次往左增大,但是M区其实按照这个方向排列,但是让人很迷糊,上图为例,我们置位0位的时候,在DB中是第0个字节有变化,但是在M区中对应的是MB27变化,虽然按照一开始资料所示,MB27是在最右边,但是MB27是第0字节,MB26是第1字节,依次类推,大小和字节顺序又反了一次,虽然仔细想一下就明白怎么回事,但是依然有点小别扭;
遇到类似情况的,应该不止我一个,分享一下,希望能帮到需要的人,第一次发分享贴,文笔有点差劲,大家见谅,有不足和错误的地方,欢迎斧正;
来源:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-5-15 13:12

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表