参考:灵育科技Modbus课程总结
作者:Naunyang
时间:2020-11-23 13:51:58
网址:https://blog.csdn.net/Naunyang/article/details/108740456?spm=1001.2014.3001.5502

参考:MODBUS用于单片机通讯
作者:hillchina
发布时间:2017-02-22 08:25:11
网址:https://www.bilibili.com/video/BV1Bx411y7N5

参考:Modbus协议解析(Modbus-RTU、Modbus-TCP、Modbus-PLUS)
作者:panda@Code 发布时间:2019-07-01 23:44:03
网址:https://blog.csdn.net/panda5_csdn/article/details/94332166?spm=1001.2014.3001.5502

完整视频及资料下载链接: https://pan.baidu.com/s/1AZQKnipbGF63UW2a5TdFZA
提取码: wzy7

目录

  • 什么是Modbus
  • 通讯的硬件层协议机制,主从模式的建立
  • 硬件层半双工通讯方式的实现
  • 基于485通讯(硬件层协议)的MODBUS协议(软件层协议),确定主机寻地址帧格式
    • RTU(2进制方式)的机制及数据传输实现方式
    • ASC(字符方式)的机制及数据传输实现方式
  • MODBUS从设备回应数据包格式
  • MODBUS从机协议实现
  • STM32编程实现一个MODBUS从机协议
    • MODBUS通讯的硬件层及底层通讯准备

什么是Modbus

顾名思义,他是一个bus,即总线协议,如果你接触到这种协议,相信你所处的行业很可能是工业方面或者你的产品用于工业。

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

通讯的硬件层协议机制,主从模式的建立

协议分类:硬件层协议、软件层协议

硬件层:RS232、RS485 、CAN等 。主要解决硬件传输问题,解决如何传输0与1的问题(物理上以什么样的电平、多少伏电压传输,仪表可以测到这个电压,还有以双绞线还是什么线传输)。交通道路

软件层协议:传输的目的,为什么要传,传数据要干啥。Modbus、TCP/IP……交通规则

  • 单工模式:只能从一方发送数据到另一方,而不能反过来发。

  • 半双工模式:可以A发送给B,也可以B发送给A,但是不能同时发

  • 主从模式:
    (1)在这样一个系统中,只能有一个主机,其他的都是从机。
    (2)系统中的从机都不能主动发信息给主机。

硬件层半双工通讯方式的实现

主从模式:
(3)系统上电之后,默认状态,主机,从机都是在监听状态;
(4)主机与从机之间的通信,只能由主机发起;

主机要建立起一次通信,要满足以下要求:
(1)主机要将自己置为发送状态;
(2)主机要按照预先约定好的格式(比如MODBUS协议格式)发送寻址数据帧,发完之后立刻把自己转回接收状态;
(3)寻址完成之后,目标从机要返回给我消息,才能算这次通信成功;

基于485通讯(硬件层协议)的MODBUS协议(软件层协议),确定主机寻地址帧格式

1、MODBUS是主从模式:
整个系统只能有一个主机,每个从机都有唯一的地址(0-247),0号地址是广播地址,发送给所有的从机。0号地址寻址,所有从机不回应(相互会冲突嘛);

2、MODBUS主机寻址帧格式:

  • (1)RTU方式:也叫16进制方式,或者2进制方式
    比如:0x03: 0000 0011
  • (2)ASC方式:字符方式(方便调试)
    比如:0x03–> 转换成字符’0’与字符’3’再发送出去;那么就会发
    字符’0’(ASCII码是0x30)的2进制0011 0000 + 字符’3’(ASCII码0x33)的2进制 0011 0011,最终发送的就是:0011 0000 0011 0011

ASC方式最大的优势就是方便调试(可打印),整个线路上传输的都是ASCII码,都是可打印字符,可以清楚的知道这个线路上传输的是什么,因为ASCII码中可打印字符是32-126,其他显示乱码。

RTU(2进制方式)的机制及数据传输实现方式

ASC方式数据帧格式:

从机地址 + 功能码 + 数据 + 16位CRC校验

不同的功能码对应的紧接于功能码之后的数据是不同的。
比如:03功能码,是要读取从机的数据。那么从机要知道从他的存储器的哪里(哪个地址)开始读,读到哪里结束,读几个地址长度。

还有一个问题就是:从机怎么知道主机发送完了?
从机以接收数据停止之后开始计时,达到3.5个字节以上的时间就认为主机的寻址帧完成,并开始处理。

3.5个字节转化成时间计算:

ASC(字符方式)的机制及数据传输实现方式

ASC方式数据帧格式:

起始位‘ :’ + 地址(2个字节) + 功能码(2个字节)+ 数据(1、2…n)+校验位(LRC校验)

这些地址、还有功能码、还有数据为什么是两个字节呢
因为是ASC方式,字符的方式。比如:0x03,要发送就要变成:字符’0’ 与’3’
字符’0’ (0x30)的二进制0011 0000是与’3’(0x33)的二进制是:0011 0011就成2个字节了。
这种方式非常冗长,工作少用。

校验位是从地址开始到数据位的最后结束。

校验位的计算:把所有的值加起来的和对256取余,然后取反加1 ,就是校验位。

MODBUS从设备回应数据包格式

(1)回应的数据包与主机查询的数据包格式一致;

(2)正常回应是,功能码与主机发送时的功能码一致(1-127);

(3)异常的回应时,功能码要在收到的功能码的基础上加128

MODBUS从机协议实现

(1)硬件上具备串口(485接口)

(2)硬件上需要一个精确的毫秒级别的定时器

STM32编程实现一个MODBUS从机协议

MODBUS通讯的硬件层及底层通讯准备

MODBUS通讯协议详解(基于485)相关推荐

  1. modbus通讯协议详解

    1.Modbus协议简介 Modbus协议是一种广泛应用于当今工业控制领域的通用通信协议.通过此协议,控制器相互之间.或者控制器经由网路(如以太网)可以和其他设备之间进行通信.Modbus协议使用的是 ...

  2. modbus通讯协议详解(转载)

    转载自:https://www.cnblogs.com/The-explosion/p/11512677.html modbus通讯协议详解 1.Modbus 协议简介  Modbus协议是一种已广泛 ...

  3. 3、Modbus通讯协议详解

    前言 在平时用的时候模块都会带有自己的通讯协议,直接查看手册用就可以,所以平时对于modbus虽然是在用但是原理性的东西时常忘记. 但是如果你做一个底层,自己写一个通讯协议,这时候就要对协议本身有所了 ...

  4. 经过整理的Modbus通讯协议详解(一)

    Modbus通讯协议简介 Modbus协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modb ...

  5. SPI通讯协议详解 基于STM32

    SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在 ADC.L ...

  6. 基于php的modbus,Modbus通讯协议详解

    工业控制已从单机控制走向集中监控.集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便.Modbus就是工业控制器的网络协议中的一种. 一. Modbus 协议简介 Modbus 协议是 ...

  7. [转载]modbus通讯协议详解和几张modbus图解 力求通俗易懂

    如今风靡全球的"中国新四大发明"正深深地改变着人们的生活.就拿购物来说,以前买东西要逛商场,先找楼层导购,再逛到相应柜台,接着愉快购物,选好东西后经过一番讨价还价,最后付钱拿货走人 ...

  8. Modbus RTU 协议详解

    https://blog.csdn.net/qq153471503/article/details/124317894 目录 Modbus是什么? Modbus分类 Modbus-RTU协议数据帧结构 ...

  9. 【科普贴】I2C通讯协议详解——偏软件分析和逻辑分析仪实例分析

    一. I2C标准协议流程 1. I2C协议--规定命令 开始:当SCL为高电平时,SDA从高电平向低电平切换 停止:当SCL为高电平时,SDA从低电平向高电平切换 应答(ACK):发送侧发送完8bit ...

最新文章

  1. 吴恩达机器学习笔记 —— 9 神经网络学习
  2. 设为首页及收藏本页代码 兼容IE和Firefox
  3. harmonyos 2.0怎么升级,HarmonyOS 2.0正式发布 分布式能力获得全面升级
  4. js获取网页当前页面及路径
  5. 如何排查 .NET 内存泄漏
  6. 大数据面试题总结(附答案)
  7. 【ECG理论篇】(2)AI实现心律失常判别:心电数据预处理
  8. 【原理+代码】Python实现Topsis分析法(优劣解距离法)
  9. 单继承、多继承、菱形继承的虚函数表
  10. DirectX11环境配置
  11. html p标签颜色代码,html里的颜色标签肿么写?
  12. Navicate使用
  13. 简单的指针二叉查找树和数组二叉查找树
  14. 知乎实时数据(问题-以及答案)-语料集
  15. ORACLE exp时出现1455错误,全网唯一正解,建议收藏
  16. VB.NET的form窗体操作
  17. lamp环境下phpwind,wordpress,discuz论坛的搭建全过程
  18. 从NCE loss到InfoNCE loss
  19. 自然语言处理笔记9-哈工大 关毅
  20. 安全合规--45--基于国内法律法规的企业数据合规体系建设经验总结(三)

热门文章

  1. elementPlus关闭弹窗,页面原先滚动条消失
  2. 【手势交互】9. PS Move
  3. 嵌入式linux字符设备驱动
  4. c语言基础知识_结构体访问,共同体,枚举类型
  5. Design Compiler指南——设计综合过程
  6. halcon对光源打光不均匀进行平场矫正
  7. matlab常用函数——数学函数
  8. 最优化课堂笔记06-无约束多维非线性规划方法(含重点)
  9. linux 信号_Linux信号机制
  10. docker-compose观察实时日志_大数据项目实战之在线教育(03实时需求) - 十一vs十一...