1    什么是OPC协议

为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范。有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据。

OPC基金会前前后后规定了不同的接口定义,如下:

• OPC DA (Data Access, exchange of real-time values)

• OPC A&E (Alarms & Events, exchange of alarms and events)

• OPC HDA (Historical Data Access, exchange of historical values)

• OPC XML DA (XML-based exchange of real-time values)

2      OPC DA是什么?

OPC DA指代的是 OPC数据访问规范。它是由OPC基金会定义的其中一种通信规范, 定义了实时数据如何在数据源数据接收体(比如PLC, HMI)之间, 在不知道彼此特定通信协议的情况下仍然进行交换、传输

2.1     为什么OPC DA如此受欢迎?它和过去的通信协议有什么不同?

OPC DA客户端/服务器结构服务器结构是OPC基金会界定的首个结构。在OPC DA 之前, 供应商的产品(设备、PLCs、HMIs)要求与这些产品相连接的任何设备或应用程序要自带“特制驱动”, 以在第三方通信和所涉及的供应商产品之间进行数据传译。像这样基于“特制驱动”的通讯存在许多问题, 其中最常见的有:成本高、将用户限制在某一特定供应商、由于每一个特制驱动都有其独有的处理方式而造成配置和维护的困难、由于新设备和应用程序的层出不穷而造成难于更新。相比之下,OPC DA却可以与任何实时数据源相连接, 也不需要为数据源数据接收端特制任何驱动程序。 因此, 数据接收器不需要了解数据源的本地协议或内部数据结构就可以进行读和写。

2.2     OPC DA规范是只有一种吗?

很难说是或不是。因为OPC DA规范由OPC基金会来维护, 它们已经经过多次修订。主要版本包括:

年份     版本     备注

1996    1.0       初始规范。

1997    DA 1.0a      数据访问(DA), 该名称用于区分与其并行开发的其它规范。

1998    DA 2.0 - DA 2.05a   多处规范澄清和修改。

2003    DA 3.0 进一步补充和修改。

考虑到有不同版本的OPC 数据访问(OPC DA)规范, 关键问题是:这些版本反向兼容吗? 例如:OPC DA 1.0a 客户端是否可以与OPC DA 3.0 OPC服务器通讯?答案是:这取决于具体情况。

2.3     数据访问OPC客户端及OPC服务器反向兼容性

开发商编写反向兼容的OPC客户端及OPC服务器是值得推荐的, 同时这也是可以实现的。然而, 因为反向兼容性是可选功能, 而不是强制功能, 这意味着会有许多开发商选择(并且会继续)开发仅仅遵循一种或两种规范的OPC DA服务器, 而不是遵循所有规范。这样的话, 那些非反向兼容的OPC服务器及OPC客户端仍然向用户提供OPC所带来的些许优势, 但仅仅局限于特定版本的规范。好消息是MatirkonOPC不仅开发完全反向兼容的OPC服务器, 也提供OPC数据管理产品(如: OPC Data Manager及OPC Security Gateway)。这些产品在非向后兼容的OPC客户端及服务器之间, 通过及时地在 OPC DA不同规范之间转换实现彼此通讯。

3      如何使用OPC 数据访问规范 (DA)

3.1     何时使用OPC DA?

简单的回答就是:用于需要传输实时数据的任何时刻。对于需要考虑的多种情形, 下表介绍了最常见的几种类型, 简述了一些难点, 并给出了利用标准OPC组件加以解决的相关建议。

数据源

数据接收端(用户)

OPC解决问题

相关建议

控制器(外部PLC)

应用程序(HMI)

不同厂商的控制器均使用各自的通信协议。OPC省去了HMI 针对各控制器“定制驱动器”的需要。

- 控制器:使用 OPC 服务器 for 控制器 X
- 应用程序:通常有内置的OPC客户端。如果没有, 则可使用适用于该应用程序Y的OPC DA 客户端。

控制器/设备

控制器或控制设备

备 OPC服务器为您解决了控制器之间的通信, 因为各产品均采用各自厂商的通信协议, 不同于控制器与应用软件间的通信。

- 数据源端、数据接收端的控制器X和Y分别需使用OPC DA服务器
for X和OPC DA 服务器for Y。
- 使用 OPC
Data Manager
, 在两控制器间实现有关实时数据的智能化传输。

控制器/设备

关系数据库

关系数据库利用“结构化查询语言”(SQL)通过“开放数据库互联”(ODBC)协议进行通信;而控制器和控制设备则利用各自的自定义协议。找到一个贯穿两者的数据桥并非易事, 通常需要一定的技术经验才能建立起来。

- 利用 OPC
DA Client for ODBC
从OPC服务器中获取实时OPC数据, 通过SQL/ODBC将其准确地传输到数据库。
- 利用 OPC DA 服务器 for 设备 X 公开数据。

- 注:OPC DA为双向式通信, 因此在必要时, 也可将实时数据从数据库写入设备或控制器中, 或将应用程序的数据写入OPC客户端。

控制器/设备

过程历时数据库(Historian)

过程历史数据库采集的是实时数据, 它们通常有自己的通信协议和自定义驱动来收集各种设备或应用程序的数据。这里的难点是找到一个历史数据库不仅支持现有设备还要支持将来可能出现的数据源。

历史数据库有其自己的标准协议, 且几乎所有的historian都有内置OPC DA客户端。 OPC Desktop Historian 就是这种有内在OPC接口历史数据库的其中一个。

- 对于数据源:用一个用于数据源X的 OPC DA服务器即可。

冗余的设备

控制器/应用程序

按照传统的方式, 如果控制器或应用程序不支持设备级冗余, 为保证设备的冗余性, 额外的硬件是需要的。

- 对控制器:需要用于控制器X的OPC服务器。
- 不同的设备可以使用不同的OPC服务器。
- 使用 OPC
Redundancy Broker (ORB)
来实施冗余机制。
- 对应用程序(如:HMI或Historian):可以用 OPC客户端用于应用程序X。

远程设备(数据采集与监视控制系统)SCADA:例如,远程终端控制系统RTU

应用程序/控制器

由于通讯故障和低频带宽, 与远程设备和数据来源之间的通信一般较为复杂, 同时也更昂贵。而自定义驱动程序的问题在于不同通信渠道的稳定性难以保障

远程设备应该选择SCADA类的OPC服务器。跟一般现场应用的OPC服务器不同, 这类OPC服务器是专门为适应复杂的SCADA工作环境而设计的。(例如, MatrikonOPC
Server for SCADA Modbus
)

3.2    
可以用OPC DA传输历史数据吗?

不能。任何OPC DA都是专用于传输当前数据的。一旦当前数据已经被读, 下一数据的读取就会开始, OPC DA没有为OPC DA客户端提供历史数据的接口。如果要传输历史数据, 需要使用同样基于
OPC客户端-服务器结构 的OPC历史数据存取规范(OPC HDA)。

3.3    
同一供应商生产的OPC DA客户端程序可与不同供应商的OPC服务器搭配工作吗?

一般情况下是可以的, 在OPC DA客户端与服务器都支持同样版本的OPC DA规范(见上文)或者至少其中一个能够反向兼容的条件下。

4      OPC客户端-服务器结构

OPC 通信结构是指包含一个或多个OPC客户端与服务器相互通信的集合。最简单的理解方式, 便是读懂如下这张数据流程图。它显示了数据由数据源从下至上到达数据接收体的过程。

OPC 服务器:在这个例子中, 如果数据源有一个内在的OPC客户端,
那么外在的OPC客户端就不是必须的了。

OPC
通信
:因为OPC基金组织定义了多种 OPC通信规范 保证可以传送不同形式的数据信息, 所以OPC开发商和用户必须理解OPC服务器和客户端的通信有时候不局限于单一的数据访问形式。这个概念的理解之所以重要, 是因为同一种OPC服务器往往会支持多于一种的OPC数据访问规范。

OPC协议解析-关于OPC协议的几个问题的更多相关文章

  1. SOCKS5 协议解析

    代理 根据 HTTP 1.1 的定义,proxy 是: An intermediary program which acts as both a server and a client for the ...

  2. OPC协议解析-OPC UA OPC统一架构

    1    什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...

  3. OPC协议解析-OPC客户端与服务器通讯解析

    1      OPC服务器 OPC服务器, 是指按照OPC基金组织规定的OPC规范群开发的软件驱动.OPC服务器作为中间媒介负责从数据源读取数据再跟另外一端的客户端通信.在 OPC客户端/服务器 的结 ...

  4. 转:OPC协议解析-OPC UA OPC统一架构

    1    什么是OPC UA 为了应对标准化和跨平台的趋势,为了更好的推广OPC,OPC基金会近些年在之前OPC成功应用的基础上推出了一个新的OPC标准-OPC UA.OPC UA接口协议包含了之前的 ...

  5. 【工控老马】OPC通讯协议解析-OPC七问

    1 通讯步骤 1.1 第一问 OPC Client和OPC Server之间通讯谁是主动的? 答:当然是OPC Client. 1.2 第二问 OPC Client第一次动作做了什么? 答:从大多数O ...

  6. ts 协议解析

    pes : http://wenku.baidu.com/link?url=KjcA0qXqZ1bWVQTa8i1YOmygofldSQL7Pjj-zGRw1e_6_LFmVLo5DIWF0SNwVn ...

  7. [转]netty对http协议解析原理

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  8. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

  9. twemproxyRedis协议解析探索——剖析twemproxy代码正编

    这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令.在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是 ...

随机推荐

  1. [Swift]LeetCode859. 亲密字符串 | Buddy Strings

    Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...

  2. springmvc 请求参数解析细节

    springmvc 的请求流程,相信大家已经很熟悉了,不熟悉的同学可以参考下资料! 有了整体流程的概念,是否对其中的实现细节就很清楚呢?我觉得不一定,比如:单是参数解析这块,就是个大学问呢? 首先,我 ...

  3. vue总结

    1.库和框架的区别 库:jquery 本质上就是一些列函数的集合,将一些函数封装到一个独立的就是文件中 在使用的jquery的时候,是由开发人员说了算的,也就是说开发人员起到了主导作用,而jquery ...

  4. 目标文件去除header一行开头的#号

    请按照如下步骤进行配置: --> 打开session的Config Object选项卡,并编辑Custom Properties选项 -->  编辑Custom Properties项目 ...

  5. 一个老程序员是如何手写Spring MVC的

    人见人爱的Spring已然不仅仅只是一个框架了.如今,Spring已然成为了一个生态.但深入了解Spring的却寥寥无几.这里,我带大家一起来看看,我是如何手写Spring的.我将结合对Spring十 ...

  6. JVM基础系列第2讲:Java 虚拟机的历史

    说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待.但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM.Exact VM.BEA JRock ...

  7. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  8. Vue Route Building the UI back-end framework

    Vue 的 路由就像ASP.NET MVC路径相似. 路由定义文件也是js格式的,我们都将这些文件放入到src的route文件中. 后台框架主入口: <template> <div ...

  9. Java 多线程(五)—— 线程池基础 之 FutureTask源码解析

    FutureTask是一个支持取消行为的异步任务执行器.该类实现了Future接口的方法. 如: 取消任务执行 查询任务是否执行完成 获取任务执行结果(”get“任务必须得执行完成才能获取结果,否则会 ...

  10. 将Maple输出的LaTex导出到txt文件

    将Maple输出的LaTex导出到txt文件 1. 生成LATEX Maple可以把它的表达式转换成LATEX, 使用latex命令即可: > latex(x^2+y^2=z^2); {x}^{ ...