OPC服务器快速开发工具WTOPCSvr.DLL的研究 点击:1778 | 回复:0



opcfan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:62帖 | 58回
  • 年度积分:0
  • 历史总积分:667
  • 注册:2004年9月29日
发表于:2007-02-12 12:28:00
楼主
WTOPCSvr.DLL作为一个快速开发OPC服务器的工具包,它封装了所有关于COM和OPC的技术细节,将Microsoft公司的OLE、COM、DCOM技术和OPC的技术细节隐藏起来,使开发OPC服务器的工作集中在特定的数据采集任务上来。利用DLL开发OPC服务器的开发者无需考虑许多涉及到底层接口实现方面的工作,开发者无须掌握ATL、COM/DCOM,也无须了解OPC技术的细节,只需具有基本的编程基础即可快速上手。开发者的应用程序完全可以在一个较高层次上去描述OPC数据。利用这个DLL也可以很容易的实现对现有系统的改造,因为它可以很容易地集成到现有的应用系统中,而无需太多的工作。该工具包支持多个客户端并发访问服务器,并为每个客户端创建一个独立线程。
WTOPCSvr.DLL工具包其实就是一个动态链接库(DLL)。支持OPC l.0和OPC 2.0数据存取规范定义的所有接口,包括实现了浏览器功能的接口。服务器应用程序通过传递一个名字和值给动态链接库去创建过程标签,动态链接库记录这个数据点,同时传送给所有使用这个数据点的客户。任何时候这个服务器应用程序都可以改变这个数据点的值,而所有使用这个数据点的客户都会得到数据值改变的通报。一个连接到服务器的客户改变任何过程标签都会得到调用返回通报消息。动态链接库还支持动态创建OPC标签,如果一个客户请求一个还没有创建的标签,则产生一个调用返回,应用程序就根据这个调用返回的信息创建一个标签。
使用这个动态链接库(WTOPCSvr.DLL)可以迅速地开发OPC数据存取服务器,它提供了一些把定制数据集成到OPC服务器的易于使用的API函数。另外这个动态链接库可以很容易的集成到现有应用中,也可以集成到一个新的应用中。使用动态链接库开发OPC服务器时,关键要求用户对动态链接库的各个API函数要熟悉,从而提高软件开发的灵活性。这个动态链接库包含五大功能块:调用返回定义、初始化和注册函数、OPC项函数、实时信息函数和辅助功能函数。
1 调用返回定义
明确地定义了DLL用于返回给服务器程序的调用返回的具体含义,以实现客户应用与服务器应用之间的数据交换,DLL提供了以下一些API函数。
Declare Function EnableUnknownItemNotification Lib "WtOPCSvr" Alias "_EnableUnknownItemNotification@4" (ByVal Callback As Long) As Long:这个函数的返回值表示一个客户请求了一个没有定义或是己经被暂停刷新的标签,但无论客户请求的标签是否是己定义的标签,这个函数都定义了一个从DLL返回的调用返回。当连接建立后,服务器应用可以使用这个调用返回对动态创建的标签进行操作。
Declare Function EnableItemRemovalNotification Lib "WtOPCSvr" Alias "_EnableItemRemovalNotification@4" (ByVal Callback As Long) As Long:当对一个标签的最后客户引用释放后,这个函数将定义一个来自DLL的调用返回,服务器应用程序可以删除这个标签或暂停这个标签的刷新。
Declare Function EnableDisconnectNotification Lib "WtOPCSvr" Alias "_EnableDisconnectNotification@4" (ByVal Callback As Long) As Long:当客户应用请求断开连接时,这个函数产生一个来自DLL的调用返回通知服务器应用断开连接。
Declare Function EnableWriteNotification Lib "WtOPCSvr" Alias "_EnableWriteNotification@8" (ByVal Callback As Long, ByVal ConvertToNative As Long) As Long:当OPC客户写一个己定义的标签时,这个函数产生一个来自DLL的调用返回。正常情况下,DLL将把值转变成项的私有类型,但在某些情况下,它要求应用自己完成这个转变过程。
2 初始化与注册函数
Declare Function InitWTOPCsvr Lib "WtOPCSvr" Alias "_InitWTOPCsvr@8" (ByRef CLSID_Svr As Byte, ByVal ServerRate As Long) As Long:这个函数实现对DCOM的初始化和创建OPC服务器对象。其中参数CLSID_Svr是OPC服务器的类标识(CLSID)——用于OPC客户连接服务器;参数ServerRate定义了客户的数据刷新速率,其单位是毫秒。如果函数调用成功则返回TRUE,否则返回FALSE。
Declare Function UpdateRegistry Lib "WtOPCSvr" Alias "_UpdateRegistry@16" (ByRef CLSID_Svr As Byte, ByRef Name As Byte, ByRef Descr As Byte, ByRef ExePath As Byte) As Long:这个函数封装了Windows注册函数,用于OPC服务器的注册。其中参数CLSID_Svr是OPC服务器的类标识(CLSID);参数Name定义了服务器的名字;参数Descr可以是任何描述服务器的字符串,但常常包含一些版本信息;参数ExePath定义了可执行程序的完整的Windows路径。如果函数调用成功则返回TRUE,否则返回FALSE。
Declare Function UnregisterServer Lib "WtOPCSvr" Alias "_UnregisterServer@8" (ByRef CLSID_Svr As Byte, ByRef Name As Byte) As Long:这是一个服务器注销函数,其参数CLSID_Svr是OPC服务器的类标识(CLSID);参数Name为服务器的名字。如果函数调用成功则返回TRUE,否则返回FALSE。
3 OPC项函数
Declare Function CreateTag Lib "WtOPCSvr" Alias "_CreateTag@28" (ByRef Name As Byte, ByVal Value As Variant, ByVal InitialQuality As Integer, ByVal IsWritable As Long) As Long:这是一个在动态链接库里创建过程标签的函数,参数Name定义了OPC客户要访问的过程标签,这个名字字符串可以是服务器可接受的任何文本字符串,其中也可使用分层名字(使用“.”分隔符),这将导致动态链接库创建OPC分层名字空间;参数Value定义了标签的初始数据;参数InitialQuality定义了标签的OPC属性标志;参数IsWriteable决定标签是否是可写标签。如果标签创建成功,函数返回数据点的句柄(HANDLE),否则返回INVALID_HANDLE_VALUE。
Declare Function UpdateTag Lib "WtOPCSvr" Alias 


热门招聘
相关主题

官方公众号

智造工程师