• UART相关参数和Modbus协议


    温湿度数据和风速风向数据的读取和计算方法

    1 串行通信数据格式

    1.1 协议介绍

    UART是异步串行通信协议,可以实现双向全双工传输。UART将数据分成帧,并逐位传输。完整的数据帧由起始位、数据位、奇偶校验位和停止位组成。在传输数据时,两个字符之间存在空闲位,空闲位为逻辑1,表示线路处于等待状态。
    在这里插入图片描述

    1.2 UART相关参数

    波特率是每秒传送的二进制码位数,单位为bps。常见的波特率有4800bps9600bps115200bps921600bps等。
    起始位用于表示数据的开始传输,由一个逻辑0的数据位表示。
    有效数据的长度常被约定为5、6、7或8位,一般都是8位数据。数据位从低位到高位依次传输。
    校验位用于验证数据是否正确,有奇校验(odd)偶校验(even)0校验(space)1校验(mark)以及无校验(noparity)等方式。奇校验要求有效数据和校验位中逻辑1的个数为奇数,偶校验要求有效数据和校验位中逻辑1的个数为偶数,0校验和1校验分别要求校验位总是0或1,无校验则不使用校验位。
    停止位表示数据传输的结束,一定是逻辑1。常见的停止位数量可以是1位、1.5位或2位。

    1.3 UART通信过程

    UART通信时,先发送低位,再发送在这里插入图片描述
    高位。下面是一个示例:

    假设波特率为100bps,每一个比特持续的时间为10ms。原始数据为0110 0011B,即0x63。将该数据转换为UART数据帧:

    • 起始位
    • 有效数据
    • 校验位
    • 停止位

    0 01100011 1 1(逆序传输)
    则UART数据帧为1100 0110 10。





    2 USB转串口模块的使用

    在调试硬件时,需要使用USB转串口模块将USB接口信号转换为UART接口的TTL信号。
    在这里插入图片描述

    串行通信设备可以采用三线制连接,即两条数据线和一条地线。

    1. 用于接收数据的数据线用英文RX、Rx或RXD表示,
    2. 用于发送数据的数据线用英文TX、Tx或TXD表示。

    设备1的TX引脚连接设备2的RX引脚,设备1的RX引脚连接设备2的TX引脚。

    3 串口调试助手的使用

    串口调试助手是一类辅助PC进行串口调试的工具软件。常用的串口调试助手有XCOM、SSCOM、野火多功能调试助手等。此处使用的串口调试助手软件是XCOM V2.0。

    3.1 串口控制区

    串口控制区用于设定COM号、波特率、停止位长度、数据位长度、奇偶校验类型等。

    3.2 发送控制区

    发送控制区用于控制发送数据的参数。

    • 定时发送:按照一定的周期自动重复发送数据。
    • 16进制发送:要发送的数据为41。使用16进制发送会将数据理解为0x41并进行发送;不使用16进制发送会将数据理解为0x34 0x31(即4和1的ASCII码)并进行发送。
    • 发送新行:数据后面发送一个’\r\n’。

    3.3 接收控制区

    接收控制区用于控制接收到的数据的显示格式和流控制方式等。





    4 GY-39气象信息模块的原理和使用

    4.1 功能简介

    GY-39气象信息模块可以测量气压、温度、湿度、光照强度、海拔等多种气象信息。模块内部的芯片可以将数据进行处理。默认的输出方式是UART。

    4.2 数据包结构

    GY-39模块工作时,会发送光照强度数据包和气象信息数据包。这两种数据包均由包头包类型数据量数据校验和这几个部分组成。
    光照强度数据包结构:

    • 包头标志(2字节):5A 5A
    • 包类型标志(1字节):15
    • 数据长度(1字节):04
    • 数据(4字节):00 00 FE 40
    • 校验和(1字节):0B

    气象信息数据包结构:

    • 包头标志(2字节):5A 5A
    • 包类型标志(1字节):45
    • 数据长度(1字节):0A
    • 数据(10字节):0B 2D 00 97 C4 3F 12 77 00 9C
    • 校验和(1字节):FA

    4.3 数据精度

    光照强度(单位为lux)、气压(单位为Pa)和海拔(单位为m)的测量结果仅保留整数,因此传输时只需要将整数转换为对应的二进制数。
    温度(单位为℃)和湿度(单位为%RH)的测量结果则保留到小数点后两位。在传输时,会先将数值扩大一百倍,然后再转换为对应的二进制数。测量结果有可能是负数,模块会使用补码来表示负数的结果。



    5 使用逻辑分析仪捕获UART通信波形

    5.1 逻辑分析仪的工作原理

    逻辑分析仪可以对通信接口的数据进行实时监测和采集,它的工作原理是:通过探头监测数据流,将并行数据送入比较器进行电平判断后输出,再将判断结果进行采样和顺序存储,最终可以显示出通信波形。

    5.2 逻辑分析仪的主要参数

    (1) 采样频率。决定了逻辑分析仪可以采集信号的频率范围,一般要高于被测信号4倍以上。
    (2) 存储深度。决定了在固定采样频率下可以采集波形的时间长度,存储深度越大可以观察更长时间内的信号变化。
    (3) 触发条件。决定了逻辑分析仪开始采集波形的时机,常用的有上升沿、下降沿、高电平和低电平触发。

    5.3 使用逻辑分析仪捕获GY-39模块的通信波形

    (1) 连接GY-39模块的TX引脚与逻辑分析仪,并将二者与PC连接。
    (2) 设置逻辑分析仪的采样频率为2MHz,采样时间为2s。将通道名设置为UART_TX,触发方式为下降沿触发。
    (3) 启动逻辑分析仪,自动开始采集和显示GY-39模块的通信波形。波形中的白点代表一帧数据中的数据位。

    5.4 使用PC读取GY-39模块的测量数据

    (1) 将GY-39模块、USB转串口模块和PC连接。
    (2) 在串口调试助手XCOM中打开相应的串口,设置波特率为9600,数据位为8位,停止位为1位。
    (3) 打开串口并观察接收到的数据。GY-39模块默认1Hz发送数据,无需任何操作即可接收。

    5.5 GY-39模块测量数据的计算

    根据数据手册,GY-39模块发送的数据为:
    光照强度=(前高8位<<24)|(前低8位<<16)|(后高8位<<8)|后低8位/10 lux
    温度=((高8位<<8)|低8位)/100 °C
    气压=(前高8位<<24)|(前低8位<<16)|(后高8位<<8)|后低8位 /100 Pa
    湿度=(高8位<<8)|低8位/100 %RH
    海拔高度=(高8位<<8)|低8位 m

    6 RS485与Modbus协议

    6.1 RS485通信接口原理

    RS485是美国电气工业联合会制定的多点通信接口标准,采用主从通信方式进行工作,适合远距离、高灵敏度的多点通信。RS485接口有A、B两条信号线,采用差分信号的形式工作。在远距离通信时常用的速率为9600bps,此时通信距离可达500~1500米。
    在这里插入图片描述

    6.2 Modbus协议原理

    Modbus是一种工业领域常用的串行通信协议,是莫迪康(Modicon)公司于1979年为可编程逻辑控制器的通信而研发的。2004年,中国国家标准委员会正式把Modbus协议作为了国家标准(GB/T 19582.2-2008《基于Modbus协议的工业自动化网络规范 第2部分:Modbus协议在串行链路上的实现指南》)。
    Modbus协议广泛应用于自动化控制、环境监测、能源管理、工业自动化、楼宇自控等领域。Modbus协议采用简单、开放、易于实现的特点,能够方便地应用于各种不同的设备之间的通信。

    6.3 Modbus协议帧结构

    Modbus的数据帧分为四部分:设备地址、功能码、数据、校验码。

    在这里插入图片描述

    设备地址是一个字节,用于指示从机的地址。其中地址0是广播地址,1247是从机可用的地址,248255是保留地址。主机可以通过地址选择通信的对象。
    功能码是一个字节,用于指示主机请求的操作。Modbus协议规定了一些常用的功能码,如03功能码是读保持寄存器,16功能码是写多个寄存器等。
    数据部分长度不超过252字节。如果是主机发送的帧,则这一部分是主机请求的参数。如果是从机发送的帧,则这一部分是从机返回的数据或者异常码。
    校验码是长度为两个字节的数据,用于对设备地址、功能码、数据区的所有字节进行校验。Modbus协议采用CRC16算法进行校验。
    根据用途的不同,Modbus帧可以分为主机向从机发送的问询帧和从机向主机发送的应答帧。

    7 PR-3000风速风向模块

    7.1 模块介绍

    该模块由风速模块和风向模块组成。风速模块采用三风杯传感器检测风速,风向模块通过箭头旋转检测风向。
    风速风向模块工作电压为10-30V,接口为RS485,最大通信速率为9600bps。

    7.2 接线方式

    将PR-3000模块的电源、地线、RS485的A、B线接至UART转RS485模块。RS485线不能接反,同一网络下设备地址不能重复。

    7.3 模块地址设置

    Modbus协议要求同一网络从机地址唯一。风速与风向模块出厂默认地址均为1,使用前需要修改。

    7.4 Modbus寄存器地址

    根据数据手册,风与风向模块的Modbus寄存器地址如下:
    风速模块(地址1):

    • 风速值:0x00(高字节)、0x01(低字节),单位0.1m/s。

    风向模块(地址2):

    • 风向值:0x00,取值0-7,对应北、东北、东、东南、南、西南、西、西北。

    在这里插入图片描述

  • 相关阅读:
    Snowflake 获 2021 年度数据库称号;Linus 成为 Linux 项目中最强 committer;OpenHarmony 3.1 Beta 版发布 | 开源日报
    MFC Windows 程序设计[127]之菜单初体验
    一吨托盘式单臂吊设计
    Python进阶(一) - 图形界面编程Tkinter(1)
    安全工具分析系列-Londly01
    [Unity] IL2CPP编译VTable错误
    【群智能算法】光学显微镜算法 OMA算法【Matlab代码#59】
    报错:为什么数组明明有内容但打印的length是0
    Ubuntu20详细安装步骤
    linux安装&git安装
  • 原文地址:https://blog.csdn.net/weixin_40933653/article/details/133443250