An OPC .NET wrapper is a software layer that makes OPC COM servers accessible from a .NET client application.
Largely different pieces of software, that can hardly be compared, fit this description and are rightfully called OPC .NET wrappers. This documents explains the different software layers that are or can be part of an OPC .NET wrapper.

The aim of this document is to give an overview and help determine what kind of wrapper should be chosen in a specific application.

Run-time callable wrapper (RCW)
This layer is required in each OPC .NET wrapper. It does handle the call of a COM server method from a .NET application. This is all it does. Data type conversions and dynamic memory allocations need to be handled outside the RCW.

COM Interop
This layer handles data type conversions and dynamic memory allocation. Strings, variants, arrays etc. need to be converted when passed to the COM server or returned from it. This is the most difficult layer in a .NET wrapper. It is error prone and can introduce memory faults and memory leaks if not done properly. It takes months of development and testing to write such a software layer.

.NET API
The OPC Foundation has not yet standardized the .NET API. Each wrapper product and custom implementation has therefore a different application interface and oriented on different goals:

  • Modeled after the OPC DA ( respectively AE or HDA ) specification. 
    Supporting the OPC server functions on-to-one gives highest performance. Having an identical set of functions does not standardize the API. The OPC DA method interface has to be adapted to .NET data types, which can be done in different ways.
  • Optimized for certain applications, such as e.g. ASP applications. 
    Such an API is easier to use, on cost of flexibility.
  • According the XML-DA specification. 
    The XML-DA standard specifies SOAP messages and .NET makes a transformation into method calls. A wrapper with the same API as generated for the XML-DA web services can be used in place of the web service stub. Clients can be developed as XML-DA client applications and still access OPC DA (COM) servers.
  • OPC-DA and XML-DA combination.
    Both types of servers can be accessed through the same API. Since the OPC-DA interface has far more features, the wrapper has to simulate features that are not available in XML-DA. A lot of OPC DA emulation is required when the newer XML-DA type servers are accessed. Typically APIs are optimized for the newest standard and emulation is done to provide compatibility with older standard.

Helper Methods
Helper methods can simplify usage. For example the OPC DA 2 browse interface is very basic. Helper methods can make features more convenient to use and e.g. provide a browse interface according the OPC DA 3 specification. Another example are DirectIO read/write methods. OPC DA 3 specifies such easy to use methods. The .NET wrapper can offer such methods also for OPC DA 2 servers.
Helper methods can address features that are not directly related to server access, such as reading item definition arrays from an XML file.

OPC .NET Wrapper Products

The remarks above illustrate that an OPC .NET wrapper is a rather complex software component that can be implemented differently. A number of vendors offer such implementations. A overview can be found atwww.opcconnect.com/dotnet.php

To select a product the user needs to determine what's important in his applications:

  • Type of client applications ( Windows, ASP, ASP.NET, etc. )
  • Type of servers to be accessed, now and in the future ( OPC DA, AE, HDA, XML-DA )
  • Performance requirements

Development Tools
Listed above are components that are required in the wrapper to access the server. 
A good software component should not only provide these features but also good support for the application development process. That includes wizards, documentation and utilities for configuration and test support.

Wizards
Wizards can greatly simplify the project creation process and reduce the training requirements. Wizards can be added to Visual Studio and can create a client application that contains the server access components selected in the wizard dialog. The application development can start on a simple but functional code that contains the needed elements.

Documentation
Extensive documentation is essential for the efficient use of software components. The documentation can be provided as HTML, Windows CHM help file or it can be integrated into Visual Studio for context sensitive help.

Utilities
Utilities provided with the wrapper product eliminate the need to develop such tools as part of the project. Often needed utilities are:

Test Clients Test clients are are an important reference tools in case of problems with the client application. The test client should use the same .Net wrapper.
Configuration Tools If clients use a predefined set of items then it's good practice to define these items in an XML configuration file. The wrapper product can supply a helper class to load the XML file and a Windows application to created/modify the XML file.

What is an OPC .NET Wrapper ?的更多相关文章

  1. OPC and .NET

    Note: recent OPC standards, including Unified Architecture (UA) and Express Interface (Xi) were desi ...

  2. 用C#开发基于自动化接口的OPC客户端

    OPC全称是Object Linking and Embedding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁.OPC作为一 ...

  3. C#实现 OPC历史数据存取研究

    来源:http://blog.csdn.net/gjack/article/details/5641794 C#实现 OPC历史数据存取研究 (原文)Research of Accessing the ...

  4. (OPC Client .NET 开发类库)网上很多网友都有提过,.NET开发OPC Client不外乎下面三种方法

    1. 背景 OPC Data Access 规范是基于COM/DCOM定义的,因此大多数的OPC DA Server和client都是基于C++开发的,因为C++对COM/DCOM有最好的支持.现在, ...

  5. 关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题

    为了能够在工作中方便的应用OPC和充分的理解OPC的开发流程.内部机制,这两天正在研究开发OPC客户端程序,一般我们开发OPC客户端程序有以下几种方式: (1)       使用OPCNetAPI,需 ...

  6. gradlew wrapper使用下载到本地的gradle.zip文件装配--转

    原文地址:http://www.myexception.cn/mobile/1860089.html gradlew wrapper使用下载到本地的gradle.zip文件安装.使用gradlew来b ...

  7. Could not find or load main class org.gradle.wrapper.GradleWrapperMain解决办法

    解决办法: gradlew is the gradle wrapper executable - batch script on windows and shell script elsewhere. ...

  8. 使用Windows Service Wrapper快速创建一个Windows Service

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

  9. [发布]SuperIO v2.2.5 集成OPC服务端和OPC客户端

    SuperIO 下载:本站下载 百度网盘 1.修复串口号大于等于10的时候导致IO未知状态. 2.优化RunIODevice(io)函数内部处理流程,二次开发可以重载这个接口. 3.优化IO接收数据, ...

随机推荐

  1. 20165301 2017-2018-2《Java程序设计》课程总结

    20165301 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期待的师生关系 预备作业2:学习基础与c语言学习心得 预备作业3: Linux安装及命 ...

  2. 移动端自动化测试(二)之 Appium常用的API(python)函数介绍

    上一章节已经介绍了Appium的环境搭建,其实只要掌握了Appium的工作原理,前期的准备工作和安装过程是比较简单的.那么当我们搭建好Appium环境后接下来做些什么呢?通常思路是开始appium的第 ...

  3. Ionic Js八:头部和底部

    1.ion-header-bar 这个是固定在屏幕顶部的一个头部标题栏.如果给它加上'bar-subheader' 这个样式,它就是副标题. <ion-header-bar align-titl ...

  4. ThinkPHP导入第三方类库Vendor

    详情查看ThinkPHP3.2手册 架构 > 自动加载 章节 vendor('Uploader','','.class.php')

  5. JAVAEE——SSH项目实战06:统计信息管理、Spring注解开发和EasyUI

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7190925.html 一.统计信息管理   二.Spring注解开发 1.service ...

  6. linux命令大全之cal命令详解(显示日历)

    cal命令可以用来显示公历(阳历)日历. 1.命令格式:cal [参数][月份][年份] 2.命令功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年 ...

  7. 维护直线的线段树:Bzoj1568,Bzoj3938(Uoj88)

    有这样一类线段树,可以维护一些直线方程并对每个点求出最大值. 首先先看BZOJ1568,输入给你条直线的方程,你需要对于指定的位置求出最大的函数值. 看到数据范围nlog^2n可做,考虑用线段树去维护 ...

  8. 【取对数】【哈希】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem J. Bobby Tables

    题意:给你一个大整数X的素因子分解形式,每个因子不超过m.问你能否找到两个数n,k,k<=n<=m,使得C(n,k)=X. 不妨取对数,把乘法转换成加法.枚举n,然后去找最大的k(< ...

  9. Easy File Sharing Web Server 6.9远程溢出漏洞

    from struct import pack import socket,sys import os host="192.168.109.129" port=80 junk0 = ...

  10. Siege(开源Web压力测试工具)——多线程编程最佳实例

    在英语中,"Siege"意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的 ...