OPC服务器用户手册.docx
- 文档编号:3399979
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:24
- 大小:98.84KB
OPC服务器用户手册.docx
《OPC服务器用户手册.docx》由会员分享,可在线阅读,更多相关《OPC服务器用户手册.docx(24页珍藏版)》请在冰豆网上搜索。
OPC服务器用户手册
OPC客户端开发工具包
用户手册
北京华富惠通技术有限公司
目录
一、工具包简介3
(一)OPC简介:
3
(二)工具包的特点:
3
二、OPC客户端程序开发流程4
(一)OPC客户端程序开发用到的相关知识4
(二)用工具包开发的OPC客户端程序的框架6
(三)调用工具包接口的流程图如下:
7
(四)在开发过程中,用户必须完成一些工作:
8
三、工具包的接口描述9
(一)初始化函数9
(二)服务器连接函数10
(三)‘标签组’函数13
(四)‘标签项’函数17
(五)回调函数22
(六)其它函数22
四、附录:
24
(一)OPCDA规范中关于标签数据质量的描述:
24
(二)OPCDA规范中关于标签的属性:
27
(三)COM相关知识:
27
(四)加密锁的使用:
28
前言
本文档介绍北京华富惠通技术有限公司开发的CONTROX-工具包(以下简称工具包)的特点和如何利用开发工具包进行OPC客户端程序的开发。
本文共分为六个部分:
一、介绍了OPC的基本概念;二、OPC客户端程序的开发流程;三、详细描述了工具包的开发接口;四、附录部分介绍了一些与DA开发相关的OPC规范和其他内容。
一、工具包简介
(一)OPC简介:
OPC(OLEforProcessControl)是工控行业的软件接口标准,它试图按照标准的方法完成不同设备之间数据交换的问题。
OPC基金会是OPC规范的制定者,制定了数据访问、历史数据访问、事件与报警、批处理、OPCDAXML等一系列标准。
OPC基于微软的COM技术,它具有如下的优点:
(1)高速的数据传输;
(2)基于分布式COM的安全性管理机制;
(3)降低开发成本;
(4)实现具有高度柔韧性功能的系统;
(5)实现具有高可靠性的系统;
(二)工具包的特点:
北京华富惠通技术有限公司是OPC中国促进会的五家成员之一,负责OPC技术在中国地区的技术支持工作,同时也从事着OPC的研究与开发工作。
于2002年10月开发完成的工具包提供对OPCDataAccess2.04规范(以下简称OPCDA规范)的支持,工具包具有以下特点:
(1)完全符合OPCDataAccess2.04标准;
(2)开发人员不需要了解COM机制及OPC数据访问服务器接口细节;
(3)支持多种开发工具。
如VC、BC、VB、Delphi等;
(4)不要求开发人员了解开发工具中实现COM的具体技术。
如ATL等;
(5)用户开发简单容易;
二、OPC客户端程序开发流程
(一)OPC客户端程序开发用到的相关知识
一个OPC客户端可以和一个或多个OPC服务器进行连接。
如图2-1
图2-1OPCClient
不同的供应商可以提供OPCServer,供应商提供的代码决定了支持何种设备并可以和之进行数据存取。
图2-2OPCClient/Server的关系
在高层次上说,OPC服务器包含几个对象:
服务器、标签组和标签项。
OPC服务器对象包含标签组,标签组包含标签项。
层次关系如下:
图2-3对象层次关系
OPC的‘标签组’为客户端提供了组织数据的一种方法。
例如,用户可以根据特定的显示和报告的需要来组织‘标签组’中的条目(‘标签项’),并可以进行数据的读写。
OPC客户端还可以配置数据的更新速率。
在一个标签组中,用户可以定义一个或多个OPC‘标签项’,如图2-3
图2-3–标签组/标签项的关系图
OPC中的‘标签项’表示了OPC服务器中相联系的数据源。
从用户接口的角度,客户端不能直接存取‘标签项’,因为没有定义直接的‘标签项’接口,所有的‘标签项’必须通过OPC的‘标签组’来实现存取。
和每个标签项相关联的有‘标签值’、‘标签质量’和‘时间戳’,相关的内容可以参考本说明书的附录或OPC规范。
(二)用工具包开发的OPC客户端程序的框架
OPCClient.DLL动态库中包含了OPC客户端开发工具包所用到的功能,客户端应用程序通过工具包和OPC服务器的接口进行操作,用户不必了解OPC相关的通讯规范和实现。
实现数据的读取和回写等功能。
(三)调用工具包接口的流程图如下:
关于上面流程的说明:
1.对于工具包的激活说明:
如果用户购买的是加密锁加密的方式,在运行时系统会自动检测。
如果用户购买的是序列号加密的方式,在程序初始化之前要进行相应的激活,否则系统会认为工具为演示版。
2.用户首先调用Init进行初始化。
3.初始化后,可以和OPC服务器进行连接
4.初始化成功之后,注册数据改变回调函数。
5.向OPC服务器对象可添加一个或多个‘标签组’。
6.向OPC标签组’对象可添加一个或多个‘标签项’。
7.当相关联的OPC服务器发生数据改变时,注册的回调函数会被调用,用户可以对接到的数据进行相关的处理和操作。
8.在客户程序退出时,调用Uninit。
(四)在开发过程中,用户必须完成一些工作:
1.建立应用程序,加载OPC运行库。
2.按照工具包的提供的接口进行正确的函数调用。
三、工具包的接口描述
以下接口均采用stdcall调用规范。
(一)初始化函数
1、初始化函数
functionInit:
BOOL;
[功能说明]该函数用来初始化工具包动态库。
[参数说明]无
[返回值]如果函数成功返回TRUE,否则返回FALSE
[附加说明]一般情况下在动态库被加载时应被调用。
如果函数调用成功,在动态
被卸载时应调用Uninit。
2、注销函数
procedureUninit;
[功能说明]该函数用来注销工具包。
[参数说明]无
[返回值]无
[附加说明]一般情况下在程序退出时调用,终止服务并释放相应的资源。
3、工具包激活函数
functionActiveCode(constUserName,Password:
PChar):
BOOL;
[功能说明]该函数用来激活工具包,用于序列号加密的版本。
如果不调用此函数,则工具包被当做DEMO版本处理。
[参数说明]
说明
UserName
用户在订货时得到的用户名
Password
用户在订货时得到的注册号
[返回值]如果函数成功返回TRUE,否则返回FALSE
[附加说明]用户名和注册号为配对使用。
(二)服务器连接函数
1、服务器连接
functionConnect(constMachineName,ServerName:
PChar;Version:
SHORT=2):
THANDLE;
[功能说明]该函数用来连接服务器,服务器端构建相应的组件对象,返回OPC服务器的接口指针。
[参数说明]
说明
MachineName
OPC服务器的节点名称
ServerName
OPC服务器的名称
Version
版本号,可有默认值
[返回值]如果函数不成功返回NULL,否则返回OPC服务器的连接句柄。
[附加说明]函数返回的接口指针很重要,对服务器的操作都要用到。
2、断开服务器连接
procedureDisconnect(hConnect:
THANDLE);
[功能说明]该函数用来断开服务器连接,释放对象资源并通知OPC服务器退出。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
[返回值]无。
[附加说明]程序退出时要调用该函数。
3、得到OPC服务器个数函数
functionGetServerCount(MachineName:
PChar;Version:
SHORT=2):
Integer;
[功能说明]该函数用来得到某节点中OPC服务器个数函数。
[参数说明]
说明
MachineName
OPC服务器的节点名称
Version
版本号,可有默认值
[返回值]返回该节点OPC服务器个数函数。
[附加说明]无。
4、得到服务器名称
functionGetServerName(Index:
Integer;Buf:
PChar;BufSize:
Integer):
BOOL;
[功能说明]该函数根据索引号得到服务器名称。
[参数说明]
说明
Index
OPC服务器的索引号
Buf
服务器名称的缓存指针,该缓存用于存放返回的服务器名称
BufSize
缓存的大小。
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无。
5、得到服务器信息
functionGetServerStatus(hConnect:
THANDLE;varSvrStatus:
SERVERINFORMATION):
BOOL;
[功能说明]该函数用于得到服务器的信息。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
SvrStatus
返回的服务器状态信息
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]服务器信息结构说明
typedefstruct_SERVERINFORMATION
{
FILETIMEftStartTime;//启动时间
FILETIMEftCurrentTime;//当前时间
FILETIMEftLastUpdateTime;//最近更新时间
WORDdwServerState;//服务器状态
DWORDdwGroupCount;//服务器中组的个数
DWORDdwBandWidth;//服务器带宽
WORDwMajorVersion;//主版本号
WORDwMinorVersion;//次版本号
WORDwBuildNumber;//编译序数
WORDwReserved;//保留
char*szVendorInfo;//服务器供应商信息
intBufSize;//缓存尺寸
}SERVERINFORMATION;
服务器状态
OPCSERVERSTATE声明:
(在OPCDA规范中定义)
enumtagOPCSERVERSTATE
{
OPC_STATUS_RUNNING=1,
OPC_STATUS_FAILED=OPC_STATUS_RUNNING+1,
OPC_STATUS_NOCONFIG=OPC_STATUS_FAILED+1,
OPC_STATUS_SUSPENDED=OPC_STATUS_NOCONFIG+1,
OPC_STATUS_TEST=OPC_STATUS_SUSPENDED+1
}OPCSERVERSTATE;
(三)‘标签组’函数
1、增加‘标签组’
functionAddGroup(hConnect:
THANDLE;Name:
PChar;bActive:
BOOL;dwRate:
DWORD;
TimeBias:
PLongint;DeadBand:
PSingle;dwLCID:
DWORD):
THANDLE;
[功能说明]该函数用于增加标签组。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
SvrStatus
返回的服务器状态信息
Name
标签组的名称
bActive
是否同时激活
dwRate
本标签组的数据更新速率
TimeBias
数据更新的基准时间(以分钟为单位)。
如果该参数为NULL表示使用系统默认的时间基准。
DeadBand
数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。
如果参数为空则表示死区为0.0
dwLCID
此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。
这包括象报警或条件状态或数字线圈的状态等。
[返回值]返回新增‘标签组’的句柄。
[附加说明]无
2、删除‘标签组’
procedureRemoveGroup(hConnect,hGroup:
THANDLE);
[功能说明]该函数用于删除标签组。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
[返回值]无
[附加说明]无
3、设置‘标签组’名称
functionSetGroupName(hConnect,hGroup:
THANDLE;constName:
PChar):
BOOL;
[功能说明]该函数用于设置‘标签组’名称。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
Name
标签组的名称
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
4、设置‘标签组’状态参数
functionSetGroupState(hConnect,hGroup:
THANDLE;Rate:
DWORD;bActive:
BOOL;
TimeBias:
DWORD;DeadBand:
Single;dwLCID:
DWORD):
BOOL;
[功能说明]该函数用于设置‘标签组’状态参数。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
Rate
本标签组的数据更新速率
bActive
是否同时激活
TimeBias
数据更新的基准时间(以分钟为单位)。
如果该参数为NULL表示使用系统默认的时间基准。
DeadBand
数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。
如果参数为空则表示死区为0.0
dwLCID
此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。
这包括象报警或条件状态或数字线圈的状态等。
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
5、得到‘标签组’状态
functionGetGroupState(hConnect,hGroup:
THANDLE;Name:
PChar;BufSize:
Integer;
varpRate:
DWORD;varbActive:
BOOL;varpTimeBias:
DWORD;
varpDeadBand:
Single;varpLCID:
DWORD):
BOOL;
[功能说明]该函数用于增加标签组。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
Name
标签组的名称
BufSize
标签组的缓冲区大小
pRate
本标签组的数据更新速率
bActive
是否同时激活
pTimeBias
数据更新的基准时间(以分钟为单位)。
如果该参数为NULL表示使用系统默认的时间基准。
pDeadBand
数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。
如果参数为空则表示死区为0.0
pLCID
此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。
这包括象报警或条件状态或数字线圈的状态等。
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
(四)‘标签项’函数
1、增加‘标签项’
functionAddItem(hConnect,hGroup:
THANDLE;ItemName:
PChar):
THANDLE;
[功能说明]该函数用于在标签组中增加标签项。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
ItemName
标签项的名称
[返回值]该标签项的句柄
[附加说明]无
2、删除‘标签项’
procedureRemoveItem(hConnect,hGroup,hItem:
THANDLE);
[功能说明]该函数用于在标签组中删除标签项。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
hItem
标签项的句柄
[返回值]该标签项的句柄
[附加说明]无
3、读‘标签’的数据
functionReadItem(hConnect,hGroup,hItem:
THANDLE;varValue:
OleVariant;
varpTimeStamp:
FILETIME;varpQuality:
DWORD):
BOOL;
[功能说明]该函数用于在标签组中读取标签的数据。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
hItem
标签项的句柄
Value
标签的值
pTimeStamp
标签的时间戳
pQuality
标签的质量
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
4、写‘标签项’
functionWriteItem(hConnect,hGroup,hItem:
THANDLE;pVar:
POleVariant;DoAsync:
BOOL=False):
BOOL;
[功能说明]该函数用于在标签组中标签数据的回写。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
hItem
标签项的句柄
pVar
标签的回写值
DoAsync
回写操作的方式(是同步方式还是异步方式)
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
5、激活‘标签项’
functionActiveItem(hConnect,hGroup,hItem:
THANDLE;bActive:
BOOL):
BOOL;
[功能说明]该函数用于在标签组中标签项的激活。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
hItem
标签项的句柄
bActive
是否激活
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
6、验证‘标签项’
functionValidateItem(hConnect,hGroup:
THANDLE;Name:
PChar;varpType:
TVarType;varpAccessRights:
DWORD):
BOOL;
[功能说明]该函数用于在标签组中验证标签项。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
hGroup
标签组的句柄
Name
标签项的名称
pType
标签的数据类型
pAccessRights
标签的存取权限
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
7、得到‘标签项’个数
functionGetItemCount(hConnect:
THANDLE):
Integer;
[功能说明]该函数用于得到某个连接中标签项的个数。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
[返回值]返回标签项的个数。
[附加说明]无
8、得到‘标签项’名称
functionGetItemName(hConnect:
THANDLE;index:
Integer;Buf:
PChar;BufSize:
Integer):
BOOL;
[功能说明]该函数用于得到‘标签项’名称。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
index
标签的索引号
Buf
标签名缓冲区的指针
BufSize
标签名缓冲区的大小
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
9、得到‘标签项’全名
functionGetItemFullName(hConnect:
THANDLE;index:
Integer;Buf:
PChar;BufSize:
Integer):
BOOL;
[功能说明]该函数用于得到‘标签项’全名。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
index
标签的索引号
Buf
标签名缓冲区的指针
BufSize
标签名缓冲区的大小
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
10、得到‘标签项’属性的个数
functionNumberOfItemProperties(hConnect:
THANDLE;ItemName:
PChar):
Integer;
[功能说明]该函数用于得到得到‘标签项’属性的个数。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
ItemName
标签项的名称
[返回值]‘标签项’属性的个数。
[附加说明]无
11、得到‘标签项’属性说明
functionGetItemPropertyDescription(hConnect:
THANDLE;PropertyIndex:
Integer;varpPropertyID:
DWORD;varVT:
TVarType;Buf:
PChar;BufSize:
Integer):
BOOL;
[功能说明]该函数用于得到得到‘标签项’属性的描述。
[参数说明]
说明
hConnect
OPC服务器的连接句柄
PropertyIndex
标签项属性的索引号
pPropertyID
属性ID
VT
属性的数据类型
Buf
属性描述缓冲区的指针
BufSize
属性描述缓冲区的大小
[返回值]如果函数成功返回TRUE,否则返回FALSE。
[附加说明]无
12、读‘标签项’属性值
functionReadPropertyValue(hConnect:
THANDLE;ItemName:
PChar;PropertyID:
DWORD;pValue:
POleVariant):
BOOL;
(五)回调函数
procedureSetDataChangeProc(hConnect:
THANDLE;lpCallback:
DATACHANGEPROC;WriteCallback:
WRITEFINISHPROC=nil);
[功能说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPC 服务器 用户手册