1.3.3 ICS网络协议

ICS与IT系统的不同很大程度上在于网络协议的不同,理解这些协议对于ICS网络安全的策略设置有大的帮助,本节将介绍在工业控制领域常用的几种现场总线协议及工业以太网协议。

1.现场总线协议

(1)现场总线的概念

现场总线是应用在生产现场、在测控设备之间实现双向串行多节点数字通信的开放型控制网络技术;是工业数据通信与控制网络技术的代名词,是测控领域的通信与网络技术;是工业数据通信系统,能够在生产设备之间传递数字信息,是工业数据通信形成控制网络的基础和支撑条件,是控制网络技术的重要组成部分;是自动化控制(自控)领域的局域网、企业的底层网络,是网络集成式测控系统。

(2)现场总线的作用

■ 现场总线将分散的有通信能力的测控设备作为网络节点,连接成能相互沟通信息、共同完成自控任务的控制网络。

■ 现场总线在测控设备之间传递数据信息,把传感器、按钮、执行机构等连接到控制器、PLC或工业计算机上,通过相互通信共同执行测控任务。

■ 总线上的数据输入设备包括按钮、传感器、接触器、变送器、阀门等,传输其位置状态、参数值等数据。

■ 总线上的输出数据用于驱动信号灯、接触器、开关、阀门等。

■ 工业数据通信用以满足信息社会对基础设备与过程数据信息的需求。

(3)现场总线的特点

■ 适应工业应用环境,如温度、电磁干扰、振动等。

■ 多为短帧传送,延迟可预测,实时性强。

■ 通信的传输速率相对较低。

■ 传输稳定,可靠性高,安全性好。

■ 易于安装。

■ 高可用性,可以冗余设置。

■ 长期连续工作。

■ 单节点成本低。

■ 传输距离长。

■ 采用本安设计。

现场总线使测控设备具备了数字计算和数字通信能力,提高了信号的测量、传输和控制精度,改善了系统与设备的性能。现场总线可采用多种介质(有线和无线)传送数字信号,在两根导线上可挂接多至几十个自控设备,能节省大量线缆、槽架、连接件,减少系统设计、安装、维护工作量。现场总线形成真正分散在现场的完整控制系统,提高了控制系统运行的可靠性;丰富了控制设备的信息内容,提供了阀门动作次数、故障诊断等信息;为控制信息进入公用数据网络创造了条件,实现了现场控制设备之间及其与更高控制管理层网络之间的联系,便于实现管控一体化、控制网络与数据网络的结合,以及信号的远程传送与异地远程自动控制。

(4)现场总线的优点

■ 采用标准化的设备,易于用户选择。

■ 减少了线缆数量。

■ 提高了控制系统的模块化程度。

■ 易于故障定位和系统维护。

■ 调试周期缩短。

■ 易于扩展和更新。

■ 有大量可互换的标准产品,易于用户自由组合系统,而不依赖于特定的厂商。

■ 知识共享。

2.常用现场总线协议

(1)PROFIBUS总线

PROFIBUS由以下三个兼容部分组成,其协议架构如图1-14所示。

●图1-14 PROFIBUS协议架构

PROFIBUS-DP。定义了第一、二层和用户接口。第三~七层未加描述。用户接口规定了用户及系统以及不同设备可调用的应用功能,并详细说明了各种PROFIBUS-DP设备的设备行为。

PROFIBUS-FMS。定义了第一、二、七层,应用层包括现场总线信息规范(Fieldbus Message Specification, FMS)和低层接口(Lower Layer Interface, LLI)。FMS包括了应用协议并向用户提供了可广泛选用的强有力的通信服务。LLI协调不同的通信关系并提供不依赖设备的第二层访问接口。

PROFIBUS-PA。PA的数据传输采用扩展的PROFIBUS-DP协议。另外,PA还描述了现场设备行为的PA行规。根据IEC 1158-2标准,PA的传输技术可确保其本质安全性,而且可通过总线给现场设备供电。使用连接器可在DP上扩展PA网络。

PROFIBUS协议的物理规格如下。

■ DP和FMS采用RS-485传输。

■ 采用屏蔽双绞铜线电缆。

■ 浪涌阻抗:135~165Ω。

■ 电缆电容:<30pF/m。

■ 回路电阻:110Ω/km。

■ 线径:0.64mm。

■ 节点数:每段最多32个,增加中继器后最多126个。

■ 网络拓扑:线形总线,两端有源终端匹配。

■ 传输速率:9.6kbit/s~12Mbit/s,详见表1-3。

表1-3 传输速率与传输距离的关系

PA的IEC 61158-2传输技术特性如下。

■ 传输速率:31.25kbit/s。

■ 传输介质:双绞线(屏蔽或非屏蔽)。

■ 拓扑:树形或线形,或两者结合。

■ 站数:每段最多32个,总数126个。

■ 防爆:本质安全型。

■ 供电:总线供电。

PRIFIBUS总线特点如下。

■ 各主站之间通过令牌传递。

■ 进行主站与从站数据传递。

■ 支持单主或多主系统。

■ 标准的主从通信。

■ 最多126个从站。

(2)Modbus总线

Modbus是MODICON公司在20世纪70年代提出的一种用于PLC之间通信的协议。由于Modbus是一种面向寄存器的主从式通信协议,协议简单实用,而且文本公开,所以在工业控制领域被作为通用的通信协议使用。

Modbus串行链路协议是一个主从协议,网络上的每个从站必须有唯一的地址(1~247),从站地址用于寻址从站设备,由主站发起,地址0用于广播模式,不需要响应。协议长度为256字节,由服务器地址(1字节)、Modbus PDU(253字节)、校验位(2字节,采用CRC或LRC)构成。当服务器对客户端发出响应时,它使用功能码域来指示正常(无差错)、响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅复制原始功能码;对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回,如图1-15所示。

●图1-15 Modbus通信流程图

Modbus协议PDU部分由功能码和数据部分构成,数据部分有四个基本表,见表1-4。

表1-4 数据基本表

注:00001~09999为线圈地址范围;10001~19999为离散量输入地址范围;30001~39999为输入寄存器地址范围;40001~49999为保持寄存器地址范围。

1)Modbus功能码。

功能码分为三类,即公共功能码、用户自定义功能码和保留功能码。公共功能码是被定义公开证明的功能码,它保证是唯一的并且具有可用的一致性测试。根据需求的增加,Modbus协议组织可以定义那些未指配的保留功能码作为公共功能码(范围01~64)。用户自定义功能码有两个范围,即65~72和100~110,用户可以不经Modbus协议组织批准选择和实现其中的一个功能码,但不能保证是唯一的。如果用户要重新设置该功能码为公共功能码,那么必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。保留功能码是一些公司对传统产品使用的功能码,对公共使用是无效的。功能码含义见表1-5。

表1-5 功能码含义

(续)

其中,功能码08提供了一系列的诊断功能,以校验主站和从站间的通信系统或检查从站中出现错误的各种条件,不支持广播。该功能使用一个子功能码(2个字节)定义诊断的类型,见表1-6。正常响应时,从站返回功能码和子功能码。

大多数诊断测试使用一个2字节的数据区向从站发送诊断数据和控制信息。有些诊断会产生需由从站返回的数据,放在正常响应的数据区。

表1-6 诊断功能子功能码含义

当主站向从站发送请求时,除广播信息外,可产生以下四种事件。

■ 如果从站接收到査询命令而且没有通信错误,从站也能正常查询,就返回正常。

■ 如果从站由于通信故障不能收到查询命令,则不返回响应帧,主站执行查询超时程序。

■ 如果从站接收到查询命令,但是侦测到通信错误(奇偶、LRC或CRC),则不返回响应帧,主站最终执行查询超时程序。

■ 如果从站接收到査询命令而且没有通信错误,但是从站无法处理(如查询命令要求读一个不存在的线圈或寄存器),从站就会返回意外响应帧告诉主站错误的性质。

正常响应帧与意外响应帧在两个区存在不同。如果是正常帧,从站在响应的功能区对初始查询的功能码回答所有最高位为0的功能(它们的值均小于80H);如果是意外帧,从站回答最高位为1的功能码,因而意外响应帧功能码的值大于正常响应帧的值。

通过功能码最高位的设置,主站应用程序能识别意外响应帧并检査功能响应的数据区。在正常响应帧中,从站在数据区将返回查询要求的数据和状态;在意外响应帧中,从站在数据区返回意外码,它定义引起意外的原因。Modbus协议意外码的含义见表1-7。

表1-7 意外码含义

2)Modbus协议报文格式。

Modbus串行传输模式——RTU模式。

报文格式中,CRC-16差错校验格式为:

报文帧的标识为:

字符之间的要求为:

Modbus串行传输模式——ASCII模式。

报文必须以“:”开始,以“LF-CR”结束,数据用十六进制ASCII码表示,使用LRC进行差错校验。

3.工业以太网协议

工业以太网技术是普通以太网技术在工业控制网络延伸的产物。前者源于后者又不同于后者。以太网技术发展多年特别是在Internet和Intranet中广泛应用,已经非常成熟,并得到了广大开发商与用户的认可,因此无论从技术上还是产品价格上较其他类型网络都有明显的优势。另外,随着技术的发展,控制网络与普通计算机网络及Internet的联系变得越来越密切。

(1)工业以太网的定义

通常,人们习惯将用于工业控制系统的以太网统称为工业以太网。但是,如果仔细划分,按照IEC/SC65C的定义,工业以太网是用于工业自动化环境、符合IEEE 802.3标准、IEE 802.1D《媒体访问控制(MAC)网桥》规范和IEE 802.1Q《局域网虚拟网桥》规范,对这些标准和规范没有进行任何实时扩展而实现的以太网。它通过减轻以太网负荷、提高网络速度,以及采用交换式以太网、全双工通信、信息优先级、流量控制、虚拟局域网等技术,实现了工业环境所要求的确定性、实时性、安全性及可靠性。

(2)工业以太网的特征

通信确定性和实时性。工业控制网络是与工业现场测控设备相连接的一类特殊通信网络,控制网络中数据传输的及时性与系统响应的实时性是控制系统最基本的要求。在工业自动化控制中需要及时传输现场过程信息和操作指令,工业控制网络不但要完成非实时信息的通信,而且还要支持实时信息的通信,这就不仅要求工业控制网络传输速率快,而且还要求其响应快,即响应实时性要好。

环境适应性和安全性。首先,工业现场的振动、粉尘、高/低温、高湿度等恶劣环境对设备的可靠性提出了更高的要求。在基于以太网的控制系统中,网络设备是相关设备的核心,从I/O功能块到控制器中的任何一部分都是网络的一部分。网络硬件把内部系统总线和外部世界联系到一起,任一工业以太网设备在这种性能稳定指标上都应高于普通商业以太网。为此,工业以太网产品针对机械环境、气候环境、电磁环境等需求,在线缆、接口、屏蔽等方面做出专门的设计。在易燃、易爆的场合,工业以太网产品通过隔爆和本质安全两种方式来提高设备的生产安全性。在信息安全方面,它利用网关构建系统的有效屏障,对经过其中的数据包进行过滤。同时,随着加密、解密技术与工业以太网的进一步融合,工业以太网的信息安全性也得到了进一步的保障。

产品可靠性设计。工业控制网络的高可靠性通常包含三个方面的内容:可使用性好,网络自身不易发生故障;容错能力强,网络系统局部单元出现故障,不影响整个系统的正常运行;可维护性高,故障发生后能及时发现和处理,通过维修使网络及时恢复。

3.常用工业以太网协议

(1)Modbus/TCP

最早的Modbus协议是基于RS-232/485/422等低速异步串行通信接口,随着以太网的发展,1997年施耐德电气将Modbus数据报文封装在TCP数据帧中,通过以太网实现数据通信,这就是Modbus/TCP,2004年Modbus成为我国国家标准。

1)Modbus协议模型。Modbus/TCP是一个开放性协议,IANA(Internet Assigned Numbers Authority,互联网数字分配机构)已为Modbus协议指配TCP/UDP知名端口(well-known port numbers)502,Modbus TCP/IP是唯一个被分配到互联网端口的工业以太网协议,IETF(Internet Engineering Task Force,互联网工程任务组)组织提议将Modbus协议作为因特网标准,Modbus协议是自动化领域中广泛使用的“事实”标准,使用目前最流行的LAN技术(IEEE 802.3中定义的以太网和以太网II TCP/IP模型)。

Modbus是OSI模型(Open System Interconnection Reference Model,开放式系统互联通信参考模型)第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。目前,可以通过下列三种方式实现Modbus通信(见图1-16)。

●图1-16 Modbus/TCP通信模型图

■ 以太网上的TCP/IP。

■ 各种介质(有线EIA/TIA-232-F、EIA-422、EIA/TIA-485-A,以及光纤、无线等)上的异步串行传输。

■ Modbus PLUS,一种高速令牌传递网络。

2)Modbus数据单元。Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU),特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。启动Modbus事务处理的客户机创建Modbus PDU,其中的功能码向服务器指示将执行哪种操作,功能码后面是含有请求和响应参数的数据域(见图1-17)。Modbus/TCP使用一种专用报文头(MBAP报文头,7字节,详见表1-8)来识别Modbus ADU,TCP Modbus ADU=253字节+7字节=260字节。

●图1-17 Modbus/TCP数据帧结构

表1-8 MBAP报文头

3)Modbus功能码。功能码定义见前文现场总线Modbus协议部分。

4)Modbus协议的特点如下。

简单、开放。Modbus应用协议非常简单,并且已经得到普遍认可,很多产品都提供了对Modbus TCP/IP连接的支持。Modbus TCP/IP的简单性使得任何小型现场设备(如I/O组件)都可以通过以太网进行通信,而不需要配备功能强大的微处理器或大容量的内存。

高性能。由于结合了Modbus协议的简单性和100M以太网的高速度,Modbus TCP/IP展现了卓越的性能,这意味着将这种网络应用在实时性要求很高的场合(如I/O扫描)是可行的。

通信透明性。Modbus协议可以方便地在各种网络体系结构内进行通信,每种设备(PLC、HMI、控制面板、变频器、运动控制、I/O设备等)都能使用Modbus协议来启动远程操作,同样的通信能够在串行链路和TCP/IP以太网网络上进行,而网关则能够实现各种使用Modbus协议的总线或网络之间的通信。由此可见,Modbus协议实现了全方位的通信透明性。

(2)Ethernet/IP

Ethernet/IP(Ethernet Industry Protocol)是由美国罗克韦尔公司提出的以太网应用协议,其原理与Modbus/TCP相似,只是将ControlNet和DeviceNet使用的CIP(Control Information Protocol)报文封装在TCP数据帧中,通过以太网实现数据通信。满足CIP的三种协议Ethernet/IP、ControlNet和DeviceNet共享相同的对象库、行规和对象,相同的报文可以在三种网络中任意传递,实现即插即用和数据对象的共享。

Ethernet/IP是一个面向工业自动化应用的工业应用层协议。它建立在标准UDP/IP与TCP/IP协议之上,利用固定的以太网硬件和软件为配置、访问和控制工业自动化设备定义了一个应用层协议。

Ethernet/IP的实质就是标准以太网+TCP/IP+CIP,也就是Ethernet/IP采用标准的ASIC芯片作为信息处理器并与标准的以太网相互兼容,这就意味着客户所采用的工业用以太网交换机可以从Cisco、赫斯曼等采用ASIC芯片的厂商购买。

1)Ethernet/IP协议通信模型。Ethernet/IP由两大工业组ODVA(Open Device net Vendors Association)和ControlNet International所推出的最新成员。和DeviceNet、ControlNet一样,它也是基于CIP协议的网络。它是一种是面向对象的协议,能够保证网络上的隐式实时I/O信息和显式信息(包括用于组态参数设置、诊断等)得到有效传输。

Ethernet/IP采用和DeviceNet以及ControlNet相同的应用层协议CIP,因此,它们使用相同的对象库和一致的行业规范,具有较好的一致性。Ethernet/IP采用标准的Ethernet和TCP/IP技术来传送CIP通信包,这样,通用且开放的应用层协议CIP加上已经被广泛使用的Ethernet和TCP/IP协议,就构成了Ethernet/IP协议的体系结构。Ethernet/IP通信参考模型如图1-18所示。

2)CIP协议报文。CIP协议最重要的特点是可以传输多种类型的数据,由于不同数据类型对传输的性能要求不一样,CIP协议报文可分为两类:显式报文和隐式报文。CIP协议嵌入UDP协议时用于发送隐式报文(Implicit Message);而CIP协议嵌入TCP协议时用于发送显式报文(Explicit Message)。两种报文使用的封装协议不同,传输的消息类型也不同。CIP将应用对象之间的通信关系抽象为连接,并制定了相应的对象逻辑规范,使CIP协议可以不依赖于某一具体的网络硬件技术,而是用逻辑来定义连接的关系,在通信之前先建立连接获取唯一的标识符(Connection ID,CID),如果连接涉及双向的数据传输,就要分配两个CID。

显式报文针对组态信息、设备配置、故障诊断等非实时性信息,其优先级较低(包含解读该报文所需要的信息),通过点对点的报文在两个对象之间以交互的方式进行传输。报文本身携带地址、数据类型和功能描述等相关内容,接收设备根据内容做出相应的处理,采用源地址/目的地址传送方式。在通信之前通过TCP协议获得CID,之后进行数据报文传输。显式报文使用通信端口0xAF12f。CIP显式报文连接如图1-19所示。

●图1-18 Ethernet/IP通信参考模型

●图1-19 显示报文连接

隐式报文用于在节点之间传输实时I/O数据、实时互锁,优先级较高(隐式报文中不包含传送地址、数据类型标识和功能描述),全部作为有效数据,传输效率高,在报文头部有数据标识符,消费者根据标识符选择自己需要的内容,通过UDP协议将实时I/O消息传送到总线上。CIP隐式报文连接如图1-20所示。

●图1-20 隐式报文连接

3)封装数据包结构。所有封装消息的发送通过TCP或UDP,使用端口0xAF12,报文头为24字节固定长度,然后是一个可选的数据部分。封装消息的总长度(包括报文头)应当限于65535字节以下。其结构见表1-9~表1-11。

表1-9 封装包

表1-10 命令功能码

表1-11 状态功能码

(续)

4)Ethernet/IP协议的特点如下。

先进性和成熟性。Ethernet/IP采用生产者/消费者技术,相比传统的主从式结构,通信速率提高了3倍以上,在效率、实时性和灵活性方面都有独特的优势,尤其是它在Ethernet上增加的CIP协议已有十几年使用经验,接受了各种类型的测试和考验,具有非常高的可靠性。

集成性。Ehernet/IP最大的特点就是在应用层实施了成熟、先进和统一的CIP协议,使得它与DeviceNet、Controllink等目前常用的总线技术结合使用时,有完全相同的对象库、设备描述和相同的服务控制机制和路由方式,在基于CIP的网络中无论如何组合,都有高效、一致、透明的全功能通信服务,并且所有通信均无需任何程序来实现。

发展性。CIP协议的一个重要特性就是其介质无关性,即CIP作为应用层协议实施时与底层介质无关,这也就是人们可以在控制系统与I/O设备上灵活实施一种开发协议的原因,同样在未来有新的通信方式出现时,人们可以非常方便地将CIP协议移植到高性能网络上实现而不改变现有的架构和网络通信方式。

兼容性。Ethernet/IP的另一个优点是兼容性,Ethernet /IP所采用的CIP协议完全集成于TCP/IP之上,使工业以太网更容易与工厂底层充当主角的各种现场总线控制系统集成和并存。

实时性。Ethernet/IP定义了显式和隐式两种报文。显式报文用来处理对实时性要求较低的服务,隐式报文用来处理对实时性要求较高的服务,这样就能充分利用网络带宽,保证重要数据的实时传输。

开放性。Ethernet/IP将从应用层发来的CIP报文进行压缩,封装成TCP或UDP的帧格式,然后通过具有Switch结构的Ethernet发送,在接收点拆包后还原为CIP报文,交给使用者。

(3)OPC

OPC(OLE for Process Control,用于过程控制的OLE)是一个工业标准,管理这个标准的国际组织是OPC基金会,OPC基金会现有会员已超过220家,它们遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统厂商。

OPC基于微软的OLE(现在的Active X)、COM(Component Object Model,部件对象模型)和DCOM(Distributed COM,分布式部件对象模型)技术,包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。

OPC的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数,现场设备的种类繁多和产品的不断升级给用户和软件开发商带来了巨大的工作负担。但这样也常常不能满足实际工作需要,系统集成商和开发商急需一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,OPC标准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的。在OPC技术中使用的是OLE 2技术,OLE标准允许在多台微机之间交换文档、图形等对象。

COM是所有OLE机制的基础。COM是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通信,而不需要知道对方是如何创建的。例如,用户可以使用C++语言创建一个Windows对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用Visual Basic、C、Pascal、Smalltalk或其他语言编写对象访问程序。在Windows NT 4.0操作系统下,COM规范扩展到可访问本机以外的其他对象,一个应用程序所使用的对象可分布在网络上,COM的这个扩展被称为DCOM。

通过DCOM技术和OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。

OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是自动化接口(Automation Interface)和自定义接口(Custom Interface)。自动化接口通常是基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用,而自定义接口是专门为C++等高级编程语言制定的标准接口。OPC现已成为工业界系统互联的默认方案,为工业监控编程带来了便利,用户不用为通信协议的难题而苦恼。任何一个自动化软件解决方案,如果不能全方位地支持OPC,则必将被历史所淘汰。

OPC是以OLE/COM机制为应用程序的通信标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使用户从底层的开发中完全脱离出来。通常在系统设计中采用OLE自动化标准接口。

OLE自动化标准接口即采用OLE自动化技术进行调用。它定义了以下三层接口,依次呈包含关系。

OPC Server。OPC启动服务器,获得其他对象和服务的起始类,并用于返回OPC Group类对象。

OPC Group。存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。

OPC Item。存储具体Item的定义、数据值、状态值等信息。

由于OPC规范基于OLE/COM技术,同时OLE/COM的扩展远程OLE自动化与DCOM技术支持TCP/IP等多种网络协议,因此可以将OPC客户、服务器在物理上分开,分布于网络不同节点上。

OPC规范可以应用在许多应用程序中,如它们可以应用于从SCADA或者DCS系统的物理设备中获取原始数据的最底层,它们同样可以应用于从SCADA或者DCS系统中获取数据到应用程序中。实际上,OPC设计的目的就是从网络上某节点获取数据。

OPC的数据访问方法有同步访问、异步访问和订阅式访问三种。

同步访问方式。OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回OPC应用程序,OPC应用程序在结果被返回之前必须处于等待状态。同步访问特点为:读取指定OPC标签对应的过程数据时,应用程序要等到读取完为止;写入指定OPC标签对应的过程数据时,应用程序要等到写入完成为止。当客户数据较少而且同服务器交互的数据量比较少的时候可以采用这种方式,然而当网络堵塞或大量客户访问时,会造成系统性能下降。

异步访问方式。OPC服务器接到OPC应用程序的要求后,几乎立即将方法返回。OPC应用程序随后可以进行其他处理。当OPC服务器完成数据访问时,OPC服务器转换角色充当客户程序,而原来的客户程序此时可以看成服务器。OPC服务器主动触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。OPC应用程序在其事件处理程序中接收从OPC服务器传来的数据。其特点为:读取指定OPC标签对应的过程数据时,应用程序发出读取要求后立即返回,读取完成时发生读取完成事件,OPC应用程序被调用;写入指定OPC标签对应的过程数据时,应用程序发出写入要求后立即返回,写入完成时发出写入完成事件,OPC应用程序被调用。因此,异步访问方式的效率更高,能够避免多客户、大数据请求的阻塞,并可以最大限度地节省CPU和网络资源。

订阅式访问方式。并不需要OPC客户应用程序向OPC服务器提出要求,而是由服务器周期性地扫描缓冲区的数据,如果发现数据变化超过一定的幅度,则更新数据缓冲器,并自动通知OPC应用程序,这样OPC客户应用程序就可以自动接到OPC服务器送来的变化通知,以订阅方式进行数据采集。订阅式数据访问方式实际上也属于异步读取方式。采用订阅式数据访问方式的服务器按一定的更新周期(UpdateRate)更新数据缓冲器的数值时,如果发现数据有变化,就会以数据变化事件(DataChange)通知OPC应用程序。OPC服务器支持不敏感带(DeadBand),而且OPC标签的数据类型是模拟量的情况下,只有当前值与前次值差的绝对值超过一定的限度时,才会更新缓冲器数据并通知OPC应用程序。由此可以无视模拟量的微小变化,从而减轻OPC服务器和OPC应用程序的负荷。其特点为:服务器以一定的周期检查过程数据,发现数字量数据或者模拟量数据的变化范围超过不敏感区后,立刻通知客户程序,传递相应信息。订阅式技术基于“客户-服务器-硬件设备”模型,在服务器内部建立预定数据的动态缓存,并且当数据变化时对动态缓存进行刷新,并向订阅这些数据的客户端发送。这使得网络上的请求包数量大大减少,并有效降低对服务器的重复访问次数。在数据点很多的情况下,这种通信方式的优势更能凸显出来。