Modbus和Modbus/TCP协议

时间:2024-04-09 12:39:32

一.  概述

        Modbus是MODICON公司与1979年开发的一种通讯协议,是一种工业现场总线协议标准。1996年施耐德公司推出了基于以太网TCP/IP的Modbus协议------ModbusTCP。

  Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构,而不管他们是经过何种网络进行通信的。

标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网口。采用Master/Slave(主/从)方式通信。

Modbus在2004年成为我国国家标准。

二.  协议规范

Modbus和Modbus/TCP协议

(1) Modbus应用协议

Modbus是一种简单客户机/服务器应用协议

      客户机能够向服务器发送请求;

      服务器分析请求,处理请求,向客户机发送应答。

(2)通用Modbus帧结构--协议数据单元(PDU)

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

Modbus和Modbus/TCP协议

(3)Modbus事务处理(无差错和异常响应)

当服务器对客户机响应时,它使用功能码来指示正常(无差错)响应或者出现某种差错(称为异常响应)。

对于一个正常响应来说,服务器仅复制原始功能码。

对于异常响应,服务器将原始功能码的最高有效位置1后返回,异常码指示差错类型。

(4)串行链路上的Modbus地址规则

Modbus寻址空间有256个不同地址

地址0为广播地址

Modbus主节点没有地址,子节点必须有唯一的地址

                0                  1-247               248-255
          广播地址        子节点单独地址                  保留

(5)串行链路上的Modbus帧结构

Modbus串行链路协议是一个主/从协议;

网络上的每个从站必须有唯一的地址;

从站地址用于寻址从站设备,由主站发起;

地址0用于广播模式,从站不需要响应;

RS485和RS232定义了标准的物理端口。

                            Modbus和Modbus/TCP协议

(6)两种Modbus串行传输模式

Modbus和Modbus/TCP协议

三.  ModbusTCP简介

ModbusTCP是运行在TCP/IP上的Modbus报文传输协议。通过此协议,控制器相互间通过网络(例如以太网)和其它设备之间通信。

ModbusTCP是开放的协议,IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP编口号为502,这是目前在仪表与自动化行业中唯一分配到的端口号

(1)ModbusTCP数据帧

Modbus和Modbus/TCP协议

(2)MBAP报文头

Modbus和Modbus/TCP协议

(3)通信应用层

Modbus客户机:允许用户应用控制与远程设备的信息交换。Modbus客户机根据用户应用向Modbus客户机接口的发送要求中所包含的参数来建立一个Modbus请求。

Modbus客户机接口:Modbus客户机接口提供一个接口,使得应用能够生成各类Modbus服务的请求,该服务包括对Modbus应用对象的访问。

Modbus服务器:在收到一个Modbus请求后,模块**一个本地操作进行读、写或完成其他操作。

(4)客户机通信过程如下

用Connect命令建立与目标设备的连接;

准备Modbus报文包括7个字节的MBAP在内的请求;

使用Send命令发送报文;

在同一连接下等待应答;

用Recv命令读取报文,完成一次数据交换过程。当通信任务结束时,关闭TCP连接,使ModbusTCP服务器可为其它客户机服务。