仪表整型数据到浮点数的转化

  • 格式:doc
  • 大小:135.50 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我们的专业专项在工科方面:计算机工程,电子信息工程,自动化控制,电力电子工程,机械工程,土木工程,道路与桥组态王与单片机协议

1.通讯口设置:

通讯方式:RS-232,RS-485,RS-422均可。 波特率: 由单片机决定。 字节数据格式:

起始位、数据位、停止位均由单片机决定。

2.设备地址设置

格式:##.# (前面的两个字符是设备地址,范围为0-255;后面的一个字符是用户设定是否打包,“0”为不打包、“1”为打包。)

3.寄存器设置

4.格式:读写格式(除字头外所有字节均为ASCII 码)

说明;

字头:1字节,40H

设备地址: 2字节,0—255(即0---0x0ffH )

标志:1字节,bit0~bit7,bit0= 0:读,bit0= 1:写。Bit1= 0:不打包, bit3bit2 = 00,数据类型为字节。 bit3bit2 = 01,数据类型为字。 bit3bit2 = 1x,数据类型为浮点数。 数据地址: 2字节,0x0000~0xffff

数据字节数:1字节,1—100,实际读写的数据的字节数。 数据…:为实际的数据

异或:异或从设备地址到异或字节前 CR :

0x0d 。

5.上位机发送读命令

下位机应答:若正常:

若不正常:

例:读12号仪表,数据地址为15的数据。其中数据为255,数据类型为字节,不打包。所发数据为:

我们的专业专项在工科方面:计算机工程,电子信息工程,自动化控制,电力电子工程,机械工程,土木工程,道路与桥

若正确:

若不正确:

4.上位机发送写命令

下位机应答:若正常: 若不正常:

例:写12号仪表,数据地址为15。其中数据为255,数据类型为字节,不打包。所发数据为:

若正确:

若不正确:

6.浮点数格式:

4字节浮点数 = 第一字节高4位ASCII 码+第一字节低4位ASCII 码

+第二字节高4位ASCII 码+第二字节低4位ASCII 码 +第三字节高4位ASCII 码+第三字节低4位ASCII 码 +第四字节高4位ASCII 码+第四字节低4位ASCII 码

第1字节高4位 第2字节高4位 第3字节高4位 第4字节高4位

★ 四字节浮点数格式:

(1)第一字节

(2)第二字节

(3)第三字节

(4)第四字节

注:数符=0——正,数符=1——负阶符=0——正,阶符=1——负

D7 D6 D5 ~ D0

★浮点数可表示范围:-1×232~1×232

★数符:1位阶符:1位阶码:6位

例:流量积算控制仪表瞬时流量测量值数据=100.210

转换成浮点数:100.210=27⨯0.7828125=0716+C816+6616+6616

=30ASCII+37ASCII+43ASCII+38ASCII+36ASCII+36ASCII+36ASCII+36ASCII

小数部份:0.7828125 ⇒ 0.7828125⨯256=200.4⇒ 0.4⨯256=102.4⇒0.4⨯256=102.4

10进制:

第一字节

第二字节

第三字节

第四字节

十六进制: ASCII码:

第一字节

第二字节

第三字节

第四字节

小数部分乘以256

整数部份为第二字节(200)

第二字节小数部分乘以256

整数部份为第三字节(102)

第三字节小数部分乘以256

整数部份为第四字节(102)

传输格式如下:

第1字节低4位第2字节低4位第3字节低4位第4字节低4位

第1字节高4位第2字节高4位第3字节高4位第4字节高4位

3、注:

仪表内部数据为十六进制表示的十进制数。如:实时测量值为500,则用十六进制表示为1F4H。仪表通讯传输是将上述十六进制数据转化为标准ASCII码(即一字节的16进制数转化为2个ASCII码──高

4位ASCII码+低4位ASCII码)。

如:上述数据1F4H(16进制),传输时,转化为ASCII码则为30H、31H、46H、34H。

7.此浮点数格式的转换:

1)ASCII码到浮点数:

/*

in:char* c

要转化的ASII码字符,应为4个字符。

Return :转换后的浮点数。

*/

float C4toD(char * c)

{

BYTE Hd[30], Jiema[30];

float DTc[30];

float Decimal = 0;

memset(Hd, 0, sizeof(Hd));

memset(Jiema, 0, sizeof(Jiema));

memset(DTc, 0, sizeof(DTc));

float returnflo = 0;

BOOL ShuFU = FALSE, JieFU = FALSE;

if((c[7] > 0x40) && (c[7] < 0x47))

Hd[7] = ((c[7] - 0x37) & 0x0f);

else if((c[7] > 0x60) && (c[7] < 0x67))

Hd[7] = ((c[7] - 0x57) & 0x0f);

else

Hd[7] = ((c[7] - 0x30) & 0x0f);

if((c[6] > 0x40) && (c[6] < 0x47))

Hd[6] = ((c[6] - 0x37) & 0x0f);

else if((c[6] > 0x60) && (c[6] < 0x67))

Hd[6] = ((c[6] - 0x57) & 0x0f);

else

Hd[6] = ((c[6] - 0x30) & 0x0f);

我们的专业专项在工科方面:计算机工程,电子信息工程,自动化控制,电力电子工程,机械工程,土木工程,道路与桥