Modbus协议很简单,结合温湿度传感器手把手教你使用Modbus协议

createh52个月前 (02-01)技术教程10

一、阅读温湿度传感器产品手册

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、从机响应——从机响应数据帧格式如下(与发送相同):



相关文章

基于Netty的ModbusRtu和云服务器(java)通讯

上篇讲了modbus协议的基础。今天说下问题的场景及过程的困扰,断断续续历时个把月才把问题解决。场景(农污):站点分散分布在农村,不具备有线网络。每站点现场通过plc接现场设备,比如泵、液位计、鼓风机...

ModBus通讯协议:传输模式+地址、功能码、数据域+数据格式

ModBus通讯协议通俗点来讲,ModBus规约了起停电机,主机要分别发送什么命令给从机。ModBus规定主从机之间数据的交互,需要遵循什么样的格式,如何保证数据在传输过程中不发生冲突。只要都遵循这个...

【开源】一个基于java语言的物联网中间件,支持常用物联网协议

项目介绍iot-ucy是使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp, 串口(com)通讯(window、linu...

Java 泛型使用(类、方法、接口协议、类型通配符、通配符上下限)

一、简介泛型:是 JDK5 中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定...

ThingsBoard物联网平台实践 LoRa协议+node-red+mqtt 实现单灯控制

ThingsBoard是一个基于Java的开源物联网平台,可实现物联网项目的快速开发,管理和扩展。ThingsBoard 使用行业标准物联网协议(MQTT,CoAP和HTTP)实现设备连接,并支持云和...

通过 HTTP/2 协议案例学习 Java & Netty 性能调优:工具、技巧与方法论

作者:梁倍宁 Apache Dubbo Contributor、陈有为 Apache Dubbo PMC摘要AliwareDubbo3 Triple 协议是参考 gRPC、gRPC-Web、Dubbo...