购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.3 Modbus协议读取温湿度

1.温湿度传感器

我们选用一款RS485接口且支持Modbus RTU的温湿度模块(如图1.2.22所示),同时参考图1.2.19的YF3300硬件接口图,把YF3300的RS485接口的A和B分别连接温湿度模块上的A和B,然后为温湿度模块接入电源(5~24V)。

● 图1.2.22 温湿度接线图

2. Modbus协议介绍

Modbus通信协议是由莫迪康(Modicon)公司在1979年首次提出的,目前已经是一个标准的,真正开发的,在工业自动化等领域应用最广泛的网络通信协议。主要包括Modbus ASCII、Modbus RTU、Modbus TCP。对智能设备来说,当前应用最广泛的是Modbus RTU通信协议。

Modbus通信协议是主从协议,一个主设备可以带若干台(理论上为247台)从设备。由主设备发送命令帧,从设备根据命令帧中的设备地址进行相应的响应。Modbus协议针对智能设备,定义了很多功能操作,其中最常用的功能就是保持寄存器的读和写功能,也就是3号和16号功能,下面就是对这两种功能的具体描述。

(1)读取保持寄存器(单个和多个,以字为最小单位)

发送命令帧:

帧长度:8个字节

设备地址:1~247

功能码:3H

数据地址:0~65535 具体范围与相关设备有关

数量:1~65535 具体范围与相关设备有关

校验码:CRC16校验

返回命令帧:

帧长度:5+N个字节

设备地址:1~247

功能码:3H

数据量:实际的读取数据数量

数据:返回数据的意义

a=HoldStart

n= DataNum-1

校验码:CRC16校验

命令有误:

1)没有任何返回

2)返回异议帧

(2)设置保持寄存器(多个,以字为最小单位)

发送命令帧:

帧长度:9+bytN个字节

设备地址:1~247

功能码:10H

数据地址:0~65535 具体范围与相关设备有关

数量:1~122 具体范围与相关设备有关

字节数:设置的字节个数bytN= DataNum×2

数据:具体的字节数据

校验码:CRC16校验

返回命令帧:

帧长度:8个字节

设备地址:1~247

功能码:10H

数据地址:0~65535 具体范围与相关设备有关

数量:1~122 具体范围与相关设备有关

校验码:CRC16校验

命令有误:

1)没有任何返回

2)返回异议帧

3.读取温湿度

YFSoft.ModbusRTU通信库,对上述通信帧进行了功能封装,直接调用对应的函数即可。

查询YF3300的系统手册,获知RS485的串口号为“COM2”,查询YFTH21系统手册,得知设备的通信波特率为9600Baud,无校验,默认设备地址为1(点对点地址253),在保持寄存器的0地址保存了温度值(温度实际值∗10),地址1保存了湿度值(湿度实际值∗10)。每秒钟读取一次温湿度值,相关代码如下:

编译成功后,单击“运行”按钮(或者按“F5”键),自动部署程序到硬件设备,然后运行(如图1.2.23所示)。可以发现温度值和湿度值已经正常获取,并且显示了出来。

● 图1.2.23 Modbus协议读取温湿度调试图 k/DJfkpbQaAtnxdnmsnxMDXm6a8A9XkQcNp5TKwA8OYux6jsKpai3/czYd5mNf9l

点击中间区域
呼出菜单
上一章
目录
下一章
×