传统的TCP/IP参考模型被分为四个层次:应用层、传输层、网络互连层和主机到网络层。各个层次上均有相应的标准协议。这些协议的结合使用构成了整个基于TCP/IP模型的网络应用。
这组广泛的协议中,绝大多数在工业以太网的方案中得到了应用。其中主机到网络层主要涉及到的是OSI模型的第一、二层。之后是相当重要的网络互连层和传输层协议。它们是整个TCP/IP协议簇的核心,在OSI模型中居于第三、四层。
由于传输机制和通信模式的问题主要关联到OSI网络模型的第四层——网络传输层,所以本文重点讨论在传输层中这几种主流工业以太网的差异,其余各层仅作涉及,不做详细论述。
UDP和TCP机制
在工业以太网应用中,网络互连层和传输层协议共同构成了整个系统的通信栈。不同的工业以太网方案在通信栈的构成方式、应用模型上有一定的差别,这种差别也是我们讨论的重点。其中最为典型的一个问题就是:传输层使用TCP还是使用UDP的问题?
首先我们看一下TCP/IP协议中关于TCP/UDP的说明:
TCP&UDP分别是Transmission Control Protocol和User Datag
TCP作为基于连接的协议,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。而且为确保正确地接收数据,TCP 会为每个封包都加上一个顺序码, 并且要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。
以上的连接、包计数、接收确认握手等机制确实能使TCP协议做到为应用程序提供可靠的通信连接,使一台网络终端发出的字节流无差错地发往网络上的其他终端。但是这些操作却影响到了网络在速度上的性能。
而UDP是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!它也没有TCP 的封包所具有顺序码, 接收端亦不会有响应产生及进行检查以确认是否收到重复或遗失的封包。这些都决定了UDP是作为一种不可靠的协议存在的。但是UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
从工业以太网的角度出发,应当从数据通信的需求上对UDP或TCP的选择问题做一个结论。首先我们来看一看在工业环境中,网络上传输的数据具有的特性。
工业环境中待传输的信息类型包括实时过程控制数据、设备状态、监控数据、系统故障诊断数据、报警数据等。这些数据通常在量上并不大。这个特点在以往的现场总线体系中有充分的体现,例如,LonWorks现场总线的数据包长度只有12个bit,EIB现场总线数据包长度只有22个bit,等等。
而这些数据对实时的传输的要求也不尽相同。具体说来,I/O数据对实时性要求最高。而组态、参数设置、诊断等则不太要求过高的实时性而更偏向可靠的数据传输。
对数据传输的要求不同决定了协议的选择,在工业以太网的方案中,可以采取的方式是:
对于对实时性要求较高的实时I/O数据,采用UDP/IP协议来传送,这时可以获得UDP的如下几个好处:
(1) 数据发送前不用建立连接,减少了开销和延迟,这一点控制系统来说是非常重要的。
(2) UDP没有采用可靠交付,数据收发双方不用维护很多的用于记录连接状态的表。
(3) UDP 数据报首部很短,只有8字节,处理方便。
(4) UDP取消了拥塞控制,所以发送方不会降低发送速度,这点在实时应用上非常重要。
而对实时性要求不太高的显式信息则采用TCP/IP来传送。这样减少了UDP方式的传输负担,也更容易实现。
TCP和UDP选择的通信模式
在工业以太网的关键任务——实时数据传输上,依靠的或者是传输可靠的TCP或者是传输迅速的UDP。基本上比较侧重于其中一者。对具体某一种工业以太网方案而言,在选择TCP还是UDP的问题上,还有一个重要的原因是其方案中所提供的通信模式。
网络通信模式大体上有以下几种:
1.Client/Server(客户端/服务器) 模式;
2.master/slave(主/从)模式;
3.peer to peer(点对点)模式;
4.produce r/consumer(生产者/消费者)模式;
5.Publish/subscribe(发布者/预定者)模式。
基于TCP的工业以太网
正是基于TCP/IP协议的可靠和稳定性,大多数工业以太网协议,如:Modbus/TCP、PROFInet、INTERBUS、MMS TCP/IP及.NET for Manufacturing等都选择了TCP/IP。由于篇幅有限,下面仅就Modbus/TCP、PROFInet做简单介绍如(图1)。
图1
(1)Modbus/TCP
回到对于工业以太网数据传输的特点和需求上,我们可以看到并不是所有的工业环境都需要达到微秒级别的时间要求,类似于IDA所采用的RTPS模式虽然能使工业以太网的传输层性能达到相当的标准,但同时又增加了过多的成本。另一方面,某些看上去似乎需要UDP协议来体现其高速性能的场合,其实可以通过在物理层和链路层的优化的基础上(如采用星型交换机等),结合工业以太网数据量小的特点,采用传统方式的TCP协议来实现。这样即省去了在使用UDP协议时必须做增强开发来构造通信的确定性方面所付出的高额代价(TCP本身就是确定性的
Modbus/TCP协议是在Modbus协议的基础上发展而来的。为了尽量地使用已有成果,Modbus/ TCP协议的实现是在不改变原有Modbus协议的基础上,只是将它的传输层协议简单的移植到TCP/IP上。因此在TCP/IP网络中Modbus/TCP使用传输控制协议(TCP)进行Modbus应用协议的数据传输。参数和数据使用封装的方法嵌入到TCP报文的用户数据容器中进行传送。另外地址和校验在Modbus/TCP中也由底层的TCP协议来完成。由于传输层以上遵循Modbus协议,所以采用C/S结构,在数据传输前进行之前,需要在客户和服务器之间建立一个TCP/IP连接。服务器使用端口502作为Modbus/TCP连接的端口。连接的建立通常由TCP/IP的Socket接口的软件协议自动实现的,因此对应用完全透明。
一旦客户和服务器之间的TCP/IP连接建立,同样的连接可以根据要求的方向用来传输任意数量的用户数据。客户和服务器还可以同时建立多个TCP/IP连接,最大的连接数量取决于TCP/IP接口的规范。在输入输出数据循环传输的情况下,永久的连接通常维持在客户和服务器之间,只有在发生特殊事件而有必要传送参数和诊断报文时,连接才能在每一次数据传送后被关闭,需要时再次建立。这也是Modbus/TCP在工业以太网中采用TCP做为传输层协议而不采用速度更快的UDP协议的原因所在。
虽然Modbus/TCP由于在传输层采用TCP协议,而使其不得不在传输层协议以下的诸层采取更有效的实时性策略。但与PROFINet,Ethemet/IP和IDA等方案相比,Modbus/TCP在其开放性、简单和稳定的性能上具有优势,是一个具有较高的性能价格比的工业以太网方案。
(2)ProfiNet
事实上,在工业以太网应用中,网络互连层和传输层协议并非仅仅局限在TCP/IP之上。在由Profibus Internationa(PI)组织提出的基于以太网的自动化标准——PROFINET实时以太网中,就采用了独立的实时通道来扩展系统的实时性能。
图2
PROFINET通信模型如(图2)。可以看到,在PROFINET应用中,其标准参数(如设备参数、组态和读取的诊断数据)是由传统的TCP/UDP+IP+以太网来传送的。与之对就的是非实时的数据传输标准通道。但其实时数据则由PROFINET提供的两类实时通信通道RT和IRT完成。实时通道RT是软实时SRT(Software RT)方案,主要用于过程数据的高性能循环传输、事件控制的信号与报警信号等。它位于旁路第3层和第4层,可以提供精确通信能力。为进一步优化通信功能,PROFINET根据IEEE802.1p定义了报文的优先级,最多可用7级。而实时通道IRT采用了IRT(isochronous realtime)等时同步实时的ASIC芯片解决方案,以进一步缩短通信栈软件的处理时间,特别适用于高性能传输、过程数据的等时同步传输、以及快速的时钟同步运动控制,其可以在1毫秒时间周期内,实现对100多个轴的控制,而抖动不足1微秒。
(未完待续)
卓越信通公司致力于工业以太网产品的生产和研究,是以太网行业领先者。请访问www.transcendcom.cn