Modbus协议学习第三篇之协议通信规则

导语

        本篇博客将深入介绍Modbus协议的一些内容,主要包括通讯方式和通讯模型的介绍

Modbus通讯方式

        Modbus协议是单主机、多从机的通信协议,即同一时间,总线上只能有一个主设备,但可以有一个或者多个从设备(最多好像是247个?根据协议的地址长度来决定)。

        通讯流程及规则:由主设备发起请求,从设备接收到消息后,再响应请求,返回主设备需要的数据。当从设备没有收到请求时,从设备不会主动向主设备发送数据。同时,从设备之间不能相互通信,主设备在同一时间只能启动一个Modbus通信事务。

        通讯有两种方式:广播模式和单播模式。

        广播模式:主设备向所有的从设备发送请求指令,从设备接收到广播指令后进行对应的事务处理,而不需要应答主机。(一般是写指令)

        单播模式:主设备向单个从设备发送请求,从设备接收并处理请求后,向主设备返回一个响应报文。

Modbus通讯模型详解

        根据专栏的之前一篇博文介绍的协议模型我们知道,主设备发送的请求报文中包括设备地址、功能码、数据域以及差错检测域。注意,当设备地址为全0时,表明主设备发送的是广播信息,总线上所有的从设备都会接收该信息,然后进行事务处理(但不会向主机发送响应)。当发送单播报文时,会在报文中指定从设备的地址(地址范围为1-247,主设备无地址),每个从设备均有唯一的地址标识,可以理解为ID或者局域网的IP地址。

        主机设备发送的一条Modbus请求报文如下:

          从设备的一条Modbus应答与上述请求报文类似,如果正常应答,数据段中包含设备收集的数据,如寄存器值或者状态,如果异常应答,功能码则为对应的异常码,数据段则包含描述错误信息的代码。

        注意:根据Modbus的协议要求,所有的从设备都必须接收广播模式下的写指令,并且地址0被用作广播通信(即当主机发送的一条请求报文中,地址值为0时,该条报文被视作广播报文,所有的从设备都需要接收并且执行该报文的命令)

        另外:对于串行链路,存在两种传输帧模式:ASCII模式和RTU(Remote Terminal Unit,远程终端单元)模式,但对于同一网络条件下, 只能选择其中一种模式,RTU传输效率更高。

写在最后

        最近被其他事耽误了,学习写作有点挤不出时间,感觉本篇写的也是构思依托,大家就当做笔记来查阅吧。后面有空再更,大家想了解Modbus哪方面的知识呢?

相关推荐

  1. Modbus-RTU通讯协议

    2024-01-19 02:04:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 02:04:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 02:04:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 02:04:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 02:04:01       18 阅读

热门阅读

  1. spring retry 配置及使用

    2024-01-19 02:04:01       36 阅读
  2. 设计模式——命令模式

    2024-01-19 02:04:01       38 阅读
  3. nodejs学习计划--(二)fs文件系统和path模块

    2024-01-19 02:04:01       36 阅读
  4. 【话题】边缘计算的挑战和机遇

    2024-01-19 02:04:01       32 阅读
  5. <sa8650>sa8650 qcxserver-之-DiagnosticManager HealthStatus

    2024-01-19 02:04:01       31 阅读
  6. Django迁移数据到指定数据库

    2024-01-19 02:04:01       31 阅读
  7. 改善python程序的91建议记录(学习记录)

    2024-01-19 02:04:01       34 阅读
  8. CNCF之K8s外传

    2024-01-19 02:04:01       37 阅读
  9. 『力扣刷题本』:逆波兰表达式求值

    2024-01-19 02:04:01       38 阅读