关于Modbus数据16进制转10进制问题

本文详细解析了STM32通过Modbus协议读取RS485温湿度传感器数据的过程,介绍了如何将16进制数据转换为10进制温度值,并给出了具体计算公式。

这两天在开发STM32的Modbus主站,就买了一个RS485总线的温湿度传感器来,温湿度传感器说明要求将传感器返回的Modbus报文数据转换为10进制后再除以10得到真实数据,以下是举例

Modbus主站发送报文:
01 04 00 01 00 01 60 0A
意思是读取从站地址01的输入寄存器1号位1位数据

SlaveID FunctionCode StartADDR Length CRC
从站ID 功能码 起始地址 寄存器数量 CRC校验
01 04 00 01 00 01 60 0A

Modbus主站接收报文:
01 04 02 01 2D 78 BD
意思是从站ID为01,功能码为04,数据有两位(一个数据是通过两位来返回),数据高位01,数据低位2D

SlaveID FunctionCode Length Data CRC
从站ID 功能码 寄存器数量 数据 CRC校验
01 04 02 01 2D 78 BD

以上是数据解析

那么问题来了,返回的01 2D怎么变成我们需要的数据
根据传感器说明书,我们需要将返回值变成10进制数据后除以10得到温度值,可以理解为以下流程

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值