【Modbus】Modbus协议讲解


前言

本篇是我参加工作培训时,作为记录笔记用的,因此写的方式不会像前面那些系列一样写的很详细,因为一个通讯协议的内容都会比较多,我更多会写经常看到和实用的,不过在文末,我也会推荐大佬的详细文章或者一些书籍供大家参考。


一、串口通讯简介

先要明确一点的就是,Modbus协议是属于OSI通讯模型中的数据链路层和应用层,而在物理层需要使用串口去实现。
在这里插入图片描述

  • 串口通讯,是指外设和计算机间,通过数据信号线地线等,按位进行传输数据的一种通讯方式。

  • 串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。

  • 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等

具体内容可以看我之前的文章:
【STM32】标准库与HAL库对照学习教程八–串口通信详解
将通信基本概念看完就行了


二、RS485串口通讯

RS485通讯标准的由来(了解)

1969年,电子工业协会 (EIA) 制订并发布了RS232串行数据接口标准,并命名为EIA-232-E

RS-422由RS-232发展而来,它弥补了RS-232通信距离短、速率低等缺点,全名为TIA/EIA-422-A标准

1983年,电子工业协会 (EIA) 在RS-422基础上制定了RS-485标准,后命名为TIA/EIA-485-A标准

简单来说RS485是工业上的串口使用标准,Modbus协议就是在RS485基础上运行。


RS485特点

  • 工作方式:差分
  • 通讯类型:主从通讯
  • 数据传输方式:半双工
  • 节点数:32、128、256
  • 最大传输长度:1200m
  • 最大传输速率:10Mpbs
  • 数据格式:
    1位起始位、8位数据位、1位停止位、无校验(常用)
    1位起始位、8位数据位、1位停止位、奇校验
    1位起始位、8位数据位、1位停止位、偶校验

RS-485终端电阻的选择

终端电阻就是在线型网终两端(相距最远的两个通信端口上) ,并联在一对通信线上的电阻,示意图如下:
在这里插入图片描述

作用:根据传输线理论终端电阻可以吸收网终上的反射波,有效地增强信号强度

电阻选择:

终端电阻要依照网络所使用的线缆种类的特性阻抗来确定,普通双绞线的 特性阻抗为120Ω.因此RS-485网络的终端电阻也选择120Ω。

在RS-485网络通讯距离较近(<300m)时,一般不使用终端电阻。


三、Modbus协议


简介

Modbus是一种串行通信协议,是Modicon公司 (现在的施耐德电气SchneiderElectric) 于1979年为使用可编程逻辑控制器(PLC) 通信而发表。

Modbus已经成为工业领域通信协议的业界标准(Defacto) ,并且现在是工业电子设备之间常用的连接方式。

分类:
按一般维度分为Modbus Rtu、Modbus Ascll、Modbus TCP三种模式。这三种模式中最常用的是Modbus Rtu

Modbus消息帧格式:
从机地址+功能码+数据+16位CRC校验

从机地址 功能码 数据 CRC
1字节 1字节 n字节 2字节

主/从协议原理:
Modbus 串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。

Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。

子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus 事务处理。

  • 单播
    • 主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个’应答’)。
    • 每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。
  • 广播
    • 主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。
    • 所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。

常用功能码
在这里插入图片描述
我这边经常用的是0x03读、0x06写单、0x10写多


四、Modbus报文范例

在这里插入图片描述


推荐文章:详解Modbus通信协议—清晰易懂
实践使用文章:普中Modbus开发攻略

猜你喜欢

转载自blog.csdn.net/qq_51447215/article/details/131735270