串行通信 - Modbus协议

这篇具有很好参考价值的文章主要介绍了串行通信 - Modbus协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Modbus协议采用的是主-从通信模式。
Modbus协议主要有Modbus RTU、Modbus ASCII和Modbus TCP三种。前两者均支持RS-485总线协议。其中RTU采用二进制数据表达形式、数据结构紧凑,通信效率高,应用广泛。


Modbus的三种传输模式
ASCII模式:数据中每8bit的字节作为一个ASCII码发送。字符发送的时间间隔可达到1s,不产生错误。
RTU模式:以RTU(远程终端单元)模式通信,每8bit的字节都包含两个4bit的十六进制字符。传输数据比ASCII模式更多。
TCP模式:用于通过以太网或互联网来连接和传输 数据,由于互联网遵循的是TCP/IP模式。
Modbus模式未必是串行通信所用,也可以是TCP/IP通信。


ASCII模式与RTU模式的区别
ASCII模式数据位数为7位,RTU模式为8位。
ASCII模式采用LRC(纵向冗余校验)的错误校验方法,RTU使用CRC(循环冗余校验)方法。
ASCII模式发送字符的间隔可以达到1s,以适用不同速率的设备,RTU模式必须以连续数据流形式传输。

ASCII模式每个字节的位:1位起始位,7位数据位,最低有效位先发送;1位奇偶校验位,1位停止位;
RTU模式:1位起始位,8位数据位,最低有效位先发送;1位奇偶校验位,1位停止位;


常用的通信模式(9600,N,8,1)是一个字节的传输协议;
Modbus协议是如何用串口一次连续传输多个字节的协议,它规定了一次发送多少个字节,以及字节顺序如何排列。
Modbus协议定义了校验码、数据序列等,即定义了特定数据交换的必要内容。通信时,主机的信号寻址到一台特定地址的终端设备,然后终端设备发出的应答信号以相反的方向传输给主机。


主-从技术
主设备(Master)能初始化传输,从机(Slave)根据主设备查询提供的数据做出相应的回应。
Modbus协议建立的主控制器查询的格式是:设备地址码,功能码,要发送的数据,错误检测域。
从机回应协议包含要行动的域,要返回的值和错误检测域。
传输设备将Modbus消息转为有起点和终点的帧,使接收的设备在消息起始处开始工作,读地址分配信息,判断哪个设备被选中,判断何时消息被完成,侦测到部分消息的错误并且返回


查询-回应周期
查询:查询消息中功能码告知被选中的从机将要执行的功能,数据段包含从设备要执行功能的所有附加消息。
回应:数据段包含了从设备收集的数据,比如寄存器值或状态。如果有错误发生,功能码用于指出回应消息是错误都,同时数据段包含了描述此错误信息的代码。


ASCII消息帧与RTU消息帧
ASCII模式消息以冒号":"开始,以回车、换行符结束。总线上设备的不断检测冒号,当接收到冒号后,从机设备解码判断消息对象是否为自己。

RTU模式下消息的发送至少要以3.5个字符时间的停顿间隔开始,传输的第一个域为设备地址,在最后一个传输字符之后,一个至少3.5字符时间的停顿标定了消息的结束。
整个消息帧必须作为连续流传输,在完成之前如有1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定停顿时间后收到的字节是一个新消息的地址域。
若两消息帧的停顿时间小于3.5个字符时间,则认为后一段消息是前一段消息的延续。
串行通信 - Modbus协议

功能域
包含8位bit,部分功能适用于所有控制器,有些则应用于某种控制器,比如读取输入段的状态、读取寄存器的内容等等。
从机回应时,使用功能码来指示是否正常,或错误,出现错误时返回功能码的低位置1.从设备还可以将独特的代码放到回应消息的数据域中,告诉主机具体出现了什么类型的错误。

举例 主机发送功能域位03H,从机异议回应为83H.

数据域
数据域由2个十六进制数集合而成,包含从设备需要执行的行为的具体参数。如果主设备准备写一组从设备的寄存器,数据域则指明了要写的起始寄存器以及要写的寄存器数量,字节数,要写数据。

数据域可以是不存在的,例如从机回应通信应答。

错误检测域

==ASCII-LRC纵向冗余检测:==将每个字节的所有位相加得出一个校验和,并在传输结束后将校验和发送给接收方进行验证。

LRC校验可以检测传输过程中出现的单比特差错和某些双比特差错,但并不能检测出所有错误,因为多个错误可能会互相抵消。此外,LRC校验也无法纠正错误,只能检测错误是否存在。

==RTU-CRC循环冗余检测:==通过在数据传输前计算出一个校验码,并将其添加到数据末尾,来保证数据传输的准确性。这个校验码可以被接收方用来检测是否存在数据损坏或传输错误。


Modbus 以帧的方式传输,每帧有确定的起始位和结束位,使接收设备在信息的起始位开始读地址,并确定要寻址的设备,以及信息传输的结束时间。RTU 模式中,信息开始至少需要有 3.5 个字符的停顿时间,依据使用的波特率,很容易计算停顿时间。

各个域允许发送的字符均为十六进制。Modbus 网络上的设备连续监测网络上的信息,包括停顿时间。当接收第一个地址数据时,每台设备立即对它解码,以决定是不是自己的地址。发送完最后一个字符后,也有一个至少 3.5 个字符的停顿时间,然后才能发送一个新的信息。整个信息必须连续发送。如果在发送信息帧期间,出现大于 1.5 个字符的停顿时间,则接收设备刷新不完整的信息,并进行下一个地址数据接收。主设备把从设备的地址放入信息帧的设备地址域,并向从设备寻址。从设备响应时,把自己的地址放入响应信息的设备地址域,让主设备识别已做出响应的从设备地址。地址 0用于广播地址,所有从设备均能识别。

接在设备地址后面的就是功能码,接在功能码的后面是数据域。数据域有 2个十六进制的数据,数据范围为 00FF(十六进制)。主设备向从设备发送的数据中包含了从机执行主设备功能码中规定的请求动作,如逻辑线圈地址、处理对象的数目,以及实际的数据字节数等。

接在数据域后面的是校验域(CRC 校验)。CRC 校验有 2个字节,包含一个 16 位的值(2个8 位字节),它由发送设备计算后加入消息中。接收设备重新计算收到消息的 CRC 值,并与接收到的 CRC 值进行比较,如果两值不同,则有误。


TCP和RTU协议非常相似,只要在RTU协议的开始加上五个“00”和1个“06”,然后把RTU协议的最后两个字节的校验码去掉,通过TCP\IP网络发送出来即可。

TCP是面向可靠连接的,不存在所谓的地址码


HART下回学文章来源地址https://www.toymoban.com/news/detail-488170.html

到了这里,关于串行通信 - Modbus协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Modbus通信协议+Modbus串口调试工具+Java版协议解析源码

    网络与串口二合一调试助手TCPCOM: https://download.csdn.net/download/liuyuan_java/87454762 Modbus调试工具,模拟串口调试工具 https://download.csdn.net/download/liuyuan_java/87427475 Configure Virtual Serial Port Driver (VSPD) 串口模拟工具 https://download.csdn.net/download/liuyuan_java/87426831 Java实现DL/T645-2007协议报文的

    2024年02月03日
    浏览(77)
  • 串行通信协议(I2C、SPI、UART、SCCB、CAN)

    推荐一部书,在这本书里面介绍了I2C、SPI、UART和CAN等通信协议,写的蛮不错的。 串行通信 :设备与设备之间,传输数据按顺序依次1bit位接1bit位进行传输。 并行通信 :设备与设备之间,通过多条传输线,可以同时传输多个bit位的信号。 1.简单的双向两线制总线协议标准、半

    2024年02月14日
    浏览(65)
  • Modbus TCP通信协议详解

    一、Modbus TCP通信概述 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的

    2024年02月08日
    浏览(160)
  • 详解 Modbus 通信协议(清晰易懂)

    已剪辑自: https://mp.weixin.qq.com/s/dvo1l1GgJ2DtIHnPK5E1tA 本文总结关于 Modbus 相关的知识,浅显易懂,旨在对 Modbus 有一个很直观的了解。如有错误,欢迎修改意见和建议。 什么是协议 在了解什么是Modbus之前,我们先来看下什么是协议。 协议是一个汉语词汇,读音为xié yì,意思是共

    2024年02月02日
    浏览(70)
  • 详解Modbus通信协议---清晰易懂

    本文旨在让您对Modbus有一个很直观的了解,总结关于Modbus相关的知识,非常适合初学的同学,同时如有错误,欢迎修改意见和建议,将在第一时间修改 什么是协议 在了解什么是Modbus之前,我们先来看下 什么是 协议 协议是一个汉语词汇,读音为xié yì,意思是 共同计议,协

    2024年02月03日
    浏览(46)
  • 嵌入式通信协议【Modbus】Modbus TCP的帧格式

    Client request:例: 19 B2 00 00 00 06 06 03 00 27 00 02 上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle); 19 B2 00 00 00 06 19 B2  00 00 00 06 两个Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位

    2024年02月05日
    浏览(85)
  • RS-485通信协议(ModBus版)

    从机(设备)的通信参数 波特率 2400~115200bps,出厂默认9600bps。 数据位 7~9位,出厂默认8位。 停止位 1~2位,出厂默认1位。 奇偶校验 无校验,奇校验,偶校验。 RS485 ModBus 通信格式 主机向485总线发送问询数据帧 地址码 功能码 寄存器起始地址 寄存器长度 校验码低8位 校验码

    2024年02月07日
    浏览(45)
  • Modbus协议详解2:通信方式、地址规则、主从机通信状态

    首先我们要清楚:Modbus是一种串行链路上的主从协议,在通信线路上只能有一个主机存在,不会有多主机存在的情况。虽然主机只有一个,但是从机是可以有多个的。 Modbus的通信过程都是由主机发起的,从机在接收到主机的请求后再进行响应,从机不会主动进行数据的发送。

    2024年02月09日
    浏览(46)
  • Modbus通信协议介绍以及Modbus Poll、Slave软件使用介绍

    Modbus Slave是一个模拟Modbus协议从机的上位机软件,主要用于模拟测试跟其他主机设备通信的过程。与之成套存在的另一个软件--Modbus Poll,则是模拟Modbus协议主机的上位机软件。该软件内部封装Modbus协议,通过图形化界面使得操作更为简单。软件支持ModbusRTU、ASCII、TCP/IP协议。

    2024年02月09日
    浏览(47)
  • C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理

    Modbus ASCII是串行链路上的协议,也就是说ModbusASCII是通过串口通信来实现的,它可以通过RS232、RS485物理层的接口来实现,同时它也是一个主从协议,在同一时间总线上只能有一个主站和一个或多个(最多247)个从站。Modbus通信总是由主站发起,从站没有接收到主站的请求时不

    2024年02月15日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包