《8B序与基于COM的OPC数据存取服务器交换数据》.pdf
文本预览下载声明
研究C#程序与基于COM的OPC数据存取服务器交换数据
何海江
(湖南经济管理干部学院计算机系 ,湖南长沙 410004)
摘要:研究了OPC NET COM自动化包装器所封装的COM编排技术和OPC NET应用
程序接口内的设计模式。在其基础上使用C#语言编写了一个基于.NET的OPC客
户程序,与基于COM的OPC数据存取服务器交换数据。有效地实现了将遵循OPC
规范的代码从COM平台移植到.NET平台。
关键词:C#;COM编排;数据存取服务器;设计模式
Study C# program to exchange data with COM based OPC data access server
He Hai-jiang
( Department of Computer Science of Hunan Economic Management
College ,Hunan Changsha 410004 )
Abstract:The marshal technique from OPC NET COM Wrapper and design
patterns from OPC NET API are researched. An OPC client software based
on .NET is built on the basis of these technique with C# language,it is
employeed to exchange data with OPC data access server based on COM.It
is effectively realized to migrate the code following OPC specifications
from COM plantform to .NET plantform.
Key Words:C#;COM marshal;data access server;design pattern
C#是微软为.NET平台量身订作的新程序语言,特别适合组件的开发,当前软
件工业中许多产品的新版本逐步转移到的.NET平台。OPC是工业软件中广泛采用
的数据交换协议,许多数据采集设备都要求提供实现OPC数据存取规范的服务
器,和上层软件交换数据。因此研究在C#中实现OPC有很大的现实意义。OPC
数据存取规范从1.0版本到2.05,再到3.0版本,微软的分布式应用软件开发
平台从COM到.NET,导致了许多的不兼容问题。笔者从事的工业过程数据仓库系
统中就存在这样的情况,许多供应商的OPC服务器是在COM平台开发的,而应用
软件需要在.NET框架下实现,要求和已经安装好的那些COM平台服务器通讯,
必须解决如何使OPC应用在两个平台间无缝迁移。
COM和.NET是两个差别很大的分布式应用软件开发平台,如果要在.NET 应
用中使用COM对象,需要通过RCW(runtime-callable wrapper, 运行环境可调
用包装器)在可管理的.NET代码和未托管的COM代码之间生成一个代理。Visual
Studio.NET提供了一个工具类型库导入器TlbImp.exe,可以方便地提取COM程
序的信息。实现了自动化接口的OPC服务器可以使用这种方法。但大多数的OPC
服务器只实现定制接口,该方法无法实现,需要手工编排COM中的IDL(Interface
Definition Language,接口定义语言),工作量非常大。编排过程中会遇到包括
数据类型转换、接口实现、参数传递等许多问题的困扰,自动化软件要求高可靠
性,要编写这样的软件,软件测试和维护的工作量很大。现在OPC基金会对会员
提供了OpcRcw动态链接库,OPC NET COM 包装器和OPC NET API,前两者完成
了前述的工作,后者将OPC复杂的规范封状成简单易用的C#类。本文分析了这
些组件的核心代码,在此两种技术的基础上,建立一个.NET框架的OPC客户软
件,与基于COM的OPC数据存取服务器交换数据。文中提供一个应用实例,代码
全部使用C#实现,分五个步骤说明。
1 组件核心内容
OPC基金会提供的这些组件,包括源代码和部分文档,但文档部分比较简单,
在软件设计过程中,大量使用了抽象工厂模式和策略设计模式。要理解这些设计
模式,需
显示全部