GB/Z 19582.1-2004
标准分类号
标准ICS号:机械制造>>25.040工业自动化系统
中标分类号:仪器、仪表>>工业自动化仪表与控制装置>>N10工业自动化与控制装置综合
出版信息
出版社:中国标准出版社
书号:155066.1-21772
页数:16开,页数:53, 字数:102千字
标准价格:22.0 元
计划单号:20031221-Z-604
出版日期:2004-11-08
相关单位信息
首发日期:2004-09-21
复审日期:2004-10-14
起草人:欧阳劲松、孙昕、刘铁推、冯晓升、王勇
起草单位:机械工业仪器仪表综合技术经济研究所
归口单位:全国工业过程测量和控制标准化技术委员会
提出单位:中国机械工业联合会
发布部门:中华人民共和国国家质量监督检验检疫总局 中国国家标准化管理委员会
主管部门:中国机械工业联合会
标准简介
本指导性技术文件包括两个通信规程中使用的Modbus应用层协议和服务规范——串行链路上的ModbusModbus串行链路基于TIA/EIA标准:232-F和485-A。——TCP/IP上的ModbusModbusTCP/IP基于IETF文件:RFC 793和RFC 79l。串行链路和TCP/IP上的Modbus是根据相应ISO分层模型说明的两个通信规程。下图强调指出了本指导性技术文件的主要部分。深色方框表示规范,浅色方框表示已有的国际标准(TIA/EIA和IETF标准)。 GB/Z 19582.1-2004 基于Modbus协议的工业自动化网络规范 第1部分:Modbus应用协议 GB/Z19582.1-2004 标准下载解压密码:www.bzxz.net
标准内容
ICS25.040
中华人民共和国国家标准化指导性技术文件GB/Z19582.1-2004
基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议
Modbus industrial automation network specification-Part 1 : Modbus application protocol2004-09-21发布
中华人民共和国国家质量监督检验检疫总局中国国家标准化管理委员会
2005-03-01实施
GB/Z19582.1—2004
规范性引用文件
缩略语
背景概要
总体描述
协议描述
数据编码
Modbus数据模型
Modbus寻址模型
5.5Modbus事务处理的定义
6功能码分类
6.1公共功能码定义
7功能码描述
7.101(0x01)读线圈
7.202(0x02)读离散量输入
7.303(0x03)读保持寄存器
7.404(0x04)读输人寄存器
7.505(0x05)写单个线圈
7.606(0x06)写单个寄存器
07(0x07)读异常状态(仅用于串行链路)7.8080x08)诊断(仅用于串行链路)7.9
11(0x0B)获得通信事件计数器(仅用于串行链路)12(0x0C)获得通信事件记录(仅用于串行链路)15(0x0F)写多个线圈
16(0x10)写多个寄存器
17(0x11)报告从站ID(仅用于串行链路):20/6(0x14/0x06)读文件记录
21/6(0x15/0x06)写文件记录
22(0x16)屏蔽写寄存器
23(0x17)读/写多个寄存器
24(0x18)读FIFO队列
43(0x2B)封装接口传输
43/14(0x2B/0x0E)读设备标识7.20
8Modbus异常响应
附录A(资料性附录)参考文献
GB/Z19582.1--2004
本指导性技术文件包括两个通信规程中使用的Modbus应用层协议和服务规范:串行链路上的Modbus
Modbus串行链路基于TIA/EIA标准:232-F和485-A。-TCP/IP上的Modbus
ModbusTCP/IP基于IETF文件:RFC793和RFC791串行链路和TCP/IP上的Modbus是根据相应ISO分层模型说明的两个通信规程。下图强调指出了本指导性技术文件的主要部分。深色方框表示规范,浅色方框表示已有的国际标准(TIA/EIA和IETF标准)。
Modbus
应用协议
Modbus协议
在单行链路
上的实现指
TIA/EIA-232-FTTAEIA-485-A
基于Modbus协议的工业自动化网络规范分为三部分。第1部分:Modbus应用协议
第2部分:Modbus协议在串行链路上的实现指南-第3部分:Modbus协议在TCP/IP上的实现指南以太网物理层
Moabus协议
在TCPIPE
的实现指南
第1部分描述了Modbus事务处理;第2部分提供了个有助于开发者实现串行链路上的Modbus应用层的参考信息;第3部分提供了个有助于开发者实现TCP/IP上的Modbus应用层的参考信息。本部分的附录A是资料性附录。
本部分由中国机械工业联合会提出本部分由全国工业过程测量和控制标准化技术委员会归口。本部分起草单位:机械工业仪器仪表综合技术经济研究所、北京交通大学现代通信研究所、上海自动化仪表股份有限公司、施耐德电气(中国)投资有限公司、冶金工业钢铁研究总院、宝钢集团上海宝信软件股份有限公司。
本部分主要起草人:欧阳劲松、孙昕、刘铁椎、冯晓升、王勇、张荣生、丛力群、段永康。1
1范围
GB/Z19582.1—2004
基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议
Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信,见图1。从1979年开始,Modbus作为工业串行链路的事实标准,Modbus使成千上万的自动化设备能够通信。目前,对简单而精致的Modbus结构的支持仍在增长。互联网用户能够使用TCP/IP栈上的保留系统端日5o2访问Modbus。
Modbus是一个请求/应答协议,并且提供功能码规定的服务。Modbus功能码是Modbus请求/应答PDU的元素。本部分描述了Modbus事务处理框架内使用的功能码。Modbus是~种应用层报文传输协议,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。
目前,通过下列方式实现Modbus通信:以太网上的TCP/IP。
各种介质(有线:EIA/TIA-232-F、EIA-422、EIA/TIA-485-A;光纤、无线等等)上的异步串行传输。
-ModbusPLUS,一种高速令牌传递网络。Modbus应用层
于TCP的Modbu
2规范性引用文件
MODBUS-HDLC
物理层
主站/从站
EIA/TA-232或
BLA/TIA-485
图1Modbus通信栈
Ethernet118023
以太网
榜理层
下列文件中的条款通过GB/Z19582本部分的引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。
GB/T15969可编程序控制器
RFC791,InternetProtocol,Sep81DARPA**参考文献[1]。
GB/Z19582.1-2004
3缩略语
ADU(ApplicationData Unit)
HDLC(High Level Data link control)HMI(Human Manchine Interface)IETF(Internet Engineering Task Force)I/O(Input/Output)
IP(Internet Protocol)
LSB(Least Significant Bit)
MAC(Medium Access Control)
MB(Modbus Protocol)
MBAP(MODBUS Application Protocol)MEI(MODBUS Encapslated Interface)MSB(Most Significant Bit)
PDU(Protocol Data Unit)
PLC(Programmable Logic Controller)RFC(RequestFor Comment)
TCP(Transport Control Protocol)4背景概要
应用数据单元
高级数据链路控制
人机界面
互联网工程工作组
输人/输出
互联网协议
最低有效位
介质访问控制
Modbus协议
Modbus应用协议
Modbus封装接口
最高有效位
协议数据单元
可编程逻辑控制器
请求评注
传输控制协议
Modbus协议可以方便地在各种网络体系结构内进行通信,见图2。M
变赖器
基于MB+
的Modbus
基于TCP/IP的Mc
基于RS232
的Modbus
基于RS485
的Modbus
图2Modbus网络体系结构的实例
每种设备(PLC、HMI、控制面板、变频器、运动控制、I/O设备...)都能使用Modbus协议来启动远程操作。
同样的通信能够在基于串行链路和以太网TCP/IP网络上进行。网关能够实现在各种使用Modbus协议的总线或网络之间的通信。2
5总体描述
5.1协议描述
GB/Z19582.12004
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引人一些附加域,见图3。ADU
附加地组
功能码
图3通用Modbus顿
差校验
启动Modbus事务处理的客户机创建Modbus应用数据单元。功能码向服务器指示将执行哪种操作。Modbus协议建立了客户机启动的请求格式。用个字节编码Modbus数据单元的功能码域。有效的码字范围是十进制1~255(128~255为异常响应保留)。当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。向一些功能码加入子功能码来定义多项操作。从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。这个域还包括离散量和寄存器地址、处理的项目数量以及域中的实际数据字节数。在某种请求中,数据域可以是不存在的(0长度),在此情况下服务器不需要任何附加信息。功能码仅说明操作。
如果在一个正确接收的ModbusADU中,不出现与所请求的Modbus功能有关的差错,那么服务器至客户机的响应数据域包括所请求的数据。如果出现与所请求的Modbus功能有关的差错,那么该域包括一个异常码,服务器应用能够使用这个域确定下一个执行的操作。例如,客户机能够读一组离散量输出或输入的开/关状态,或者客户机能够读/写一组寄存器的数据内容。
当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应(见图4)或者出现某种差错(称为异常响应),见图5。对于一个正常响应来说,服务器仅复制原始功能码。客户机
启动请求
功能码数据请求
接收响应
服务器
执行操作
启动确应
功能码数据响应
图4Modbus事务处理(无差错)
对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回。3
GB/Z19582.1-2004
启动请求
功能码
客户机
鑫教据精求
接收响应
服务器
在操作中检测差错
启动差错
异常功能码
身带码
图5Modbus事务处理(异常响应)注:需要超时管理,以避免无限期地等待可能不会出现的应答。Modbus最初在串行链路上的实现(最大RS485ADU=256字节)限制了ModbusPDU的长度。因此,对串行链路通信来说,ModbusPDU二256一服务器地址(1字节)一CRC(2字节)=253字节。
从而:
RS232/RS485ADU=253字节+服务器地址(1字节)+CRC(2字节)=256字节。TCPModbusADU=253字节+MBAP(7字节)=260字节。Modbus协议定义了三种PDU。它们是:-Modbus请求PDU,mb_req-pdu;-Modbus响应PDU,mb_rsp-pdu;
Modbus异常响应PDU,mb_excep_rsp_pdu。定义mb_req_pdu为:
mb_req_pdu=(function_code,request_data),其中function_code:[1字节]Modbus功能码request_data:[n字节],这个域与功能码有关,并且通常包括诸如参考变量、变量计数、数据偏移量、子功能码等信息。
定义mb_rsp_pdu为:
mb_rsp-pdu=(function_code,response_data),其中function_code:[1字节]Modbus功能码。response_data:[n字节],这个域与功能码有关,并且通常包括诸如参考变量、变量计数、数据偏移量、子功能码等信息。
定义mb_excep_rsp_pdu为:
mb_excep_rsp_pdu={function_code,request_data),其中function_code:[1字节JModbus功能码+0x80。exception_code:[1字节],在第7章中定义了Modbus异常码。5.2数据编码
Modbus使用最高有效字节在低地址存储的方式表示地址和数据项。这意味着当发送多个字节时,首先发送最高有效字节。例如:寄存器大小
0x1234
注:更详细的信息参见[1]。
5.3Modbus数据模型
发送的第一字节为
然后0x34
Modbus的数据模型是以一组具有不同特征的表为基础建立的。4个基本表见表1:4
基本表
离散量输人
输人寄存器
保持寄存器
对象类型
单个位
单个位
16位字
16位字
访问类型
GB/Z19582.1—2004
1/O系统可提供这种类型数据
通过应用程序可改变这种类型数据I/O系统可提供这种类型数据
通过应用程序可改变这种类型数据输人与输出之问以及位寻址的和字寻址的数据项之间的区别并不意味着应用特性的差别。如果所有4个表相互覆盖是对该目标机器最自然的解释,也是完全可接受的,而且很普遍。对于每个基本表,协议都允许单个地选择65536个数据项,而且其读写操作被设计为可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。很显然,必须将Modbus处理的所有数据(位,寄存器)放置在设备应用存储器中。但是,存储器的物理地址不应该与寄存器编号混淆。仅要求将寄存器编号与物理地址链接。Modbus功能码中使用的Modbus寄存器逻辑编号是以0开始的无符号整数索引。-Modbus模型实现的实例
下列实例表示了两种在设备中组织数据的方法。有多种组织数据的方法,在本部分中没有被全部描述。每个设备根据其应用都有它自已的组织数据的方法。实例1:有4个独立块的设备
图6表示了含有数字量和模拟量、输人量和输出量的设备中的数据组织。由于不同块中的数据不相关,每个块是相互独立的。可通过不同Modbus功能码访问每个块。设备应用存储器
Modbus访间
输入离散量
输入寄存器
保持寄存器
Modbus服务器设备
Modbus请求
图6带有独立块的Modbus数据模型实例2:仅有1个块的设备
图7实例中,设备仅有1个数据块。通过几个Modbus功能码能够得到相同数据,既可通过16位访问也可通过1位访问。
GB/7.19582.1—2004
5.4Modbus寻址模型
设备应用存储器
Modbus服务器设备
odhus访间
输入离散量
输入寄存器
保持寄存器
图7仅带有1个块的Modhus数据模型Modbus应用协议精确地定义了PDU寻址规则。在MUDBUSPDU中,从0~65535寻址每个数据。Modbus请求
Modbus应用协议还明确地定义了由4个块构成的Modbus数据协议,每个块由几个编号为1~n的元素构成。
在Modbus数据模型中,从1~n编号数据块中的每个元素。然后,必须将Modbus模型与设备应用结合(GB/T15969)。Modbus数据模型和设备应用之间的映射完全与特定设备相关。设备应用
特定应用
Modbus数据模型
离散输入
输入寄存器2
保持寄存器Www.bzxZ.net
ModbusPDU地址
读输入0
读线圈4
读寄存器卫
读寄存器54
Modbus标准
图8Modbus寻址映射
图8表示了用ModbusPDU的X-1寻址编号为X的Modbus数据。5.5Modbus事务处理的定义
图9是状态图,描述了在服务器侧Modbus事务处理的一般处理过程。6
发送Modbus
异常响应
等待MB的
异常码。
异常码_2
异常码
异常码_456
接收MB指示】
有效的功能码
【有效】
有效的数据
[无效]
[有效]
有效的数据值
[有效
(执行MB功能
[无效]
{有效了
发送Modbus
图9Modbus事务处理的状态图
GB/Z19582.1--2004
一旦服务器处理请求,使用合适的Modbus服务器事务处理建立Modbus响应。根据处理结果,可以建立两种类型响应:个正常的Modbus响应:响应功能码=请求功能码。个异常的Modbus响应(见第8章):1)用来为客户机提供处理过程中与所发现的差错相关的信息;2)异常功能码=请求功能码十0x80;提供一个异常码来指示差错原因。3)
6功能码分类
有三类Modbus功能码,见图10。它们是:公共功能码
1)被确切定义的功能码;
保证是唯一的;
由Modbus.org确认的;
公开的文档:
可进行一致性测试;
在MBIETFRFC中归档;
包含已被定义的公共功能码和保留给未来使用的功能码。7)
-用户定义的功能码
有两个用户定义功能码的区域,即十进制的65~72和100~110。1)
用户无需Modbus组织的任何批准就可以选择和实现一个功能码。2)
不能保证被选功能码的使用是唯一的。3)
如果用户希望将某种功能设置为个公共功能码,那么用户必须启动RFC,以便将改变4)
引人公共分类中,并且指配个新的公共功能码。保留功能码
某些公司在传统产品上现行使用的功能码,不作为公共使用。7
GB/Z19582.12004
公共功能码
用户定义的功能码
公共功能码
用广定文的功能妈
公共功能码
图10Modbus功能码分类
注:在功能码的公共区域中,可以保留一些功能码,6.1公共功能码定义
见表2。
物理离散量输人
比特访问
内部比特或物理线圈
16比特访问
输人寄存器
内部存储器或物理输出存
文件记录访问
读离散量输入
读线圈
写单个线圜
写多个线圈
读输人寄存器
读多个寄存器
写单个寄存器
写多个寄存器
读/写多个寄存器
屏蔽写寄存器
读FIFO队列
读文件记录
写文件记录
读异常状态
获得公用事件计数器
获得公用事件记录
报告从站ID
读设备识别码
封装接口传输
功能码
(十六进制)
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。