jjzjj

什么是opc ua通信?opc ua的介绍

澈屿Kaka 2024-04-09 原文

什么是opc ua通信?opc ua的介绍

一、OPC-UA通讯的产生

为了应对各生产基地的通讯机制不一样,需要一个标准化的通讯格式来统一各种设备平台的通讯。其中OPC标准的的OPC-UA网络协议就是为了应对标准化和跨平台的趋势而推出,并得到了越来越多的FA(工厂自动化)和PA(过程自动化)的应用。

在OPC出现以前,软件开发商需要开发大量的驱动程序来连接这些设备。即使硬件供应商在硬件上做了一些小小改动,应用程序也可能需要重写。同时,由于不同设备甚至同一设备不同单元的驱动程序也有可能不同,软件开发商很难同时对这些设备进行访问以优化操作。为了消除硬件平台和自动化软件之间互操作性的障碍,建立了OPC软件互操作性标准,开发OPC的最终目标是在工业控制领域建立一套数据传输规范。

OPC技术第1代,OPC-DA,需要使用上位WINDOWS计算机进行中间转换,实现PC系统与不同品牌的控制系统之间的数据通信。

OPC技术第2代,OPC-UA,不需要使用上位WINDOWS计算机进行中间转换,可同时控制计算机和各种控制器的动作,并能交换结构化数据。

二、OPC-UA简介

OPC UA(OPC Unified Architecture,基于OPC统一架构的时间敏感网络技术) ,OPC UA 是一个新的工业软件接口规范,其目的在于提出一个企业制造模型的统一对象和架构定义,具有跨平台、增强命名空间、支持复杂数据内置、大量通用服务等新特点。建立支持网络间互操作的时间敏感机制,突破性实现信息技术(IT)与操作技术(OT)在物理层、数据链层、网络层、传输层、会话层、表达层和应用层全面融合的技术。该技术基于国际电工委员会(IEC)和电气和电子工程师协会(IEEE)国际标准搭建,可为工业互联网网络体系构建提供标准化模块,是建立从传感器到云端大带宽、高同步、广兼容通讯的关键技术。

为了区别于以往的经典 OPC 技术,OPC 基金会重新定义 OPC 含义:开放(Openness)、生产力(Productivity)、协作性(Collaboration)。它将发展了12年的现行的OPC技术推进和连结为一个整合的平台,该平台将从 DCOM 构架迁移到基于 Web Service 技术的框架下。

OPC UA实质上是一种抽象的框架,是一个多层架构,其中的每一层完全是从其相邻层抽象而来。这些层定义了线路上的各种通信协议,以及能否安全地编码/解码包含有数据、数据类型定义等内容的讯息。利用这一核心服务和数据类型框架,人们可以在其基础上(继承)轻松添加更多功能。

使用了OPC-UA通讯后,统一了各种各样不同品牌控制器的通讯机制和数据交互格式,实现标准化,不管工厂分布在全球不同地方,都能实现数据交互。

三、OPC UA规范 目前,OPC UA 规范包含核心规范部分与存取类型规范部分,其中核心规范部分包括 OPC UA Data Access、OPC UA Alarms and Conditions、OPC UA Programs以及OPC UA Historical Access规范;存取规范部分包括OPC UA Security Model、OPC UA Address Space Model、OPC UA Services、OPC UA Information Model、OPC UA Service Mappings 和 OPC UA Profiles 等。

OPC UA多层方法实现了最初设计UA规范时的目标:

  • 功能对等性:所有COM OPC Classic规范都映射到UA

  • 平台独立性:从嵌入式微控制器到基于云的基础设施

  • 安全性:信息加密、身份验证和审核

  • 可扩展性:添加新功能而不影响现有应用程序的能力

  • 综合信息建模:用于定义复杂信息

四、OPC UA系统结构

和现行OPC一样,OPC UA 系统结构包括 OPC UA 服务器和客户端两个部分, 每个系统允许多个服务器和客户端相互作用。

(1)OPC UA 客户端 OPC UA 客户端的体系结构包括客户终端的客户端/服务器交互。 它包括OPC UA 客户端应用程序、OPC UA 通信栈、OPC UA 客户端 API。使用OPC UA客户端API与OPC UA服务器端发送和接收OPC UA服务请求和响应。

(2) OPC UA 服务器 OPC UA 服务器代表客户端/服务器相互作用的服务器端点。 它主要包括OPC UA 服务器应用程序、真实对象、OPC UA地址空间、发布/订阅实体、OPC UA 服务器接口 API、OPC UA通信栈。使用OPC UA服务器API从OPC UA客户端来传送和接收消息。

OPC UA 客户端与服务器主要的交互形式是:通过客户端发送服务请求,经底层通信实体发送给OPC UA通信栈,并通过服务器接口调用请求/响应服务,在地址空间的节点上执行指定任务之后,返回一个响应;客户端发送发布请求,经底层通信实体发送给OPC UA通信栈,并通过服务器接口发送给订阅,当订阅指定的监视项探测到数据变化或者事件/警报发生时,监视项生成一个通知发送给订阅,并由订阅发送给客户端。

五、OPC UA的优势:

在生产管理软件的不断发展过程中,标准的采用也在不断更新,为适应应用需求的发展,适时推出的OPC UA规范,为企业软件架构的建立指明了新的方向。 OPC UA 具备以下新的特点:

(1)功能方面,OPC UA不仅支持传统OPC的所有功能,更支持更多新的功能:

  1. 网络发现:自动查询本PC机中与当前网络中可用的OPC Server。

  2. 地址空间优化:所有的数据都可以分级结构定义,使得OPC Client不仅能够读取并利用简单数据,也能访问复杂的结构体。

  3. 互访认证:所有的读写数据/消息行为,都必须有访问许可。

  4. 数据订阅:针对OPCClient不同的配置与标准,提供数据/消息的监控,以及数值变化时的变化报告。

  5. 方案(Methods)功能:OPC UA中定义了通过在OPCServer中定义方案(Methods),来让OPC client执行特定的程序。

  6. 复杂数据内置:在新的数据获取标准OPC DA中增加了复杂数据规范。

  7. 增强的命名空间:在目前的 OPC 规范中支持将数据组织成层次结构,OPC UA 更支持无限的节点命名和无限的关系设定,同时每个节点均可以对其他节点有无限的关系设定。

  8. 大量的服务功能:OPC UA 规范定义了大量的通用服务。

  9. 采用UA 二进制编码,使数据快速编码和解码,提高了数据的传输速度。 它还能集成现有的基于COM/DCOM技术开发的OPC 服务器(DA、HAD、A&E),使它们很容易通过 OPC UA 映射和使用。

(2)平台支持方面,由于不再基于COM/DCOM技术,基于TCP/IP 通信,同时利用了Web Service 技术、XML技术以及.NET 架构,解决了跨越微软系统平台,实现了多平台的互操作性。OPC UA标准提供了更多的可支持的硬件或软件平台。

(3)安全性方面,集成的OPC UA 数据加密功能符合国际安全标准,为Internet 及各企业网络内的远程访问和数据共享、客户端和服务器之间的安全通讯提供了保障。最大的变化是OPC UA可以通过任何单一端口(经管理员开放后)进行通信,这使得OPC通信不再会由于防火墙受到大量的限制。

OPC UA在通过防火墙时通过提供一套控制方案来解决安全问题:

  • 传输:定义了许多协议,提供了诸如超快OPC二进制传输或更通用的SOAP-HTTPS等选项

  • 会话加密:信息以128位或256位加密级别安全地传输

  • 信息签名:信息接收时的签名与发送时必须完全相同

  • 测序数据包:通过排序消除了已发现的信息重放攻击

  • 认证:每个UA的客户端和服务器都要通过OpenSSL证书标识,提供控制应用程序和系统彼此连接的功能

  • 用户控制:应用程序可以要求用户进行身份验证(登录凭据,证书等),并且可以进一步限制或增强用户访问权限和地址空间“视图”的能力

  • 审计:记录用户和/或系统的活动,提供访问审计跟踪

六、opc ua信息模型(Information model)

(1)OPC UA 使用了对象(objects)作为过程系统表示数据和活动的基础。对象包含了变量,事件和方法,它们通过引用(reference)来互相连接。

(2)OPC UA 信息模型是节点的网络(Network of Node,),或者称为结构化图(graph),由节点(node)和引用(References)组成,这种结构图称之为OPC UA 的地址空间。这种图形结构可以描述各种各样的结构化信息(对象)。

地址空间要点:

  • 地址空间是用来给服务器提供标准方式,以向客户端表示对象。

  • 地址空间的实现途径是使用对象模型,通过变量和方法的对象,以及表达关系的对象。

  • 地址空间中模型的元素被称为节点,为节点分配节点类来代表对象模型的元素。

  • 对象及其组件在地址空间中表示为节点的集合,节点由属性描述并由引用相连。

  • OPC UA建模的基本在于节点和节点间的引用。

七、发展现状

为了更好的对OPC进行系统的维护与管理,成立了OPC基金会。OPC基金会的使命是管理一个由最终用户、供应商和联盟合作创建用于多厂商、多平台、安全可靠的工业自动化互操作性数据传输标准的全球性组织。为了支持这一使命,OPC基金会与业界领先的标准组织合作,着力完成创建和维护技术标准规范,并通过产品认证测试,确保产品符合OPC规范。

OPC基金会的成员可开发与OPC标准相关的产品,研发的产品需要被OPC基金会所认定,认证的产品是经过OPC实验室合规性,互操作性等严格测试,通过认证的产品,更具耐用性,可靠性和可用性。

八、应用展望

OPC UA技术具备优秀的信息建模、通信传输、跨平台等性能,让数据采集、信息模型化以及底层与企业层面之间的通信更加安全、可靠。这使得OPC UA在多个技术领域获得应用,如IEC、美国和DKE等国家或标准化组织发布的智能电网标准化Roadmap,都将OPC UA技术作为重要的支撑标准列出。德国提出的新一代工业制造技术“工业4.0”中,也将OPC UA作为支撑技术之一。综上所述,OPC UA技术作为重要的信息集成标准,将在不同领域和企业不同层级获得广泛应用。

有关什么是opc ua通信?opc ua的介绍的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  7. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  8. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  9. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  10. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

随机推荐