一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

一. 概述

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

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

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

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

二. 协议规范

(1) Modbus应用协议

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

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

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

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

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

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

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

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

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

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

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

  地址0为广播地址

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

01-247248-255
广播地址 子节点单独地址 保留
(5)串行链路上的Modbus帧结构

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

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

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

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

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

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

三. ModbusTCP简介

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

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

(1)ModbusTCP数据帧

(2)MBAP报文头

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

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

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

(4)客户机通信过程如下
  • 用Connect命令建立与目标设备的连接;

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

  • 使用Send命令发送报文;

  • 在同一连接下等待应答;

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

posted on 2024-03-01 15:27  一杯清酒邀明月  阅读(135)  评论(0编辑  收藏  举报