• 【Modbus通讯】记粤西某电厂DCS通讯调试(基础篇)


    一、 简介

    Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。

    二、 两种协议数据帧的区别

    Modbus Rtu的数据帧ADU包含:附加地址、功能码、数据、差错校验。而Modbus TCP的数据帧由MBAP、PDU两大部分组成。两种格式的对比及组成如下图所示:
    在这里插入图片描述

    2.1. 应用数据单元ADU

    Modbus Rtu通讯的数据单元包含附加地址(设备地址)、功能码、数据、差错校验。其完整的数据包如下图所示:

    在这里插入图片描述

    2.2. 报文头MBAP

    MBAP为报文头,长度为7字节:
    在这里插入图片描述
    在这里插入图片描述

    2.3. 帧结构PDU

    PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。Modbus中常用的功能码有8个,可分为位操作和字操作两类,如下表所示:
    在这里插入图片描述

    三、 Modbus通信方式

    Modbus设备可分为主站(poll)和从站(slave)。主站只有一个,从站有多个,主站向各从站发送请求帧,从站给予响应。在使用TCP通信时,主站为Client端,主动建立连接;从站为Server端,等待连接。整个通讯过程中,只有主站可以发起数据传输要求,而从站不能主动发起请求只能被动响应。

    主站请求:功能码+数据
    从站正常响应:请求功能码+响应数据
    从站异常响应:异常功能码+异常码,其中异常功能码即将请求功能码的最高有效位置1,异常码指示差错类型
    注意:需要超时管理机制,避免无期限的等待可能不出现的应答IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP端口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号。

    四、 通信详解

    下面以最长见的功能码03H(读单个/多个保持寄存器)、10H(写多个保持寄存器)为例,详细分解一下Modbus Rtu通信报文,以加深理解。

    4.1. 读保持寄存器——03H

    功能码03H读取Modbus从机中保持寄存器的数据,可以是单个寄存器,或者多个连续的寄存器。
    1) 发送
    假设从机地址为01H,读取的保持寄存器的起始地址为006BH,读取3个寄存器,指令如表4.1-1所示:
    在这里插入图片描述

    2) 响应
    每个保持寄存器的长度为2个字节。保持寄存器之间,低地址寄存器先传输,高地址寄存器后传输。单个保持寄存器,高字节数据先传输,低字节数据后传输,表4.1-2读保持寄存器的返回结果:
    在这里插入图片描述

    4.2. 写多个保持寄存器——10H

    功能码10H写多个保持寄存器,其中每个保持寄存器的长度为两个字节。
    1) 发送
    假设从机地址为01H,保持寄存器的起始地址为0001H,写入2个寄存器,指令如表4.2-1所示:
    在这里插入图片描述

    2) 响应
    如果写入成功,返回写入的寄存器数量,如表4.2-2所示:

    在这里插入图片描述

  • 相关阅读:
    MySQL LIKE BINARY 和 LIKE 模糊查询
    (三十)大数据实战——HBase集成部署安装Phoenix
    chrome历史版本下载
    Java类的主动加载和被动加载
    Mysql数据库 9.SQL语言 查询语句 连接查询、子查询
    开箱机对纸箱的3点要求
    SpringBoot-30-shrio介绍、结构和快速实践
    JavaWeb基础10——VUE&Element&整合Javaweb的商品管理系统
    Buuctf——[RCTF2015]EasySQL
    网页布局常用的8种布局方式
  • 原文地址:https://blog.csdn.net/hualinger/article/details/126837806