网站首页 > 文章精选 正文
我是电控阿甘,从事电气工作十余年,专注分享【电工基础知识+自动化控制知识】,助力电工入门和电工进阶电气工程师,点击右上方“关注”我,让我们共同进步,实现薪高一筹!
全文大约2000字,知识类文章阅读和休闲娱乐类文章阅读不同,需要阅读者在阅读过程中进行一定的耐心和思考,阅读过程可能不会带给你短暂的快乐,但是认真看完,知识可以带给你长久的满足。
- 以下为正文
在PLC使用过程中经常会听到高字节、低字位这种说法,并且还不止这一种叫法,还有什么大头端、小头端,大端模式、小端模式等等一堆叫法。初学者总是一脸迷茫,搞不清楚什么意思,其实他们说的都是一个概念,一回事,只要搞清楚一个概念即可。
为什么我们要搞清楚这个概念呢,平时PLC编程的时候确实用得不太多,也不用太在意。但是在牵涉到与别的品牌的PLC或者上位机软件及仪表通信时,如果搞不清楚这个概念,很容易会导致传送的数据解析不正确,得不到我们想要的数据,加上有的说明书写得不详细,此类故障如果没有这个概念意识,经常会得到一个莫名其妙的数,并且一时还不知道问题出在哪里,那么今天我们就来分析一下这个高字节、低字位是什么意思。
高字节、低字位本质上讲的就是数据在以字节为单位的存储空间中存储的次序问题,不同家的PLC对该次序定义可能不同,但无非就是高字节、低字位和高字节、高字位两种,如果双方交换数据时没有将该次序统一就会出现数据解析不正确的问题。
我们在上一篇文章中详细讲过数据在PLC中是如何存储的,并且讲解了字节、字、双字的定义等概念,这里不再对上述知识进行重复讲解,如果还不清楚地可以参考往期这篇文章:
那既然说了高字节、低字位对应描述对象是以字节为单位,那就只有比字节大的存储单位进行数据存储时才存在这种说法,具体到PLC中就是字和双字,我们都知道一个字是由两个连续的字节组成,如VW100就是由VB100和VB101两个字节组成,因为VB101比VB100的底层地址编号大,并且西门子定义的编号101也比100大,因此称VB101为高字节,VB100为低字节。
那么低字位指的又是什么意思呢?我们知道一个字也是由16个位组成的,通常其16个位的编号为0-15,15为高位编号,0为低位编号。同样以VW100为例,其16个位排列如下图所示:
可以看到最左边是高位15,最右边是低位0,但是注意哈,其左边高的8个位编号为15-8的位是VB100的8个位,其右边低的8个位编号为7-0的位则是VB101的8个位。这就很好玩了,高的字节编号VB101这个字节在VW100这个字中反而放在了最右边充当低的7-0位编号,而低的字节编号VB100这个字节在VW100这个字中则实现了逆袭,放在了最左边充当高的15-8位编号,这就是高字节、低字位这个叫法的来源了,如果你愿意也可以叫成低字节、高字位,一样的道理,当然我们最好还是遵循习惯叫法叫作高字节、低字位。
同样的道理对于双字VD100而言,其从左到右、从高到底位编号为31-0、字节组成则是由VB100、VB101、VB102、VB103,此时低字节VB100依然占据高8位编号,充当高字位,而VB103则乖乖接受分配的低8位编号,充当低字位。
那么一个具体的数字在字存储空间如何存储的呢?我们以无符号整数12345这数字为例看一下,先看下其进制转换后,16进制为16#3039,二进制则为2#0011 0000 0011 1001,如下图:
那么在PLC中VW100中如何存储,监控如下图,可以看到VB100中数值为16#30,VB101中的数值为16#39,确实是VB100中存储高位值,VB101中存储低位值,对于双字也是同样道理,在此不再赘述,有兴趣的朋友可以自己试验一下看看双字中如何储存数据。
当我们的PLC与别的PLC或者上位机软件及仪表通信时,对方如果采用高字节、高字位的存储方式,那么同样是16#3039我们接收过来数据就变成了16#3930,转换成无符号整数就变成了14640,这不是我们想要的数据,因此当碰到通信及接收数据正常而显示数据异常时,要着重考虑是否为双方数据存储方式不一样所导致的,解决办法就是要么发送数据前让对方处理好数据再发送,要么就自己接收完数据后再自行处理。
而同样的所谓的小端模式、小头端也是一个意思,对应的就是高字节、低字位这种存储方式,相应的大端模式、大头端对应的就是高字节、高字位的存储方式,原理完全相同,叫法不同而已,理解了原理,下次看到不同的叫法也会很快理解。
好了,关于高字节、低字位这个概念今天就给大家聊到这里,希望可以给大家的PLC学习带来帮助。另外我的主页中有很多关于PLC基础知识的文章和视频,都是一些学习PLC必要的知识,同时考虑到初学者初次理解困难,全部采用大白话讲解的,有兴趣的可以去看下,希望这些文章和视频够帮到大家,如果还有其它关于电工和PLC的问题,可以下方留言讨论,谢谢大家。
猜你喜欢
- 2025-06-24 PLC常用进制数及转换方法(plc中进制符号)
- 2025-06-24 PLC常用数制及转换方法,让你轻松掌握PLC编程
- 2025-06-24 PLC编程必看!5种常见进制数解析,搞懂才能玩转PLC!
- 2025-06-24 C数据类型——常量(c的数据类型及其定义方法)
- 2025-06-24 什么是二进制、八进制、十进制、十六进制?
- 2025-06-24 理论基础——十进制、二进制、十六进制、八进制
- 2025-06-24 2、进位制之间的转换(含有小数位)
- 2025-06-24 一文解释西门子大小字节、高低字节、16进制和10进制关系
- 2025-06-24 位(bit)、字节(Byte)、字(Word)、双字(DWord)都是啥关系
- 2025-06-24 深入理解二进制十进制十六进制(深入理解二进制十进制十六进制转换)
- 06-24PLC常用进制数及转换方法(plc中进制符号)
- 06-24PLC常用数制及转换方法,让你轻松掌握PLC编程
- 06-24PLC编程必看!5种常见进制数解析,搞懂才能玩转PLC!
- 06-24C数据类型——常量(c的数据类型及其定义方法)
- 06-24什么是二进制、八进制、十进制、十六进制?
- 06-24理论基础——十进制、二进制、十六进制、八进制
- 06-24搞不懂PLC中的高字节、低字位是啥?看完这篇文章就懂了!
- 06-242、进位制之间的转换(含有小数位)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)