Modbus学习笔记

1、Modbus通信协议介绍

1.1 概述

在计算机科学技术中, 许多繁杂的问题都可以通过分层来进行简化,通信协议可以划分为物理层和协议层, 物理层规定通讯中的电子功能特性, 协议层负责规定通讯逻辑。 国际标准化组织 I.S.O 在开放式系统互联参考模型中将网络系统结构规划为 7 层 ISO/OSI 模型。 Modbus 协议隶属于OSI 模型当中的第 7 层, 其与 OSI 模型对比如下图 所示。
Modbus学习笔记_第1张图片

1.2 硬件层:RS-485和RS-232

  • 我们常见的RS-232和RS-485是一种电平标准,数据在通信双方之间传输,这些物理信号在传输过程中会收到很多干扰,可能导致传输末端电平和初始电平差别过大,接收设备识别出错。此外,通信双方的参考电平可能并不一样。
  • RS232:电平标准:+3V~+15V对应0,-3V~-15V对应1
  • RS485:RS485是一种串口接口标准,为了长距离传输采用差分方式传输,传输的是差分信号,抗干扰能力比RS232强很多。两线压差为-2~-6V表示0,两线压差为+2-+6V表示1

1.3 软件层:RS-485和Modbus的联系

RS-485 电平标准确定传输过来的数据是 0 还是 1,在此基础上,这些字节数据根据 modbus 通信协议来进行数据的交互传输。

2、Modbus协议

2.1 Modbus协议优点

  • Modbus协议标准开放、公开发表且无版权要求;
  • Modbus协议支持多种电气接口,包括RS232、RS485、TCP/IP等,还可以在各种介质上传输,如双绞线、光纤、红外、无线等;
  • Modbus协议消息帧格式简单、紧凑、通俗易懂。用户理解和使用简单,厂商容易开发和集成,方便形成工业控制网络。
    Modbus协议是一种应用层报文传输协议,协议本身并没有定义物理层,定义了控制器能够认识和使用的消息结构,不管它们是经过何种网络进行通信的。

2.2 Modbus协议类型

Modbus通信协议是一种工业现场总线协议标准,常用的Modbus协议有以下三种类型:Modbus TCP、Modbus RTU、Modbus ASCll。

  • Modbus RTU:十六进制表示数据,带有循环冗余校验的校验和,CRC校验
  • Modbus ASCII:Ascii码表示数据,纵向冗余校验的校验和,LRC校验

2.3 Modbus-RTU协议结构

一个报文就是一帧数据,一个数据帧就一个报文:指的是一串完整的指令数据,本质就是一串数据。Modbus报文是指主机发送给从机的一帧数据,其中包含着从机的地址,主机想执行的操作,校验码等内容。

帧结构 = 从机地址 + 功能码 + 数据 + 校验

  • 从机地址:
    每个从机都有唯一地址,占用一个字节,范围0-255,其中有效范围是1-247,其中255是广播地址(广播就是对所有从机发送应答)
  • 功能码:
    占用一个字节,功能码的意义就是知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改从机的数据,所以不同功能码对应不同功能.
  • 数据:
    根据功能码不同,有不同功能,比方说功能码是查询从机的数据,这里就是查询数据的地址和查询字节数等。
  • 校验:在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。
    Modbus学习笔记_第2张图片Modbus功能码
    Modbus协议同时规定了二十几种功能码,但是常用的只有8种,用于对存储区的读写,如下表所示:
    Modbus学习笔记_第3张图片
    CRC校验
    CRC校验流程:
    1、预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
    2 、把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
    3、将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
    4 、如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
    5、重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。
    6 、重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。
    7、最终CRC寄存器的值就是CRC的值。

你可能感兴趣的:(学习,笔记)