Modbus协议很简单,结合温湿度传感器手把手教你使用Modbus协议
一、阅读温湿度传感器产品手册
1、产品参数
2、产品所用到的Modbus协议功能号
3、产品通讯协议
二、利用PC串口调试助手与温控传感器进行通信设置
设置串口调试助手通讯格式字:波特率9600,校验位NONE,数据位8,停止位1。
三、读取输入寄存器的内容(0x04)
1、PC读取温湿度传感器温度值(0x04)
1.1、主机发送——主机发送命令帧格式如下:
根据产品通讯协议,存放温度寄存器地址为:0x0001,寄存器数量为:1,根据命令帧格式,填表如下:
1.2、从机响应——从机响应数据帧格式如下:
温湿度传感器响应数据帧为:
温度值包含2个字节,值=0x00FE,转换为十进制=254,根据产品手册,温度单位为0.1℃,因此实际温度值=254×0.1℃=25.4℃。
2、PC连续读取温湿度传感器湿度值、湿度值(0x04)
2.1、主机发送——主机发送命令帧格式如下:
根据产品通讯协议,存放温度值、湿度值寄存器地址为连续的地址,分别为:0x0001、0x0002,因此起始地址=0x0001,寄存器数量=0x0002,填表如下:
2.2、从机响应——从机响应数据帧格式如下:
读取温度值=0x0112,转换为十进制=274,实际温度=274×0.1℃=27.4℃;
读取湿度值=0x0231,转换为十进制=561,实际温度=561×0.1%RH =56.1%RH。
四、读取保持寄存器内容(0x03)
根据产品通信协议,保持温湿度传感器设定了四个保持寄存器,分别为:
设备地址(0x0101)、波特率(0x0102)、温度修正值(0x0103)、湿度修正值(0x0104)
1、PC读取从机设备地址(0x03)
1.1、主机发送——主机发送命令帧格式如下:
根据产品通讯协议,存放设备地址的寄存器地址为:0x0101,寄存器数量为:1,根据命令帧格式,填表如下:
1.2、从机响应——从机响应数据帧格式如下:
温湿度传感器响应数据帧为:
设备地址值包含2个字节,值=0x0001,与我们预想的一致。
2、PC连续读取从机设备地址、波特率、温度修正值、湿度修正值(0x03)
1.1、主机发送——主机发送命令帧格式如下:
根据产品通讯协议,“设备地址、波特率、温度修正值、湿度修正值”为连续的四个地址,起始地址为:0x0101,寄存器数量为:4,根据命令帧格式,填表如下:
1.2、从机响应——从机响应数据帧格式如下:
设备地址=0x0001、波特率=0x258,十进制9600、温度修正=0、湿度修正=0。
五、修改单个保持寄存器内容(0x06)
1、PC修改从机设备地址(0x06)
例如,将从机设备地址由01改为05
1.1、主机发送——主机发送命令帧格式如下:
根据产品通讯协议,存放设备地址的寄存器地址为:0x0101,寄存器修改值为:05,根据命令帧格式,填表如下:
1.2、从机响应——从机响应数据帧格式如下(与发送相同):
以上已经完成了对从机设备地址的修改,断送电重启一次温湿度传感器,再次发送“01 04 00 01 00 01 60 0A”读取温度时,已经无法收到响应,因为,设备地址已经改为“05”,需要发送“05 04 00 01 00 01 61 8E”,即可收到响应,读取温度值为0x0277,转换为十进制=277,因此实际温度=277×0.1℃=27.7℃。
六、修改多个保持寄存器内容(0x10)
1、PC同时修改从机设备地址、波特率、温度修正值、湿度修正值
例如,要求如下:
1.1、主机发送——主机发送命令帧格式如下:
说明:第7位“字节数”=寄存器数的2倍,这里修改4个寄存器的内容,因此字节数为8,填表如下:
1.2、从机响应——从机响应数据帧格式如下(与发送相同):