基础实验——485传感器修改地址

本文介绍了如何修改485传感器的默认地址以避免冲突,详细阐述了Modbus-RTU通讯规约的数据帧格式,并通过噪声传感器实验举例说明地址修改过程。同时,解释了CRC校验的重要性和使用方法,提供了在线计算工具来确保数据传输的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。
RS-485定义的是使用平衡(也称作差分)多点传输线的驱动器(driver)和接收器(receiver)的电气特性。

485类型的传感器默认出厂设置地址都为0x01。但是如果我想接多个485传感器,可能地址就冲突了,导致程序无法运行。所以这里以噪音模块为例,我们需要看懂厂家给的文档,如何修改地址。


噪声传感器实验

MR开发板

在这里插入图片描述

单片机TTL转RS485模块

在这里插入图片描述
接线说明

开发板TTL转RS485模块
A3TXD
A2RXD
5v5v+
GNDGND

噪声传感器模块——485信号

在这里插入图片描述
接线说明

TTL转RS485模块噪音模块开发板
A+TXD_A
B-RXD_B
5v5V
GNDGND

厂家出厂给的文件重点

基本都是如下格式,会一个,其它传感器都差不多。

数据帧格式定义(非重点,了解一下即可)

采用Modbus-RTU 通讯规约,
格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:默认01。
功能码:主机所发指令功能指示,本模块只用到功能码0x03(读取寄存器数据)。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。

主机问询帧结构

地址码功能码寄存器起始地址寄存器长度校验码低位校验码高位
1字节1字节2字节2字节1字节1字节

模块应答帧结构

地址码功能码有效字节数数据一区第二数据区 第N数据区校验码
1字节1字节1字节2字节2字节2字节

修改地址(重点)

问询帧(假设修改地址为2,再次查询即可发现地址已被修改)

地址码功能码起始地址修改数值校验码低位校验码高位
0xFF0x060x07 0xD00x00 0x020x1D0x58

应答帧

地址码功能码起始地址修改数值校验码低位校验码高位
0x010x060x07 0xD00x00 0x020x080x86

读取设备的地址以及波特率

问询帧(例如:读取到的地址为0x01 波特率为4800,分别以2400、4800、9600的波特率发送该问询帧)

地址码功能码起始地址数据长度校验码低位校验码高位
0xFF0x030x07 0xD00x00 0x020xD10x58

应答帧

地址码功能码有效字节数波特率地址校验码低位校验码高位
0x010x030x040x00 0x010x00 0x010x6A0x33
>>> from pyb import UART,delay
>>> 
>>> u2 = UART(2, baudrate=9600)
>>> 
>>> barray = bytearray([0xFF,0x03,0x07, 0xD0 ,0x00 ,0x02 ,0xD1,0x58])
>>> u2.write(barray)
8
>>> u2by=u2.read()
>>> print(u2by)
b'\x02\x03\x04\x00\x02\x00\x02\xe92'  # 地址是2 
# 这里是我修改地址成功了然后查询的 默认地址是1

CRC校验

可能大家也注意了,每次发送“命令的时候”都会有一个“校验码低位,校验码高位”这个是什么东西。怎么设置。

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

简单说就是怕数据传错地方,给了一个保障。所以这个CRC校验码不是随便填写的。比如我的噪音传感器地址改成了2,但是我发数据的时候,如果检验不对。是收不到回来的信息的。整个功能就实现不了。

在这里插入图片描述
我们的地址改了,但是CRC校验码不对,我们就收不到返回的数据(其实也没传成功。。)
我们使用CRC(循环冗余校验)在线计算工具来修改后面两个校验码。

使用方法

  1. 点击打开CRC(循环冗余校验)在线计算工具
    在这里插入图片描述
  2. 将地址为0x01,0x03,0x00,0x00,0x00, 0x01 ,0x84 ,0x0A的信息修改成0x02,0x03,0x00,0x00,0x00, 0x01 ,未知 ,未知把0x去掉后剩下的信息放到【需要校验的数据】处【参数模型】选择 CRC-16/MODBUS在这里插入图片描述
  3. 点击【计算】
    在这里插入图片描述
    所以我们获得最终的 查询地址2噪音的询问针应该是
0x02,0x03,0x00,0x00,0x00, 0x01,0x84,0x39

测试:地址二获取噪音信息。
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼桨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值