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

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

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


噪声传感器实验

MR开发板

在这里插入图片描述

单片机TTL转RS485模块

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

开发板 TTL转RS485模块
A3 TXD
A2 RXD
5v 5v+
GND GND

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

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

TTL转RS485模块 噪音模块 开发板
A+ TXD_A
B- RXD_B
5v 5V
GND GND

厂家出厂给的文件重点

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

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

采用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,再次查询即可发现地址已被修改)

地址码 功能码 起始地址 修改数值 校验码低位 校验码高位
0xFF 0x06 0x07 0xD0 0x00 0x02 0x1D 0x58

应答帧

地址码 功能码 起始地址 修改数值 校验码低位 校验码高位
0x01 0x06 0x07 0xD0 0x00 0x02 0x08 0x86

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

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

地址码 功能码 起始地址 数据长度 校验码低位 校验码高位
0xFF 0x03 0x07 0xD0 0x00 0x02 0xD1 0x58

应答帧

地址码 功能码 有效字节数 波特率 地址 校验码低位 校验码高位
0x01 0x03 0x04 0x00 0x01 0x00 0x01 0x6A 0x33
>>> 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'x02x03x04x00x02x00x02xe92'  # 地址是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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>