编辑: 被控制998 2016-07-07

3、0x001C、0x001d 、0x001E 这三个寄存器,如果超过其范围,则会限制为边界值.

4、主机发送时须把实际数值放大了

10 倍.即把小数变成整数处理.

3、错误码提示 0x81 非法的功能码(不支持的功能码) 0x82 读取非法的地址 0x83 写非法的数据(写到不可写的寄存器地址或变送器禁止写) 寄存器信息 地址 寄存器信息 地址 寄存器信息 地址 寄存器信息 地址 湿度 0x0000 设备型号 0x0008 湿度上限报警值 0x0010 保留 0x0018 温度 0x0001 版本号(低8位) 0x0009 湿度上限报警使能 0x0011 保留 0x0019 保留 0x0002 设备 ID 高16 位0x000A 湿度下限报警值 0x0012 保留 0x001A 保留 0x0003 设备 ID 低16 位0x000B 湿度下限报警使能 0x0013 保留 0x001B 保留 0x0004 温度上限报警值 0x000C 保留 0x0014 保留 0x001C 保留 0x0005 温度上限报警使能 0x000D 保留 0x0015 温度校正值更新 0x001D 保留 0x0006 温度下限报警值 0x000E 保留 0x0016 湿度校正值更新 0x001E 保留 0x0007 温度下限报警使能 0x000F 保留 0x0017 保留 0x001F -

8 - 广州奥松电子有限公司

电话:020-36042809 /

36380552 www.aosong.com

4、 通信读取指令示例 主机发送的报文格式:01

03 00

00 00

02 C4 0B 下表是功能码的介绍: 产品响应返回的报文格式:

01 03

04 湿度(16位) 温度(16位) CRC 校验码 下表是返回一组温湿度数据示例:01

03 04

01 D7

00 D6 CA

69 温湿度输出格式及计算示例 温湿度分辨率是 16Bit, 温湿度以实际的正负数格式输出, 且串出的数值是实际温湿度值的

10 倍;

湿度: 01D7 = 1*256+13*16+4 =

471 =>

湿度 = 471÷10=47.1%RH 温度: 00D6 = 13*16+6 =

214 =>

温度 = 214÷10 = 21.4℃ CRC 码的计算方法 1.预置1个16位的寄存器为十六进制FFFF(即全为1) ;

称此寄存器为CRC寄存器;

2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异 或,把结果放于CRC寄存器;

3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;

4.如果移出位为0:重复第3步(再次右移一位) ;

如果移出位为1:CRC寄存器与多项式A001 (1010

0000 0000 0001)进行异或;

5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;

6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;

7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进 行交换;

8.最后得到的CRC寄存器内容即为:CRC码. CRC 码的 C 语言计算代码 说明:此程序计算*ptr内前len长度个字节的CRC码. 主机发送 字节数 发送信息 备注从机地址

1 01 发送至地址为

01 的从机 功能码

1 03 读取寄存器 起始地址

2 0000 起始地址为

0000 读取寄存器个数

2 0002 读取2个寄存器,共4个字节 CRC 码[1]

2 C40B 由主机计算的CRC 低字节在前(C4),高字节(0B)在后 从机响应 字节数 返回信息 备注从机地址

1 01 来自

01 号数据 功能码

1 03 读取寄存器 返回字节数

1 04 返回

4 个寄存器共

4 个字节 寄存器

0 高字节

1 01 地址 0x00 的内容(湿度高字节) 寄存器

0 低字节

1 D7 地址 0x00 的内容(湿度低字节) 寄存器

1 高字节

1 00 地址 0x00 的内容(温度高字节) 寄存器

1 低字节

1 D6 地址 0x00 的内容(温度低字节) CRC 码[1]

2 CA69 从机计算返回的CRC码,低字节(CA)........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题