OPC:服务器开发(二)——WTOPCSvr使用手册中文版

WTOPCsvr.dll是以DLL形式提供的OPC服务器开发工具,支持OPC DA 1.0和2.0规范,同时支持AE 1.0规范。

通过WTOPCsvr.dll,您只需调用里面的几个API函数就可以快速开发出您自己的OPC服务器。使用Visual Basic语言的开发者也能使用WTOPCsvr.dll开发OPC服务器。

以下是DLL的API声明.明确地定义了DLL用于返回给服务器程序的调用返回的具体含义,以实现客户应用与服务器应用之间的数据交换,DLL提供了以下一些API函数。

1、注册函数

创建服务器时,应该先调用注册函数UpdateRegistry,再调用初始化函数InitWTOPCsvr。

函数

UpdateRegistry (BYTE *pCLSID_Svr, LPCSTR Name, LPCS

功能

这个函数封装了Windows注册函数,用于OPC服务器的注册

参数

CLSID_Svr是OPC服务器的类标识(CLSID);

Name定义了服务器的名字;

Descr可以是任何描述服务器的字符串,但常常包含一些版本信息;

ExePath定义了可执行程序的完整的Windows路径

返回值

如果函数调用成功则返回TRUE,否则返回FALSE

 

函数

UnregisterServer (BYTE *pCLSID_Svr, LPCSTR Name)

功能

这是一个服务器注销函数

参数

CLSID_Svr是OPC服务器的类标识(CLSID);

Name定义了服务器的名字;

返回值

如果函数调用成功则返回TRUE,否则返回FALSE

 

2、初始化函数

函数

InitWTOPCsvr (BYTE *pCLSID_Svr, UINT ServerRate);

功能

这个函数实现对DCOM的初始化和创建OPC服务器对象

参数

CLSID_Svr是OPC服务器的类标识(CLSID)——用于OPC客户连接服务器

参数ServerRate定义了客户的数据刷新速率,其单位是毫秒

返回值

如果函数调用成功则返回TRUE,否则返回FALSE

 

 

3、创建进程标签

函数

CreateTag (LPCSTR Name, VARIANT Value, WORD InitialQuality, BOOL IsWriteable)

功能

这是一个在动态链接库里创建过程标签的函数

参数

Name定义了OPC客户要访问的过程标签,这个名字字符串可以是服务器可接受的任何文本字符串,其中也可使用分层名字(使用“.”分隔符),这将导致动态链接库创建OPC分层名字空间

Value定义了标签的初始数据

InitialQuality定义了标签的OPC属性标志;

IsWriteable决定标签是否是可写标签。

返回值

如果标签创建成功,函数返回数据点的句柄(HANDLE),否则返回INVALID_HANDLE_VALUE。

 

函数

UpdateTag (HANDLE TagHandle, VARIANT Value, WORD Quality);

功能

这个函数调用实现对过程标签的数据刷新

参数

 

Value就是来自现场硬件的数据

 

返回值

 

 

函数

UpdateTagByName (LPCSTR Name, VARIANT Value, WORD Quality)

功能

可以使用这个函数来改变一个已定义过程标签的值。

参数

 

 

 

返回值

 

 

4、动态标签创建

函数

EnableUnknownItemNotification (UNKNOWNITEMPROC  lpCallback)

功能

这个函数的返回值表示一个客户请求了一个没有定义或是己经被暂停刷新的标签,但无论客户请求的标签是否是己定义的标签,这个函数都定义了一个从DLL返回的调用返回。当连接建立后,服务器应用可以使用这个调用返回对动态创建的标签进行操作。

参数

 

返回值

 

 

函数

EnableItemRemovalNotification (ITEMREMOVEDPROC  lpCallback)

功能

当对一个标签的最后客户引用释放后,这个函数将定义一个来自DLL的调用返回,服务器应用程序可以删除这个标签或暂停这个标签的刷新。

参数

 

返回值

 

 

5、其他的回调函数通知

函数

EnableWriteNotification(WRITENOTIFYPROC lpCallback,BOOL  ConvertToNativeType)

功能

当OPC客户端写一个己定义的标签时,这个函数产生一个来自DLL的调用返回。正常情况下,DLL将把值转变成项的私有类型,但在某些情况下,它要求应用自己完成这个转变过程。[个人理解是,当客户端改变一个标签的数据时,会调用服务器的lpCallback所代表的函数]

参数

lpCallback代表的是一个函数(用户定义的),就是指定调用的函数

 

 

返回值

 

 

函数

BOOL EnableDisconnectNotification (DISCONNECTPROC lpCallback)

功能

当客户应用请求断开连接时,这个函数产生一个来自DLL的调用返回通知服务器应用断开连接。

参数

lpCallback points to a routine defined such as the following:

 

 

返回值

 

 

6、清除函数

函数

int NumbrClientConnections()

功能

这个函数返回当前连接到服务器的客户数。

返回值

 

 

函数

void RequestDisconnect()

功能

此函数提供了请求所有客户断开连接的功能,但它并不保证这个请求得到响应或者客户真正断开连接。服务器请求客户断开的功能仅仅对那些符合OPC2.0和OPC3.0规范的客户有用

函数

RemoveTag (HANDLE TagHandle)

功能

此函数从DLL中删除一个过程标签。如果在删除过程标签时有客户连接正在访问这个标签,则这个连接仍然有效,但是将没有新的数据来刷新这个连接。

 

参数

 

返回值

 

 

7、标签创建和更新函数

函数

BOOL UpdateTagWithTimeStamp (HANDLE TagHandle, VARIANT Value, WORD Quality, FILETIME timestamp);

功能

这个函数允许应用改变一个己定义的标签的值、属性标志和时间标签。如果应用没有提供时间标签(timestamp),则DLL将采用系统时间。

参数

TagHandle表示数据点;

Value表示数据值

Quality表示新的属性条件。

Timestamp表示标签时间

返回值

如果函数调用成功则返回TRUE,否则返回FALSE。

 

函数

BOOL SetTagProperties (HANDLE TagHandle, DWORD PropertyID, LPCSTR Description, VARIANT Value);

功能

任何数量的OPC项属性都可以用这个函数设置,DLL保持了所有已定义属性的一个列表,OPC客户可以访问这些属性。

参数

 

 

 

 

函数

BOOL SuspendTagUpdates (HANDLE TagHandle, BOOL OnOff)

功能

这个函数可以使服务器知道一个客户描述的特殊标签的调用返回。在多数情况下,服务器是随着其接收数据的变化而刷新标签的,DLL处理所有客户请求、通报和刷新。在一定条件下,当客户访问一个项时,希望服务器仅仅刷新OPC标签数据库。通过暂停刷新功能,当客户试图访问这个项时,DLL将处理一个未知项的调用返回,然后,服务器开始重新开始刷新标签直到下一个暂停刷新产生。

参数

TagHandle定义了暂停刷新的项

 

函数

BOOL ReadTag (HANDLE TagHandle, VARIANT *pValue);

功能

这是一个读标签的函数。

参数

TagHandle定义了暂停刷新的项

 

返回值

 

 

函数

BOOL ReadTagWithTimestamp (HANDLE TagHandle, VARIANT *pValue, WORD *pQuality, FILETIME *pTimestamp);

功能

应用程序使用这个函数去获取一个标签的当前值。

参数

参数Value表示了接收的数据值

参数Timestamp是标签的当前时间标签值。

 

返回值

 

下述三个函数必须一起使用,它们一起提供了一次刷新多个标签的有效方式。首先调用StartUpdateTags,然后用UpdateTagToList代替UpdateTag()调用,当所有标签都被刷新后再调用EndUpdateTags()结束此次刷新操作。

 

函数

BOOL StartUpdateTags();

功能

开始刷新。

返回值

 

 

函数

BOOL WINAPI UpdateTagToList (HANDLE TagHandle, VARIANT Value, WORD Quality);

功能

刷新标签列表。

参数

 

 

 

返回值

 

 

函数

BOOL WINAPI EndUpdateTags ();

功能

刷新标签列表。

返回值

 

 

8、辅助功能函数

函数

BOOL RefreshAllClients ();

功能

服务器可以使用此函数对所有连接的客户进行初始化。正常情况下,客户应用数据是基于DLL中的异步时针刷新的,这个函数让服务器可以刷新所有客户数据。

参数

 

 

 

返回值

 

 

函数

BOOL RefreshAllClients ();

功能

服务器可以使用此函数对所有连接的客户进行初始化。正常情况下,客户应用数据是基于DLL中的异步时针刷新的,这个函数让服务器可以刷新所有客户数据。

返回值

 

 

函数

BOOL ResetServerRate (UINT ServerRate);

功能

此函数用于改变服务器应用的数据刷新率

参数

 

返回值

 

 

函数

BOOL SetVendorInfo (LPCSTR VendorInfoString)

功能

设置一些服务器的版本信息。

返回值

 

 

你可能感兴趣的:(OPC相关知识)