介绍
OPC统一架构的主要目标之一是为过程控制和管理系统的集成提供一致的机制。假设它应该是健壮的,并且实现应该是独立于平台的。在本节中,我将研究用作OPC UA标准开发基础的技术和范式,并讨论它们对最终结果的影响。
面向服务的体系结构
在新的解决方案开发之初,我们必须解决有关其基本范式和体系结构的问题。OPC Classic基于操作系统提供的功能,实际上是有关如何使用该功能互连数据交换参与者的说明。这被认为是缺点之一,使得OPC Classic标准的寿命取决于它所基于的技术的寿命。
观察IT领域的不断发展,似乎找到一个能够保证无限生命周期的解决方案是一个真正的挑战。但是,将解决方案从任何基础技术中分离出来,都会增加其在基础技术从市场上消失后幸存下来的机会。开发服务并使用面向服务的体系结构 (SOA) 部署它们是利用 IT 系统来应对这一挑战的最佳方式。服务不同于对象或过程,因为它是由它与其他服务交换的消息定义的。SOA 定义了部署和管理服务的方式。使用 SOA 方法可以提高重用率,降低总体成本,并提高快速更改和发展系统(无论是旧的还是新的)的能力。
要使系统具有互操作性,任何甚至绝妙的想法都是不够的。我们需要一种数据传输技术,但是 , 在消息上下文中定义数据交换时 - 只要参与者能够吸收消息,我们就不需要打扰参与者使用的不同技术。
今天,实现 SOA 概念的理想平台是 Web 服务技术。它们代表了行业历史上最广泛采用的分布式计算标准。Web服务是一组基于XML(可扩展标记语言)的标准,由W3C(万维网联盟)开发。这些标准通常标有 WS-*** 符号。由于 WS-* 标准在开发时没有对实现它们的底层系统平台进行任何初始假设,因此它们必须精确定义“线路”上必须包含的内容。
WS-* 标准是 OPC UA 的基础,但仅使用它们不足以在工业应用中达到预期的数据吞吐量性能。因此,OPC UA协议套件通过定义一些可以替代使用的专有协议来扩展WS-*标准。OPC UA消息可以编码为XML文本或二进制格式,以提高效率。它们可以使用多个基础传输进行传输,例如 TCP 或 SOAP over HTTP。支持多种传输和编码的客户端和服务器将允许最终用户在部署时就性能和 XML Web 服务兼容性之间的权衡做出决策,而不是让 OPC 供应商在产品定义时确定这些权衡。
面向对象的信息模型
为了使系统可互操作,数据传输机制必须与一致的信息表示模型相关联。OPC UA使用对象作为基本概念来表示底层系统的数据和活动。这些对象是变量、事件和方法的占位符,并通过引用相互连接。这个概念类似于众所周知的面向对象编程(OOP),它是一种使用“对象”(由字段,事件和方法组成的数据结构)及其与设计应用程序和计算机程序的交互的编程范式。OPC UA 信息模型提供数据抽象、封装、多态性和继承等功能。
OPC UA 对象模型允许服务器为对象及其组件提供类型定义。类型定义可能是抽象的,并且可以由新类型继承以反映多态性。它们也可能是常见的,也可能是特定于系统的。对象类型可以由标准化组织、供应商或最终用户定义。
信息模型是一个非常强大的概念,但它是抽象的,因此,在现实环境中,它必须根据位流(使信息可传输)和地址(使信息有选择地可用)来实现。为了满足这一要求,OPC UA引入了一个Node概念,作为一个原子可寻址实体,它由属性(值持有者)和引用(耦合节点的地址持有者)组成。OPC UA 服务器提供给客户端的节点集称为其地址空间,它支持表示真实进程环境和实时进程行为。OPC UA 电子书中详细介绍了地址空间。
以前的每个 OPC Classic 规范都定义了自己的地址空间模型和自己的服务集。OPC UA 将以前的模型统一到具有一组服务的单个集成地址空间中。
抽象和映射
如果通信方能够交换比特流并赋予这些流相同的含义而没有任何歧义,则可以实现系统的互操作性。不幸的是,网络上的信息表示和通信协议是不断发展的,如果不是现在的革命的话。这对于任何长期举措来说都是危险的。由于不可能阻止技术变革的进步,因此必须采取一些其他预防措施,以使规范在长期范围内保持活力。它是通过将规范提供的定义与其实际实现明确分离来实现的。它使OPC UA从一种技术无缝移植到另一种技术。规范中定义的映射规定了如何使用特定技术实现 OPC UA 功能。例如,OPC UA 二进制编码的映射指定如何将 OPC UA 数据结构序列化为字节序列。
此外,定义和实现的分离使解决方案更加灵活和可扩展,这要归功于自由(在某种程度上)选择适合当前通信方需求的技术。不幸的是,它可能会导致不利的互操作性问题,因为互连系统必须能够使用相同的通信机制。通过配置文件和协商机制的定义,部分克服了这一问题。
安全
安全性是计算机系统的一个基本方面,特别是那些专用于企业和流程管理的系统。特别是在这种应用中,安全性必须健壮而有效。安全基础结构还应足够灵活,以支持不同组织所需的各种安全策略。OPC UA可以部署在不同的环境中;从驻留在同一主机上的客户端和服务器,到位于同一操作网络上的主机,这些主机受安全边界保护,将操作网络与外部连接分开,直到使用公共网络基础设施在全球环境中运行的应用程序。根据环境和应用程序要求,通信服务必须提供不同的保护措施才能使解决方案安全,因此OPC UA规范必须提供可扩展性。
OPC UA Security关注客户端和服务器的身份验证,用户的授权,其通信的完整性和机密性以及客户端服务器交互的审计。为了实现这一目标,安全性被集成到OPC UA服务器和客户端的设计和实施的各个方面。OPC基金会还解决了实施过程中出现的安全问题。这包括对安全性各个方面的独立审查,从规范(在WS *规范上构建和建模)提供的深入安全性的设计开始;由OPC基金会提供的实际实施。OPC基金会选择使用行业标准安全算法和行业标准安全库来实现OPC UA安全(请参阅OPC UA电子书)。
安全机制可以通过不同的通信层提供。传输级安全性是一种仅限于点对点消息传递的解决方案。在这种情况下,可以通过使用例如传输层安全性(TLS)或IPSec协议在两个主机之间建立安全连接(关联)来保护消息。但是,如果在使用安全传输时存在中介,则初始发送方和最终接收方需要信任这些中介来帮助提供端到端安全性,因为每个跃点都是单独保护的。此外,为了明确信任所有中介机构,还必须考虑其他风险,例如消息的本地存储以及中介机构受到损害的可能性。因此,仅使用传输安全性会将安全解决方案的丰富性限制为特定于传输的功能。OPC UA 是一种以会话为中心的通信。因此,安全关联必须在单个传输连接之外存活。
为了满足上述要求,OPC UA安全架构被定义为一个通用解决方案,允许在应用程序架构的不同位置实现所需的安全功能。OPC UA 安全体系结构构建在应用层和传输层顶部的通信层中。
客户端应用程序和服务器应用程序传输工厂信息、设置和命令的例行工作在应用程序层的会话中完成。应用层还管理用户身份验证和用户授权。OPC UA 客户端和服务器应用程序使用 X.509 证书标识和验证自身。客户端将用户身份令牌传递到 OPC UA 服务器。OPC UA 服务器对用户令牌进行身份验证。应用程序接受以下三种形式之一的令牌:用户名/密码、X.509v3 证书或 WS-SecurityToken
应用层中的会话通过通信层中创建的安全通道进行通信,并依靠该通道进行安全通信。所有会话数据都传递到通信层进行进一步处理。安全通道负责消息完整性、机密性和应用程序身份验证。
OPC UA使用对称和非对称加密来保护机密性作为安全目标。OPC UA依靠站点网络安全管理系统来保护网络和系统基础设施的机密性,并利用公钥基础设施来管理用于对称和非对称加密的密钥。OPC UA 使用对称和非对称签名将完整性作为安全目标进行处理。
配置 文件
OPC UA 旨在支持从工厂级 PLC 到企业服务器的各种服务器。这些服务器的特点是各种大小,性能,执行平台和功能能力。因此,OPC UA定义了一组全面的功能,其中服务器可以实现其中的一个子集。这些子集称为配置文件,服务器可以声明符合这些子集。然后,客户端可以发现服务器的配置文件,并根据配置文件定制它们与该服务器的交互。客户端还包含配置文件,允许最终用户将服务器配置文件与客户端配置文件进行匹配,从而更轻松地确保不同的客户端和服务器将进行互操作。服务器还可以发现这些客户端配置文件,并可以根据客户端配置文件定制其对客户端的响应。
鲁棒性
OPC UA旨在提供已发布数据的稳健性。所有OPC UA服务器的主要功能是能够发布数据和事件通知。OPC UA 为客户端提供了快速检测与传输相关的通信故障并从中恢复的机制,而无需等待基础协议提供的长时间超时。
OPC UA的设计确保供应商能够以一致的方式创建冗余客户端和冗余服务器。冗余可用于高可用性、容错和负载平衡。通常,我们可以区分冗余:服务器/客户端,通信路径和信号。尽管该规范仅提供对客户端/服务器冗余的支持,但产品供应商可以将各种冗余合并到规范建议的框架中。例如,服务器可以建立无线连接作为从电缆连接故障中恢复的方法,或者服务器可以使用绑定到变量的许多数据源来提供变量值的连续更新,即使其中一个传感器已损坏也是如此。
OPC UA 需要有状态模型作为提高解决方案稳健性的下一个功能。状态信息在应用程序会话中维护。状态信息的示例包括订阅、用户凭据和跨多个请求的操作的继续点。
会话被定义为客户端和服务器之间的逻辑连接。值得强调的是,每个会话都独立于底层通信协议。这些协议的失败不会自动导致会话终止。会话根据客户端或服务器请求或客户端的不活动终止。