没有意义,只是一种传输方式。首先,无论是短浮点数还是归一化值,都只是数据传输两方规定的一种传输方式。
比如要传输10进制的100,双方规定以短浮点数形式传输,则报文就会按短浮点数的规则进行改变,解析的时候,按短浮点数的规则将其还原为100。也就是说,在传输时,报文并不是0x64。
104,101中,短浮点数都是4个字节。归一化值是两个字节。遥测一般采用4字节短浮点数传输。 在程序中,直接强制类型转换,把float转成4个字节的char*即可。
举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。
十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。IEEE 754规定,对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。
数值是没有意义的,比如你说的十六进制7C6,如果作为标度化值的话就是7C6,但是有标度,比如是安培、乏安等,如果转化为归一化值的话就必须先知道归一到什么标准值下,段浮点数只是数值的一种表达方法,是国际标准,是32位表示的,是科学计数法的一种数学表示,有明确的位的标准定义的归一化值是需要一个标准值的。
比如说7C6,十进制是1990,如果要归一化,那么要约定一下,比如说你的这个变量最大值对应的是2000,那么要归到1(当然归到4095,32767都行),那么归一化值就是(1990/2000)*1。浮点型其实就是数据表达的一种方式,但是它可以支持浮点型数据。
IEEE标准从逻辑上采用一个三元组{S, E, M}来表示一个数N,它规定基数为2,符号位S用0和1分别表示正和负,尾数M用原码表示,阶码E用移码表示。
根据浮点数的规格化方法,尾数域的最高有效位总是1,由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边。
因此,尾数域所表示的值是1.M(实际存储的是M),这样可使尾数的表示范围比实际存储多一位。
为了表示指数的正负,阶码E通常采用移码方式来表示,将数据的指数e 加上一个固定的偏移量后作为该数的阶码,这样做既可避免出现正负指数,又可保持数据的原有大小顺序,便于进行比较操作。
参考资料来源:百度百科-浮点数标准
归一化值(NVA)是将数值归一化到0~1或-1-1的范围内,电力行业内都是归一化到满码值3412(对应二次值的100V、5A、50Hz、1),1.2倍就是约4095了。用归一化传输的值解析后都是整数,会丧失精度(这就是为什么要归一化到3412的原因)。IEC103传送的基本都是这样的码值。
浮点数(float型),数学上也就是实数。104中用的是短浮点数(32位),可以很好的保证数值精度,但很多调度中心不接收遥测浮点型。
标度化值(SVA),是为了传输如电流、电压、功率等用他们的物理单位传输(即A、KV、MW)。量程和小数点位置是固定的参数。
例:电流 103A;传输值103 电压 10.3Kv;传输值103,小数点0.1.
相关具体数据类型的说明可以参考国家标准文件:GBT 18657.1-2002、GBT 18657.4-2002
等待 先留个脚印 我也在找这个
刚刚找到的分享一下
一个数值是没有意义的,比如你说的十六进制7C6,如果作为标度化值的话就是7C6,但是有标度,比如是安培、乏安等,如果转化为归一化值的话就必须先知道归一到什么标准值下,所以不好告诉你,段浮点数只是数值的一种表达方法,是国际标准,是32位表示的,是科学计数法的一种数学表示,有明确的位的标准定义的
归一化值是需要一个标准值的
比如说你的7C6,十进制是1990,如果要归一化,那么要约定一下,比如说你的这个变量最大值对应的是2000,那么要归到1(当然归到4095,32767都行),那么归一化值就是(1990/2000)*1
浮点型其实就是数据表达的一种方式,但是它可以支持浮点型数据
等待 先留个脚印 我也在找这个
刚刚找到的分享一下
一个数值是没有意义的,比如你说的十六进制7C6,如果作为标度化值的话就是7C6,但是有标度,比如是安培、乏安等,如果转化为归一化值的话就必须先知道归一到什么标准值下,所以不好告诉你,段浮点数只是数值的一种表达方法,是国际标准,是32位表示的,是科学计数法的一种数学表示,有明确的位的标准定义的
归一化值是需要一个标准值的
比如说你的7C6,十进制是1990,如果要归一化,那么要约定一下,比如说你的这个变量最大值对应的是2000,那么要归到1(当然归到4095,32767都行),那么归一化值就是(1990/2000)*1
浮点型其实就是数据表达的一种方式,但是它可以支持浮点型数据。