OPC服务器用户手册_第1页
OPC服务器用户手册_第2页
OPC服务器用户手册_第3页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OPC客户端开发工具包用户手册北京华富惠通技术有限公司目录一、工具包简介3(一)OPC简介:3.(二)工具包的特点:3.二、OPC客户端程序开发流程4(一)OPC户端程序开发用到的相关知识4(二)用工具包开发的OPC客户端程序的框架6(三)调用工具包接口的流程图如下:7(四)在开发过程中,用户必须完成一些工作:8三、工具包的接口描述9(一)初始化函数9.(二)服务器连接函数10(三)标签组函数1.3(四)标签项函数1.7(五)回调函数22(A)其它函数22四、附录:24(一)OPCDA规范中关于标签数据质量的描述:24(二)OPCD涮范中关于标签的届性:27(三)COM相关知识:27(四)加密

2、锁的使用:28刖曰本文档介绍北京华富惠通技术有限公司开发的CONTROX-工具包(以下简称工具包)的特点和如何利用开发工具包进行OPC客户端程序的开发。本文共分为六个部分:一、介绍了OPC的基本概念;二、OPC客户端程序的开发流程;三、详细描述了工具包的开发接口;四、附录部分介绍了一些与DA开发相关的OPC规范和其他内容。一、工具包简介(一)OPC简介:OPC(OLEforProcessControl)是工控行业的软件接口标准,它试图按照标准的方法完成不同设备之间数据交换的1可题。OP诳金会是OPC规范的制定者,制定了数据访问、历史数据访问、事件与报警、批处理、OPCDAXMl>一系列标

3、准。OPC基于微软的CO啾术,它具有如下的优点:(1) 高速的数据传输;(2) 基于分布式COM的安全性管理机制;(3) 降低开发成本;(4) 实现具有高度柔韧性功能的系统;(5) 实现具有高可靠性的系统;(二)工具包的特点:北京华富惠通技术有限公司是OPC中国促进会的五家成员之一,负责OPC技术在中国地区的技术支持工作,同时也从事着OPC的研究与开发工作。于2002年10月开发完成的工具包提供对OPCDataAccess2.04规范(以下简称OPCDA规范)的支持,工具包具有以下特点:(1) 完全符合OPCDataAccess2.04标准;(2) 开发人员不需要了解COM机制及OPC数据访问

4、服务器接口细节;(3) 支持多种开发工具。如VC、BC、VB、Delphi等;(4) 不要求开发人员了解开发工具中实现COM的具体技术。如ATL等;用户开发简单容易;二、OPC客户端程序开发流程CPC客户端程序开发用到的相关知识一个OPC客户端可以和一个或多个OPC服务器进行连接。如图2-1OPCClient图2-1OPCClient不同的供应商可以提供OPCServer,供应商提供的代码决定了支持何种设备并可以和之进行数据存取。图2-2OPCClient/Server的关系OPC服务图2-3对象层次关系在高层次上说,OPC服务器包含几个对象:服务器、标签组和标签项。器对象包含标签组,标签组包

5、含标签项。层次关系如下:OPC的标签组为客户端提供了组织数据的一种方法。例如,用户可以根据特定的显示和报告的需要来组织标签组中的条目(标签项),并可以进行数据的读写。OPC客户端还可以配置数据的更新速率。在一个标签组中,用户可以定义一个或多个OPC'标签项,如图2-3图2-3-标签组/标签项的关系图OPC中的标签项表示了OPC服务器中相联系的数据源。从用户接口的角度,客户端不能直接存取标签项,因为没有定义直接的标签项接口,所有的标签项必须通过OPC的标签组来实现存取。和每个标签项相关联的有标签值、标签质量和时间戳,相关的内容可以参考本说明书的附录或OPC规范。(二)用工具包开发的OPC

6、客户端程序的框架OPCClient.DLL动态库中包含了OPC客户端开发工具包所用到的功能,客户端应用程序通过工具包和OPC服务器的接口进行操作,用户不必了解OPC相关的通讯规范和实现。实现数据的读取和回写等功能。(三)调用工具包接口的流程图如下:关于上面流程的说明:1.对于工具包的激活说明:如果用户购买的是加密锁加密的方式,在运行时系统会自动检测。如果用户购买的是序列号加密的方式,在程序初始化之前要进行相应的激活,否则系统会认为工具为演示版。2. 用户首先调用Init进行初始化。3. 初始化后,可以和OPC服务器进行连接4. 初始化成功之后,注册数据改变回调函数。5. 向OPC服务器对象可添

7、加一个或多个标签组。6. 向OPC标签组对象可添加一个或多个标签项。7. 当相关联的OPC服务器发生数据改变时,注册的回调函数会被调用,用户可以对接到的数据进行相关的处理和操作。8. 在客户程序退出时,调用Uninit。(四)在开发过程中,用户必须完成一些工作:1. 建立应用程序,加载OPC运行库。2. 按照工具包的提供的接口进行正确的函数调用。三、工具包的接口描述以下接口均采用stdcall调用规范。(一) 初始化函数1、初始化函数functionInit:BOOL;功能说明该函数用来初始化工具包动态库。参数说明无返回值如果函数成功返回TRUE,否则返回FALSE附加说明一般情况下在动态库被

8、加载时应被调用。如果函数调用成功,在动态被卸载时应调用Uninit。2、注销函数procedureUninit;功能说明该函数用来注销工具包。参数说明无返回值无附加说明一般情况下在程序退出时调用,终止服务并释放相应的资源。3、工具包激活函数functionActiveCode(constUserName,Password:PChar):BOOL;功能说明该函数用来激活工具包,用于序列号加密的版本。如果不调用此函数,则工具包被当做DEMO版本处理。参数说明说明UserName用户在订货时得到的用户名Password用户在订货时得到的注册号返回值如果函数成功返回TRUE,否则返回FALSE附加说明

9、用户名和注册号为配对使用。(二) 服务器连接函数1、服务器连接functionConnect(constMachineName,ServerName:PChar;Version:SHORT=2):THANDLE;功能说明该函数用来连接服务器,服务器端构建相应的组件对象,返回OPC服务器的接口指针。参数说明说明MachineNameOPC服务器的节点名称ServerNameOPC服务器的名称Version版本号,可有默认值返回值如果函数不成功返回NULL,否则返回OPC服务器的连接句柄。附加说明函数返回的接口指针很重要,对服务器的操作都要用到。2、断开服务器连接procedureDisconne

10、ct(hConnect:THANDLE);功能说明该函数用来断开服务器连接,释放对象资源并通知OPC服务器退出。参数说明说明hConnectOPC服务器的连接句柄返回值无。附加说明程序退出时要调用该函数。3、得到OPC服务器个数函数functionGetServerCount(MachineName:PChar;Version:SHORT=2):Integer;功能说明该函数用来得到某节点中OPC服务器个数函数。参数说明说明MachineNameOPC服务器的节点名称Version版本号,可有默认值返回值返回该节点OPC服务器个数函数。附加说明无。4、得到服务器名称functionGetSer

11、verName(Index:Integer;Buf:PChar;BufSize:Integer):BOOL;功能说明该函数根据索引号得到服务器名称。参数说明说明IndexOPC服务器的索引号Buf服务器名称的缓存指针,该缓存用于存放返回的服务器名称BufSize缓存的大小。返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无。5、得到服务器信息functionGetServerStatus(hConnect:THANDLE;varSvrStatus:SERVERINFORMATION):BOOL;功能说明该函数用于得到服务器的信息。参数说明说明hConnectOPC服务器的连接句柄S

12、vrStatus返回的服务器状态信息返回值如果函数成功返回TRUE,否则返回FALSE。附加说明服务器信息结构说明typedefstruct_SERVERINFORMATION(FILETIMEftStartTime;/启动时间FILETIMEftCurrentTime;/当前时间FILETIMEftLastUpdateTime;/最近更新时间WORDdwServerState;/服务器状态DWORDdwGroupCount;/服务器中组的个数DWORDdwBandWidth;/服务器带宽WORDwMajorVersion;/主版本号WORDwMinorVersion;/次版本号WORDwBu

13、ildNumber;/编译序数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_STA

14、TUS_TEST=OPC_STATUS_SUSPENDED+1OPCSERVERSTATE;标签组函数1、增加标签组functionAddGroup(hConnect:THANDLE;Name:PChar;bActive:BOOL;dwRate:DWORD;TimeBias:PLongint;DeadBand:PSingle;dwLCID:DWORD):THANDLE;功能说明该函数用于增加标签组。参数说明说明hConnectOPC服务器的连接句柄SvrStatus返回的服务器状态信息Name标签组的名称bActive是否同时激活dwRate本标签组的数据更新速率TimeBias数据更新的基准

15、时间(以分钟为单位)。如果该参数为NULL表示使用系统默认的时间基准。DeadBand数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。如果参数为空则表示死区为0.0dwLCID此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。这包括象报警或条件状态或数字线圈的状态等。返回值返回新增标签组的句柄。附加说明无2、删除标签组procedureRemoveGroup(hConnect,hGroup:THANDLE);功能说明该函数用于删除标签组。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄返回值无附加说明无3、设置标

16、签组名称functionSetGroupName(hConnect,hGroup:THANDLE;constName:PChar):BOOL;功能说明该函数用于设置标签组名称。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄Name标签组的名称返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无4、设置标签组状态参数functionSetGroupState(hConnect,hGroup:THANDLE;Rate:DWORD;bActive:BOOL;TimeBias:DWORD;DeadBand:Single;dwLCID:DWORD):BOOL;功能说

17、明该函数用于设置标签组状态参数。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄Rate本标签组的数据更新速率bActive是否同时激活TimeBias数据更新的基准时间(以分钟为单位)。如果该参数为NULL表示使用系统默认的时间基准。DeadBand数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。如果参数为空则表示死区为0.0dwLCID此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。这包括象报警或条件状态或数字线圈的状态等。返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无5、得到标签组状态fu

18、nctionGetGroupState(hConnect,hGroup:THANDLE;Name:PChar;BufSize:Integer;varpRate:DWORD;varbActive:BOOL;varpTimeBias:DWORD;varpDeadBand:Single;varpLCID:DWORD):BOOL;功能说明该函数用于增加标签组。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄Name标签组的名称BufSize标签组的缓冲区大小pRate本标签组的数据更新速率bActive是否同时激活pTimeBias数据更新的基准时间(以分钟为单位)。如果该参

19、数为NULL表示使用系统默认的时间基准。pDeadBand数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。如果参数为空则表示死区为0.0pLCID此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。这包括象报警或条件状态或数字线圈的状态等。返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无标签项函数1、增加标签项functionAddItem(hConnect,hGroup:THANDLE;ItemName:PChar):THANDLE;功能说明该函数用于在标签组中增加标签项。参数说明说明hConnectOPC服务器的连接句柄h

20、Group标签组的句柄ItemName标签项的名称返回值该标签项的句柄附加说明无2、删除标签项procedureRemoveItem(hConnect,hGroup,hItem:THANDLE);功能说明该函数用于在标签组中删除标签项。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄hItem标签项的句柄返回值该标签项的句柄附加说明无3、读标签的数据functionReaditem(hConnect,hGroup,hItem:THANDLE;varValue:OleVariant;varpTimeStamp:FILETIME;varpQuality:DWORD):BO

21、OL;功能说明该函数用于在标签组中读取标签的数据。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄hitem标签项的句柄Value标签的值pTimeStamp标签的时间戳pQuality标签的质里返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无4、写标签项'functionWriteitem(hConnect,hGroup,hitem:THANDLE;pVar:POleVariant;DoAsync:BOOL=False):BOOL;功能说明该函数用于在标签组中标签数据的回写。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的

22、句柄hitem标签项的句柄pVar标签的回写值DoAsync回写操作的方式(是问步方式还是异步方式)返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无5、激活标签项functionActiveitem(hConnect,hGroup,hItem:THANDLE;bActive:BOOL):BOOL;功能说明该函数用于在标签组中标签项的激活。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄hitem标签项的句柄bActive是否激活返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无6、验证标签项functionValidateitem(hConn

23、ect,hGroup:THANDLE;Name:PChar;varpType:TVarType;varpAccessRights:DWORD):BOOL;功能说明该函数用于在标签组中验证标签项。参数说明说明hConnectOPC服务器的连接句柄hGroup标签组的句柄Name标签项的名称pType标签的数据类型pAccessRights标签的存取权限返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无7、得到标签项个数functionGetItemCount(hConnect:THANDLE):Integer;功能说明该函数用于得到某个连接中标签项的个数。参数说明说明hConnect

24、OPC服务器的连接句柄返回值返回标签项的个数。附加说明无8、得到标签项名称functionGetItemName(hConnect:THANDLE;index:Integer;Buf:PChar;BufSize:Integer):BOOL;功能说明该函数用于得到标签项名称。参数说明说明hConnectOPC服务器的连接句柄index标签的索引号Buf标签名缓冲区的指针BufSize标签名缓冲区的大小返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无9、得到标签项全名functionGetItemFullName(hConnect:THANDLE;index:Integer;Buf:

25、PChar;BufSize:Integer):BOOL;功能说明该函数用于得到标签项全名。参数说明说明hConnectOPC服务器的连接句柄index标签的索引号Buf标签名缓冲区的指针BufSize标签名缓冲区的大小返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无10、得到标签项属性的个数functionNumberOfItemProperties(hConnect:THANDLE;ItemName:PChar):Integer;功能说明该函数用于得到得到标签项属性的个数。参数说明说明hConnectOPC服务器的连接句柄ItemName标签项的名称返回值标签项属性的个数。附加

26、说明无11、得到标签项属性说明functionGetItemPropertyDescription(hConnect:THANDLE;PropertyIndex:Integer;varpPropertyID:DWORD;varVT:TVarType;Buf:PChar;BufSize:Integer):BOOL;功能说明该函数用于得到得到标签项属性的描述。参数说明说明hConnectOPC服务器的连接句柄PropertyIndex标签项属性的索引号pPropertyID属性IDVT属性的数据类型Buf属性描述缓冲区的指针BufSize属性描述缓冲区的大小返回值如果函数成功返回TRUE,否则返回

27、FALSE。附加说明无12、读标签项属性值functionReadPropertyValue(hConnect:THANDLE;ItemName:PChar;PropertylD:DWORD;pValue:POleVariant):BOOL;回调函数procedureSetDataChangeProc(hConnect:THANDLE;lpCallback:DATACHANGEPROC;WriteCallback:WRITEFINISHPROC=nil);功能说明该函数用于注册数据改变回调函数。参数说明说明hConnectOPC服务器的连接句柄lpCallback回调函数的程序指针(数据改变时

28、调用)WriteCallback写数据函数的程序指针返回值无附加说明当服务器中有数据改变时,会调用注册的回调函数。(六)其它函数1、浏览标签项functionBrowseItems(hConnect:THANDLE;FilterType:WORD):Integer;功能说明该函数用于遍历某个连接中的标签项。参数说明说明hConnectOPC服务器的连接句柄FilterType过滤类型返回值返回遍历标签项的个数。附加说明无2、设置浏览标签的过滤条件functionSetBrowseFilters(hConnect:THANDLE;FilterString:PChar;DataType:TVarT

29、ype;AccessType:DWORD):BOOL;功能说明该函数用于设置浏览标签的过滤条件。参数说明说明hConnectOPC服务器的连接句柄FilterString过滤字符串DataType数据类型AccessType标签存取类型返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无3、改变标签浏览的位置functionChangeBrowsePosition(hConnect:THANDLE;Direction:WORD;NodeName:PChar):BOOL;功能说明该函数用于设置标签浏览的位置。参数说明说明hConnectOPC服务器的连接句柄Direction标签浏览的

30、方向NodeName节点的名称返回值如果函数成功返回TRUE,否则返回FALSE。附加说明无四、附录:(一)OPCDA规范中关于标签数据质虽的描述:在OPC中每个标签都必须有数据质量这个属性,OPC的数据质量的数据类型为VT_I2,服务器通过该标签属性向客户发布标签的数据质量。OPC基金会对标签数据质量的各个位做了一些定义,高八位由厂商自行定义,低八位的定义如下:低字描述为QQSSSSLLQ:主状态S:子状态L:限定状态低八位的高两位定义:QQ位值定义描述000SSSSLL有效的数据如果数据质量的低八位的高两位为0,数据为无效。101SSSSLL不确定的数据如果数据质量的低八位的高两位为1,数据的质重为不能确TE。210SSSSLLOPC为定义未定义311SSSSLL有效的数据如果数据质量的低八位的高两位为3,数据为有效。中间四位的定义:1. 状态为0:SSSS位值定义描述000000LL未定的的错误数据是无效的,无效的原因没有定义1000001LL服务器配置错误由于服务器的配置错误造成数据的无效2000010LL没有连接由于没有连接数据源,数据不能被正确的提供3000011LL设备错误发现一个设备错误,造成数据无效4000100LL传感器错误发现一个传感器错误,限定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论