资讯详情

IEEE32数据传输格式分解

平时Modbus常用的通讯。比如传输某寄存器的数据 “0x3F” 装换成十进制后是“63”。这种类型直观、简单。但是需要处理到正负数、浮点数时就不是很方便了,即使加标志位判断,数据的范围有局限性,可移植性差。在PLC,中它们通讯这类数据则用了另一种格式。即E32数据处理格式。下边简单介绍一下,废话不多说,直接说主题。(详情百度)从名字可以看出,本数据是32位。 下边 随便写个32位数跟大家一块算 十六进制 0x41 0xc5 0x3b 0x28 二进制 01000001 11000101 00111011 00101000 分解 sppppppp pzzzzzzz zzzzzzzz zzzzzzzz 说明 : S表示本数据的正负,0表示本数据正数,1表示本数据为负数 P是后面位偏移,算法是把p整合为一组转换为十进制为131,于127比较 大4,那么待会向右位移(大几移几位),若小向左移位。 在"S P"后面都省去“1.” 复原后为 1.1000101 00111011 00101000 右移后为11000.101 00111011 00101000 小数左边算法 1*2^4+1*2^3+0*2^2+0*2^1+0*2^0=24; 小数右边算法1*2^-1+0*2^-2+1*2^-3+0*2^-4+0*2^-5+1*2^-6…… 后边就不说了,结果是0.6678. 两个相加是24.6678. 可以表示任意一个数据,编写这种程序可移植性强,无局限性,比如发个整数30我们可以计算出来。 正负标志位为0,向右移动4位p的值就是127+4= 131 二进制 10000011 Z为11110000 00000000 00000000 移位整合后 0x 41 0xf0 0x00 0x00 用编写程序时,包含math.h内有计算幂运算函数 pow(float x,float y);程序具体怎么写这里就不多说 。毕竟不是很容易写,尊重下个人成果。哈哈。

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台