Modbus 大小端问题

注:在做实验的过程中从机返回给主机的温湿度数据是反的,不是我们需要的,没有达到我们预期的效果,如何解决这个问题?涉及到单片机的大小端问题?在Modbus协议中应该是高字节在前面低字节在后面(但是我们实现的代码却恰恰相反),如何解决这个问题。


什么是大小端

 大小端指的是是在存储器中存储数据的字节顺序;在这里要记住是“字节的顺序”,因为在计算机系统中,是以字节为单位的;


C语言中除了8bit的char类型,还有16bit的short类型、32bit的long类型,对于超过8bit的数据的存储,必然存在如何将多个字节排序的问题,因此就导致了大端存储模式和小端存储模式;


如果系统是大端,则首先存储 MSB 字节,即高字节存储在低地址;若是小端,则首先存储LSB字节,即低字节存储在低地址;


ARM单片机默认是“小端模式” 低字节存储在低地址;


假设,需要存储的32bit的数据为:0x11223344,11是高字节,44是低字节:


注:对于大端模式首先存储的是高字节,也就是高字节存储在低地址,如果是小端存储,首先存储低字节,低字节存储的低地址

注:ARM单片机的存储模式是小端模式,低地址存储的是低字节,高地址存储的是高字节

大端小端问题的修改


Modbus 调试工具

注:这是是一个Modbus poll的调试工具,类似于串口调试助手,“可以在PC机上模拟出来一个Modbus的主机”,可以去下载了解使用


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值