Modbus通信协议

1.协议描述

MODBUS协议是一种用于串行通信的工业自动化通信协议。该协议最初由Modicon(现在是施耐德电气的子公司)于1979年开发,以在可编程逻辑控制器(PLC)和其他自动化设备之间进行通信。 

MODBUS可以基于不同的物理层传输,如RS-232、RS-485、以太网等协议,并且支持不同的传输方式(RTU、ASCII、TCP等)。MODBUS所使用的主从架构(master-slave)使得多个设备可以同时连接到总线上。-=---1=1=---1--1-

MODBUS帧结构

MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的 MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。

2.MODUS构成

主要包含以下内容:

  1. 物理层:MODBUS协议最常用的物理层协议为RS-485,也支持RS-232等串口,以及TCP/IP协议应用于以太网通讯。MODBUS RTU在物理上采用标准RS-232或RS-485电气接口。

  2. 帧格式:MODBUS消息是一个由不同字段构成的报文。报文包括地址码、功能码、数据区、异常码或错误校验码等字段。多台设备通过单总线连接,地址码代表通讯的slave地址或broadcast地址。功能码表示请求或响应所需要的操作类型,CRC校验码用于检测传输错误。

  3. 功能码:MODBUS共定义了16种不同的功能码,各种功能码描述通讯的目的和字内存区域的读写方法,包括读写保持寄存器、读写输入寄存器、读写位状态等操作。

  4. 数据模型:数据区包括四种同数据模型(数据类型):

  • 线圈(coil)状态:指1个比特位可读可写的输入寄存器,表示ON/OFF状态;
  • 离散量输入状态(discrete input):指线圈的输入量,只能被读取不能被写入,如传感器是否触发等;
  • 保持寄存器(holding register):32位寄存器,可读可写;
  • 输入寄存器(input register):32位寄存器,只可读取。
字节123-45-nn+1-(n+2)
Field从站地址功能码数据域CRC校验结束符
Length11N/A2N/A

各个字段含义如下:

  • 从站地址:标识要发送或接收数据的设备,通常是一个0-247之间的整数。
  • 功能码:用于指示请求的类型和目的,同时决定了请求要读或写哪些寄存器或状态数据。注意,有些功能码只适用于读取某些数据,有些则适用于写入或读取等操作。
  • 数据域:包含特定功能码所需的传输数据(如参数、地址、读写数量等)。数据域长度(N)取决于具体功能码。例如,读/写寄存器的请求需要8字节的数据域:起始地址(Hi & Lo),寄存器数量 (Hi & Lo),共4个字节;数据段紧跟在后面。
  • CRC校验:循环冗余校验码,用于验证数据传输的完整性。
  • 结束符:通常为一对字节 0x0D 和 0x0A。
  • RTU 格式:采用异步串行通信方式,在物理层面上支持RS232、RS485等协议。传输速率在9600bps为标准(可以调节),数据位总是为8位。地址码、功能码、数据域和CRC检验都必须以1.5个字符时间的间隔来发送。
  • ASCII 格式:与RTU格式相似但在传输数据时使用ASCII字符集。每个字节用2个ASCII字符来表示,因此消息长度是RTU的2倍。通常通过RS232连接,并且不支持RS485等类型的物理接口。

 MODBUS协议是一个开放协议,其使用方便并且易于实现,因此在工业自动化和控制领域得到了广泛的应用。同时,许多提供MODBUS TCP/IP实现的软件和硬件产品可直接与其他系统进行集成,从而成为大型企业自动化和智能化生产的核心组成部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值