【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所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值