仪表整型数据到浮点数的转化_第1页
仪表整型数据到浮点数的转化_第2页
仪表整型数据到浮点数的转化_第3页
仪表整型数据到浮点数的转化_第4页
仪表整型数据到浮点数的转化_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、组态王与单片机协议1 .通信口设置:通信方式:RS-232,RS-485,RS-422都可。波特率:由单片机决定。字节数据格式:起始位、数据位、停止位均由单片机决定。2 .设备地址设置格式:#.#(前面的两个字符是设备地址,范围为0255;后面的一个字符是用户设定是不是打包,“0”为不打包、“1”为打包。)3.寄放器设置寄存器名称上限下限数据类型X655350FLOAT/BYTE/UINT4.格式:读写格式(除字头外所有字节均为ASCII码)字头设备地址标志数据地址数据字节数数据异或CR说明;字头:1字节,40H设备地址:2字节,0255(即0-0x0ffH)标志:1字节,bit0bit7,b

2、it0=0:读,bit0=1:写。Bit1=0:不打包,bit3bit2=00,数据类型为字节。bit3bit2=01,数据类型为字。bit3bit2=1x,数据类型为浮点数。数据地址:2字节,0x00000xffff数据字节数:1字节,1100,实际读写的数据的字节数。数据-:为实际的数据异或:异或从设备地址到异或字节前CR0x0d5.上位机发送读命令字头设备地址标志数据地址数据字节数异或CR下位机应答:假设正常:字头设备地址数据字节数数据异或CR假设不正常:字头设备地址*异或CR例:读12号仪表,数据地址为15的数据。其中数据为255,数据类型为字节,不打包。所发数据为:403043303

3、030303046303134340d假设正确:40304330300x460x4637330d假设不正确:4030432a2a37330d4.上位机发送写命令字头设备地址标志数据地址数据字节数数据异或CR下位机应答:假设正常:字头设备地址#异或CR假设不正常:字头设备地址*异或CR例:写12号仪表,数据地址为15。其中数据为255,数据类型为字节,不打包。所发数据为:4030433031303030463031464634350d假设正确:403043232337330d假设不正确:4030432a2a37330d6.浮点数格式:4字节浮点数=第一字节高4位ASCII码+第一字节低4位ASC

4、II码+第二字节高4位ASCII码+第二字节低4位ASCII码+第三字节高4位ASCII码+第三字节低4位ASCII码+第四字节高4位ASCII码+第四字节低4位ASCII码XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX第1字节高4位第2字节高4位第3字节高4位第4字节高4位四字节浮点数格式:(1)第一字节阶符(2)第二字节(3)第三字节(4)第四字节注:数符=0正,数符=1负数符阶符阶码D0D7D6D5浮点数可表示范围:-1x2321X232数符:1位阶符:1位阶码:6位例:流量积算操纵仪表瞬时流量测量值数据转换成浮点数:7=2=07i6+C86+66i6+66i6=30a

5、scii+37ascii+43ascii+38ascii+36ascii+36ascii+36ascii+36ascii小数部份:256=256=256=10进制:第一字节第二字节第三字节第四字节第一字节007第二字节C8第三字节66第四字节66十六进制:ASCII码:传输格式如下:303742(C)、38(8)36(6)、36(6)36(6)、36(6)第1字节低4位第2字节低4位第3字节低4位第4字节低4位3037423836363636第1字节高4位第2字节高4位第3字节高4位第4字节高4位3、注:仪表内部数据为十六进制表示的十进制数。如:实时测量值为500,那么用十六进制表示为1F4H

6、o仪表通信传输是将上述十六进制数据转化为标准ASCII码(即一字节的16进制数转化为2个ASCII码高4位ASCII码+低4位ASCII码)。如:上述数据1F4H(16进制),传输时,转化为ASCII码那么为30H、31H、46H34H。7.此浮点数格式的转换:1) ASCII码到浮点数:/*in:char*c要转化的ASII码字符,应为4个字符。Return:转换后的浮点数。*/floatC4toD(char*c)BYTEHd30,Jiema30;floatDTc30;floatDecimal=0;memset(Hd,0,sizeof(Hd);memset(Jiema,0,sizeof(Ji

7、ema);memset(DTc,0,sizeof(DTc);floatreturnflo=0;BOOLShuFU=FALSE,JieFU=FALSE;if(c7>0x40)&&(c7<0x47)Hd7=(c7-0x37)&0x0f);elseif(c7>0x60)&&(c7<0x67)Hd7=(c7-0x57)&0x0f);elseHd7=(c7-0x30)&0x0f);if(c6>0x40)&&(c6<0x47)Hd6=(c6-0x37)&0x0f);elseif(c6>

8、0x60)&&(c6<0x67)Hd6=(c6-0x57)&0x0f);elseHd6=(c6-0x30)&0x0f);DTc2=(float)(float)(Hd6*+(float)(Hd7)/;if(c5>0x40)&&(c5<0x47)Hd5=(c5-0x37)&0x0f);elseif(c5>0x60)&&(c5<0x67)Hd5=(c5-0x57)&0x0f);elseHd5=(c5-0x30)&0x0f);if(c4>0x40)&&(c4<

9、;0x47)Hd4=(c4-0x37)&0x0f);elseif(c4>0x60)&&(c4<0x67)Hd4=(c4-0x57)&0x0f);elseHd4=(c4-0x30)&0x0f);DTc1=(float)(float)(Hd4*+(float)Hd5)+DTc2)/;if(c3>0x40)&&(c3<0x47)Hd3=(c3-0x37)&0x0f);elseif(c3>0x60)&&(c3<0x67)Hd3=(c3-0x57)&0x0f);elseHd3=(c

10、3-0x30)&0x0f);if(c2>0x40)&&(c2<0x47)Hd2=(c2-0x37)&0x0f);elseif(c2>0x60)&&(c2<0x67)Hd2=(c2-0x57)&0x0f);elseHd2=(c2-0x30)&0x0f);Decimal=(float)(float)(Hd2*16)+(float)(Hd3)+DTc1)/;if(c1>0x40)&&(c1<0x47)Jiema1=(c1-0x37)&0x0f);elseif(c1>0x6

11、0)&&(c1<0x67)Jiema1=(c1-0x57)&0x0f);elseJiema1=(c1-0x30)&0x0f);if(c0>0x40)&&(c0<0x47)Jiema0=(c0-0x37)&0x0f);elseif(c0>0x60)&&(c0<0x67)Jiema0=(c0-0x57)&0x0f);elseJiema0=(c0-0x30)&0x0f);ShuFU=(Jiema0&0x08)>>3)>0;JieFU=(Jiema0&

12、0x04)>>2)>0;Jiema2=(Jiema0&0x03)*16+Jiema1;if(JieFU)returnflo=(float)pow(2,(-1)*Jiema2)*Decimal;elsereturnflo=(float)pow(2,Jiema2)*Decimal;if(ShuFU)returnflo=(-1)*returnflo;returnreturnflo;2) 浮点数到ASCII码:/*in:char*c:存储浮点数转换后的ASCII码字符。Floatd:要转换的浮点数。Return:无。*/voidD4toC(char*c,floatd)BYTE

13、i=0,Jiema=0;charinbyte130;BOOLShuFu=FALSE,JieFu=FALSE;intinbyte2=0,inbyte3=0,inbyte4=0;charafterbyte230,afterbyte330,afterbyte430;floatF_afterbyte2=0,F_afterbyte3=0,F_afterbyte4=0;memset(inbyte1,0x30,sizeof(inbyte1);memset(afterbyte2,0x30,sizeof(afterbyte2);memset(afterbyte3,0x30,sizeof(afterbyte3);

14、memset(afterbyte4,0x30,sizeof(afterbyte4);inbyte110=0x0;afterbyte210=0x0;afterbyte310=0x0;afterbyte410=0x0;if(d=0)for(intj=0;j<8;j+)cj=0x30;return;if(d<0)ShuFu=TRUE;d=(-1)*d;while(d>1)d=(float)(d/;i+;while(d<=JieFu=TRUE;d=(float)(d*i+;if(d=1)for(intj=2;j<8;j+)cj=0x46;elseinbyte2=(int)

15、(d*256);F_afterbyte2=(d*256)-(int)(d*256);inbyte3=(int)(F_afterbyte2*256);F_afterbyte3=(F_afterbyte2*256)-(int)(F_afterbyte2*256);inbyte4=(int)(F_afterbyte3*256);F_afterbyte4=(F_afterbyte3*256)-(int)(F_afterbyte3*256);itoa(inbyte2,afterbyte2,16);itoa(inbyte3,afterbyte3,16);itoa(inbyte4,afterbyte4,16

16、);if(inbyte2=0)c2=0x30;c3=0x30;elseif(inbyte2<16)c2=0x30;c3=afterbyte20;elsec2=afterbyte20;c3=afterbyte21;if(inbyte3=0)c4=0x30;c5=0x30;elseif(inbyte3<16)c4=0x30;c5=afterbyte30;elsec4=afterbyte30;c5=afterbyte31;if(inbyte4=0)c6=0x30;c7=0x30;elseif(inbyte4<16)c6=0x30;c7=afterbyte40;elsec【9=anerbyfe4o】;C3=anerbyfe4【1】;ifaie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论