完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
plc位、字节、字、双字、有符号、无符号的关系
前言:很多同学在PLC开发过程中,因为数据类型选择错误而出现得到的数据和期望的数据不一致的情况,例如:我们在读取模拟量采集读数的时候,可能会发现数据小于32767时都是对的,但是一旦大于这个值就变成了负数;还有些时候,PLC在和第三方采集器通信时,会出现接收的数据顺序和发送方数据存在高低位颠倒的情况,这是怎么回事呢,让我们来一起来解开这里的谜团。 位:最小的存储单位,非0则1,表达两个状态。 字节:每8个位组成一个字节。这样一个字节可以表达2的8次方(256)个状态,大于256个状态怎么表示?那就字。 字:2个字节组成一个字,有16个位。这样一个字可以表达2的16次方(65536)个状态,大于65536个状态怎么表示? 那就用 双字。 双字:2个字组成一个双字,有32个位。这样一个双字可以表达2的32次方(429496729状态)。 双整(32位又称双字)=2个整数(2*16位) 整数(16位又称字)=2个字节(2*8位) 字节(8位)=8个位 举个例子说明,以西门子为例: VD0(双整)=VW0,VW1(整数)=VB0,VB1,VB2,VB3(字)=V0.0~V3.7(位)一共32个位 所以称32位双整! 西门子表达比较特殊,理解如下: 例如:VB100 B表示1个字节=8个位 8个位为VB100.0--VB100.7, 一个字节是VB100。 VW100 W表示2个字节=16个位 =字 16个位为VB100.0--VB100.7,VB100.8--VB100.15, 二个字节(字)是VB100,VB101. VD100 D表示4个字节=32个位=双字 32个位为VB100.0--VB100.7,VB100.8--VB100.15, VB100.16-- VB100.23, VB100.24--VB100.32, 4个字节(双字)是 VB100,B101,VB102,VB103 一个32位组成的双字,其0-31位共32位用VD10表示的话,那么要表达0-15位组成的字,就是VW12;要表达16-31位组成的字,就是VW10;要表达0-7位组成的字节,就是VB13;要表达8-15位组成的字节,就是VB12;要表达16-23位组成的字节,就是VB11;要表达24-31位组成的字节,就是VB10。 无符号整数 十进制数值范围 0到65535 十六进制数值范围16#0000到16#FFFF 有符号整数 十进制数值范围 -32768到+32767 十六进制数值范围16#8000到16#7FFF 1、无符号整数和有符号整数之分? 一个16位数,分为WORD数据类型与INT数据类型。前者无符号,后者为有符号。 通常情况下WORD用于逻辑运算,INT用于数学运算;即WORD与INT在用法上没有什么区别(WORD可做数学运算,INT也可作逻辑运算)。 2、如vw100我怎么让它成为无符号整数寄存器? 不是什么寄存器,寄存器的概念在此不做解释。vw100如果做为WORD数据类型就是无符号。 3、WORD数据类型与INT数据类型数据范围: WORD数据:0-65535; INT数据类型:-32768-+32767.。 4、如果数值超过65535怎么办呢? 同上所述,原理一样,只不过数类型变成DWORD和DINT而已。 |
|
|
|
只有小组成员才能发言,加入小组>>
3334 浏览 9 评论
3013 浏览 16 评论
3506 浏览 1 评论
9092 浏览 16 评论
4105 浏览 18 评论
1214浏览 3评论
628浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
615浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2358浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1920浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-9 02:22 , Processed in 1.007265 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号