UART相关参数和Modbus协议

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

文章目录

  • 温湿度数据和风速风向数据的读取和计算方法
  • 1 串行通信数据格式
    • 1.1 协议介绍
    • 1.2 UART相关参数
    • 1.3 UART通信过程
  • 2 USB转串口模块的使用
  • 3 串口调试助手的使用
    • 3.1 串口控制区
    • 3.2 发送控制区
    • 3.3 接收控制区
  • 4 GY-39气象信息模块的原理和使用
    • 4.1 功能简介
    • 4.2 数据包结构
    • 4.3 数据精度
  • 5 使用逻辑分析仪捕获UART通信波形
    • 5.1 逻辑分析仪的工作原理
    • 5.2 逻辑分析仪的主要参数
    • 5.3 使用逻辑分析仪捕获GY-39模块的通信波形
    • 5.4 使用PC读取GY-39模块的测量数据
    • 5.5 GY-39模块测量数据的计算
  • 6 RS485与Modbus协议
    • 6.1 RS485通信接口原理
    • 6.2 Modbus协议原理
    • 6.3 Modbus协议帧结构
  • 7 PR-3000风速风向模块
    • 7.1 模块介绍
    • 7.2 接线方式
    • 7.3 模块地址设置
    • 7.4 Modbus寄存器地址

1 串行通信数据格式

1.1 协议介绍

UART是异步串行通信协议,可以实现双向全双工传输。UART将数据分成帧,并逐位传输。完整的数据帧由起始位、数据位、奇偶校验位和停止位组成。在传输数据时,两个字符之间存在空闲位,空闲位为逻辑1,表示线路处于等待状态。
UART相关参数和Modbus协议_第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通信时,先发送低位,再发送UART相关参数和Modbus协议_第2张图片
高位。下面是一个示例:

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

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

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





2 USB转串口模块的使用

在调试硬件时,需要使用USB转串口模块将USB接口信号转换为UART接口的TTL信号。
UART相关参数和Modbus协议_第3张图片

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

  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米。
UART相关参数和Modbus协议_第4张图片

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,对应北、东北、东、东南、南、西南、西、西北。

UART相关参数和Modbus协议_第5张图片

你可能感兴趣的:(c++)