GB Z 19582.3-2004 基于Modbus协议的工业自动化网络规范 第3部分;Modbus协议在TCP IP上的实现指南.pdf
《GB Z 19582.3-2004 基于Modbus协议的工业自动化网络规范 第3部分;Modbus协议在TCP IP上的实现指南.pdf》由会员分享,可在线阅读,更多相关《GB Z 19582.3-2004 基于Modbus协议的工业自动化网络规范 第3部分;Modbus协议在TCP IP上的实现指南.pdf(37页珍藏版)》请在麦多课文档分享上搜索。
1、ICS 25.040 N 10 韭/、五H王导G/Z 19582.3 2004 于Modbus、工业3 部!Modbus 现匕曰IP Modbus industrial automation network specification Part 3: Modbus protocol implementation guide over TCP /IP 2004-09-21发布2005-03-01实施中华人民共和国国家质量监督检验检菇总局中国国家标准化管理委员会发布GB/Z 19582.3-2004 目次前言. . . . . . . . . . . . . . . . . . . . . . I
2、II 1 范围2 客户机/服务器模型. . 3 规范性引用文件. . . 2 4 缩略语. . . . 2 5 背景概要25. 1 协议描述. . 2 5.2 Modbus功能码描述.4 6 功能描述. . . . ,. . . . . . . . . . . . . . . . . . . . . 4 6.1 Modbus组件结构模型. 4 6.2 TCP连按管理. 6 6.3 TCP/IP校的使用. . 10 6. 4 通信应用层137 实现指南. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 7.1 对象模型图. .
3、 . 22 7.2 实现类的图. . 26 7.3 序列图. 27 7.4 类和方法的描述30I GB/Z 19582.3-2004 前言本指导性技术文件包括两个通信规程中使用的Modbus应用层协议和服务规范z申行链路上的ModbusModbus串行链跻黎于TIA/EIA标准:232-F和485-AoTCP/IP上的ModbusModbus TCP/IP基于IETF文件:RFC793和RFC791。串行链路和TCP/IP上的Modbus是根据相应ISO分层模型说明的两个通信规程。下图强调指出了本指导性技术文件的主要部分.深色方框表示规范,浅色方杠表示已有的国际标准(TIA!EIA和IETF标
4、准入Modb旧L应用协且规植但如MQdbus协议在TCplP上的实现指南; ,-时叫U5SfJi!司、lCPI!P fElF RFC 793古4Modbus协1(在邸行键路1: tIJ现指南4 3 IP IETF RFC 791 出tH在路J:i的f,始耳忡.,.iI,If.W巾咱宫,飞飞J扩悄地在尺I:tt:rn:叫JUS02.3吨I K建导lEleozJ 一=_ ,0 , ,-叩5号吨-,;-峰回.曰:二布平、p4 :J 以太间物理tllIA/EIA.23Z.P T1AiEIA唰485.A基于Modbus协议的工业自动化网络规范分为三部分。第1部分:Modbus应用协议一一第2部分:Mod
5、bus协议在串行链路上的实现指南第3部分:Modbus协议在TCP!IP上的实现指南第1部分描述了Modbus事务处理;第2部分提供了一个有助于开发者实现申行链路上的Modbus应用层的参考信息;第3部分提供了一个有助于开发者实现TCP!IP上的Modbus应用层的参考信息。本部分由中国机械工业联合会提出。本部分由全国工业过程测盐和控制标准化技术委员会归口.本部分起草单位g饥械工业仪器仪表综合技术经济研究所、北京交通大学现代通信研究所、上海白动化仪表股份有限公司、施耐德也气(中国)投资有限公司、冶金工业钢铁研究总院、宝钢集团上海宝信软件股份有限公司。本部分主要起草人z欧阳劲松、孙昕、为jf)i
6、椎、冯晓升、王勇、张荣生、丛力群、段7l,;,客户铲二!j Mddhn辍捕; ; 一玉二之二二二在工工乙:二年户一一二:.二二千-44二一一一理自民自用E毛一一也词; 丁CP!f理犀fA4吁严ii!甘 i it t二二:11:-_-. - .,.,._.,-一百二T一一呈十小资跟管理,一, 由如,.!i 在!制TCP/ll扭一一一二一- 4号一Modbus报文传输服务概念结构回54 飞基本表离散E输人线圈输入寄存器保持寄存器6. 1. 1 通信应用层G/Z 19582.3-2004 世岳应用存储器Modbus由问=斗输入高散量线回Modbus请求输入寄存器;7 F 川输出宵存器Modbus服鼻
7、器世岳图6独立敬据块的Modbus数据模型世岳应用在储器Modbus由问11024) 502 连挂(IPI n , IP2 502) 图9l1odbus TCP /IP连接建立世岳IP2 客户机(,1024) 端口502 JIH号器喘口如果客户机与服务嚣的连接数量大于授权的连接数量,则最早建立的无用的连接被关闭。激活访问控制机制用来检查远程客户机的IP地址是否是经过授权的。如果未经授权,将拒绝新的连接.一一Modbu5数据传送一个Modbu5请求必须在已经被打开的正确的TCP连接上发送,远程设备的IP地址用于寻找所建立的TCP连接。在与同一个远程设备建立多个连接时,必须选择其中一个连接用于发送
8、Modbus报文,可以采取不同的选择策略,例如2最早的连接、第一个连接。在Modbus通信的全过程中,连接必须始终保持打开.一个客户机可以向一个服务器启动多个事务处理,而不必等待先前的事物处理结束.一一连接关闭当客户机与服务器间的Modbus通信结束时.客户机必须关闭用于通信的连接8 4 、阳, G/Z 19582.3-2004 6.2.2 操作模式对TCP连接的影响某些操作模式(两操作端点之间通信断开、一个端点的故障和重新启动)会对TCP连接产生影响。在没有接收到来自另侧的确认时,一个连接可被视为关闭或异常终止,称这种连接为半打开的连接。本章描述各种主要操作校式的特性。这种描述基于在连接的两
9、端采用了保持连接TCP机制的假设(见6.3.2)。6. 2. 2. 1 两操作揣之间通信断开illi信断开的原因可以是服务器侧以太网连拨电缆断开。预期的特性是z一一如果在连接上没有正在发送数据包:如果通信断开持续的时间短于保持连接计时器的值,将察觉不到通信断开。如果通信断开时间超过保持连接计时器的值,将一个错误返回到TCP连接层,由其复位连接。如果在连接断开的前后发送一些数据包TCP重新传输算法(Jacobgon 1):法、Karn1):法以及指数补偿算法,参见6.3.2)被激活。这可以导致在保持连接计时1I终止之前由钱的TCP层复位连接.6.2.2.2 服务器端的故障和重新启动在服务器故附和
10、重新启动以后,客户机端处于半打开连接状态。预期的特性是g如果在半打开的连接上没有发送数据包z只要保持连按计时器还在计时中,从客户机揣着,连接是半打开的。之后,将返回一个错误到TCP 管理层,由其复位连接。如果在半打开的连接上发送一些数据包z服务挤在不再存在的连接上接收数据。校的TCP层发送一个复位指令来关闭客户机端的半打开的连接。6.2.2.3 客户机端的故障和重新启动在客户机故陈和重新启动以后,服务ll侧处于半打开连按状态。预期的特性是如果在半打开的连按上没有发送数据包只要保持这按计时器还在计时中,从服务器端着.这种TCP半打开连接被认为是打开的。之后,将返回一个错误到该TCP管理层,由其复
11、位连接。一一如果在保持连接计时器完成计时前,客户机打开一个新的连接z必须分析两种情况21 )所打开的连接与服务侧半打开的连接具有相同的特性(相同的源和目的端口、相同的源和目的lP地址),所以,在连接建立超时后(伯克利实现的多数的况下为75mg) , TCP校后将不能打开连接。为了避免在较长超时时间内不能进行通信,建议:在客户机端重新启动后,确保使用与原有连接不同的源端口号建立连t宴。2)所打开的连接与服务器侧半打开的连接具有不同的特性(不同的源端口和相同的目的td口、相同的源和目的IP地址),所以,在TCP校层上打开连接,并向服务器侧的TCP管理层发送信号.如果服务器侧TCP管理层仅支持一个远
12、程客户机lP地址的连接,那么可以关闭原来的半打开的连接,使用新的连钱。如果服务器侧TCP管理层支持多个远程客户机lP地址的连按,那么新的连接保持打开状态,原来的连接也保持半打开状态,直到保持连按计时器计时结束,此时,将返回一个错误到TCP管理层。之后,TCP管理层将能够复位原有的连接。6.2.3 访问控制模块这个校块的日的是检查每一个新的连接,对照一个合法授权的远程IP地址表,它可以授权或禁止一个远程客户饥的TCP连按.9 G/Z 19582.3-2004 在至关重要的场合,应用开发人员需要选择访问控制模块来保证网络的访问。在这种情况下,需要对每个远程IP授权或禁止访问.用户需提供一个IP地址
13、的表,并特别注明每个IP地址是否合法授权。在缺省情况下,在安全模式中,用户未配置的IP地址均被禁止。所以,借助于访问控制模式,关闭来自未知的IP地址的访问连接.6.3 TCP/IP梭的使用见图100TCP/IP校提供了一个接口,用来管理连族、发送和按收数据,还可以进行某些参数配置,以使得校的特性适应于设备或系统的限制.抖WL主士?lfodbus r可?曹!?苦苦:丁:机1CP 1士芒?要忧?为咬咬咬Wif?!l叶波:rrif?imp J IP 专苦fJF二Yth可;二ARP 同略宙间Etberncl II I!802. 3居图10Modbus TCP /IP通讯技本章的目的是给出有关钱接口的综
14、述,以及一些与梭的参数配置有关的信息。综述的主要内容是Modbus报文传输所使用的一些特性。有关更多的信息,建议阅读RFC1122.这个RFC1122为厂商和开发商提供了互联网通信软件的指南。RFC1122详述了一个连接到互联网的主机必须采用的标准协议,以及一组明确的需求和选项。校接口一般是基于本部分中描述的BSD接口。6.3. 1 SD套接字接口的应用注g有些TCP/lP校从性能考虑提出其他类型的接口oModbus客户机或服务器可以使用这些特定的接口,但是在本标准中对这种使用不做描述。一个套接字是一个通信端点,它是通信中的基本构成块。通过套接字发送和接收数据来执行一个Modbus通信oTCP
15、/IP库仅提供了使用TCP和提供基于连接的通信服务的流套接字。socketO函数用来创建套接字。返回的一个套接字号被创建者用来访问该套接字.套接字创建时没有地址(IP地址和揣口号)。直到一个端口被绑定到该套接字时,方可接收数据。bindO函数用来绑定一个端口号到套接字。bindO函数在套接字与所指定的端口号之间建立一种联系。为了初始化一个连接,客户机必须发送connect()函数来指定套tt:字号、远程IP地址和远程监听端口号(主动连接建立)。为了完成连接,服务器必须发送acceptO函数来指定先前在listen()词用中所指定的套接字号(被动连接建立)。一个新的套接字被创建,并具有与初始套按
16、字相同的特性。这个新的套接字连接到客户机的套接字,而将套按字号返回到服务器。于是,释放初始套接字,以便为其他欲与该服务器连接的客户机使用。10 G/Z 19582.3-2004 将sendO和recv()函数专门地设计成与已经连接的套setsockopt 0函数允许套接字的创建者将套接字与选项联合使用。在6.3.2给出这些选项的描述。selectO函数允许编程人员测试所有套接字上的事件,shutdownO函数允许套接字的使用者来终止sendO和/或recvO.一且不再需要套接字,通过使用closeO函数来放弃套接字的描述符。图11给出了客户机与服务器间的完整的Modbus通信过程。客户机建立一
17、个连接,向服务器发送3个Modbus请求,而不等待第一个请求的响应到来。在收到所有的响应后,客户机正常地关闭连接。这些选项修改了套接字的操作1 1 吃苦?1 fd =accep! (fd) fd =socket 0 bind(fd,n listen(fd) close(fd) send(fd) recv(fd勺send(fd) recv(fd勺scnd(fd) recv(fd) Modbus信息交接 Afodbu ,柿次PDtjn扎-10(fb,Us1.我POUEFINIYJACK Modbus响应PDU1 Modbus响战PDUnModbus响应PDUiFIN的ACKACK K+I F1 N
18、 C K N Y -iilili-ijKAi-fit-ilrjJ114:;iill -机UM川阳一沪WMUH在(nH在TCP连接建立以后,数据即可被传送.接字一起使用。图11咱0send(fd) rccv (fd) recv(fd) recv(fd) send (fd) scnd (fd) c!ose(fd) 特征.G/Z 19582.3一20046.3.2 TCP层参数配置可以调整TCP/IP校的一些参数以使得其特性适应产品或系统的限制.TCP层的下列参数可以进行调整:每个连接的参数SO-RCVBUF, SO-SNDBUF, 这些参数允许为发送和接收用套接宇接口设定高限位。可以通过调整这些参
19、数来实现流量控制管理。接收缓冲区的大小是每个连接通告窗口的最大值.为了提高性能,必须增加套接字缓冲区的大小。否则,这些值必须小于内部驱动器的资源,以便在内部驱动器的资源耗尽之前关闭TCP窗口。接收缓冲区大小取决于TCP窗口大小、TCP最大段的大小和接收输入帧所需的时间。由于是大段的大小为300个字节(一个Modbus请求需要最大256字节+MBAP报文头),如果需要3个帧进行缓存,可将套接字缓冲区大小调整为900字节.为了满足最大需求和最好的预定时间,可以增加TCP窗口的大小。TCP-NODELA Y, 通常,小报文包在局域网(LAN)上的传输不会产生问题,因为多数局域网是不拥t苦的,但是,这
20、些小报文包在广域网上将会造成拥堵。一个称为NAGLE算法的简单方案是E收集少量的数据,当前商报文的TCP确认到达时再用单个段进行发送。为了获得更好的实时特性,建议2将少量的数据直接发送,而不要试图将其收集到一个段内再发送。这就是为什么建议强制TCP-NODELAY选项,这个选项禁止在客户机和服务器连接上采用NAGLE算法。SO-REUSEADDR, 当Modbus服务器关闭一个由远程客户启动的TCP连接时,在这个连接处于时间等待状态(2个MSL,最大段寿命)的过程中,该连接所用的本地端口号不能被再次用来打开一个新的连接。建议2为每个客户机和服务器连接规定该SO-REUSEADDR选项,以旁路这
21、个限制。此选项允许该进程为自身分配一个端口号,该端口号是在2个MSL期间内等待客户机并监听套接字的连接的一部分。SO-KEEPALIVE, 在TCP/IP协议缺省状态下,没有数据通过空闲的TCP连接发送。因此,如果在TCP连按端上没有进程发送数据,在2个TCP模块间就不交换任何数据。这就是假设客户机应用或服务器应用均采用定时器来检测连接的非激活性,以便关闭连接.建议g在客户机与服务器连接两端均采用KEEPALlVE选项,以便轮询另一端来得知对方是否故障并死机,或故障并重新启动。然而,必须注意,采用KEEPALlVE可能引起一个非常良好的连接在瞬间故障时通信中断,如果保持连接的定时器定时的时间太
22、短,将占用不必要的网络带宽。一一整个TCP层的参数建立TCP连接超时:多数伯克利推出的系统将建立新连接的时限设定为75s.这个缺省值应该适应于实时的应用限制。堡主主直主盘i连接的缺省空闲时间是2h,超过此空闲时间将触发一个保持连接试探过程。第一个保持连接试探后,在是大次数内每隔75日发送一个试探,直到收到对试探的响应为止。在一个空闲连接上发出保持连接试探的是大数是8次。如果发出最大试探次数之后而没有收到应答,TCP向应用发出一个错误信号,由应用来决定关闭连接。超时与重发参数2如果检测到个TCP报文包丢失,将重发此报文包.检测丢失的方法之一是管理章发超时12 GB/Z 19582.3-2004
23、(RTQ) .如果没有收到来自远程端的确认,超时终止。TCP进行RTO的动态评估。为此,在发送每个非ll:发的报文包后测量往返时间(RTT)。往返时间(RTT)是指报文包到达远程设备并从远程设备获得一个确认所用的时间。一个连接的往返时间是动态计算的.然而,如果TCP不能在3s内获得RTT的估算,那么,就设定RTT的缺省值为3s。如果已经估算出RTO.它将被用于下一个报文包的发送。如果在估算的RTO终止之前没有收到该报文包的确认,启用指数补偿算法。在一个特定的时间段内,允许相同报文包最大次数的重发。之后,如果收不到确认,连接终止。可以对某些校设置连接终止之前重发的应大次数和童发的最长时间。在TC
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB 19582.3 2004 基于 Modbus 协议 工业 自动化 网络 规范 部分 TCP IP 实现 指南

链接地址:http://www.mydoc123.com/p-234236.html