【Modbus】Modbus协议讲解


STM32全部教程【STM32】标准库与HAL库对照学习系列教程大全

前言

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


一、串口通讯简介

先要明确一点的就是,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开发攻略

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

修成真

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

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

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

打赏作者

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

抵扣说明:

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

余额充值