OPC服务器用户手册Word格式文档下载.docx
- 文档编号:18182348
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:24
- 大小:91.99KB
OPC服务器用户手册Word格式文档下载.docx
《OPC服务器用户手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《OPC服务器用户手册Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
图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):
[功能说明]该函数用来激活工具包,用于序列号加密的版本。
如果不调用此函数,则工具包被当做DEMO版本处理。
[参数说明]
说明
UserName
用户在订货时得到的用户名
Password
用户在订货时得到的注册号
[附加说明]用户名和注册号为配对使用。
(二)服务器连接函数
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:
Integer;
[功能说明]该函数用来得到某节点中OPC服务器个数函数。
[返回值]返回该节点OPC服务器个数函数。
[附加说明]无。
4、得到服务器名称
functionGetServerName(Index:
Buf:
BufSize:
Integer):
[功能说明]该函数根据索引号得到服务器名称。
Index
OPC服务器的索引号
Buf
服务器名称的缓存指针,该缓存用于存放返回的服务器名称
BufSize
缓存的大小。
[返回值]如果函数成功返回TRUE,否则返回FALSE。
5、得到服务器信息
functionGetServerStatus(hConnect:
THANDLE;
varSvrStatus:
SERVERINFORMATION):
[功能说明]该函数用于得到服务器的信息。
SvrStatus
返回的服务器状态信息
[附加说明]服务器信息结构说明
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:
Name:
bActive:
dwRate:
DWORD;
TimeBias:
PLongint;
DeadBand:
PSingle;
dwLCID:
DWORD):
[功能说明]该函数用于增加标签组。
Name
标签组的名称
bActive
是否同时激活
dwRate
本标签组的数据更新速率
TimeBias
数据更新的基准时间(以分钟为单位)。
如果该参数为NULL表示使用系统默认的时间基准。
DeadBand
数据更新的死区(变化百分比),只有当标签的数据变化大于死区时才会触发回调函数给客户端。
如果参数为空则表示死区为0.0
dwLCID
此参数用于服务器以文本方式返回值(给这个组的相关操作)时使用的语言。
这包括象报警或条件状态或数字线圈的状态等。
[返回值]返回新增‘标签组’的句柄。
[附加说明]无
2、删除‘标签组’
procedureRemoveGroup(hConnect,hGroup:
[功能说明]该函数用于删除标签组。
hGroup
标签组的句柄
3、设置‘标签组’名称
functionSetGroupName(hConnect,hGroup:
constName:
[功能说明]该函数用于设置‘标签组’名称。
4、设置‘标签组’状态参数
functionSetGroupState(hConnect,hGroup:
Rate:
BOOL;
Single;
[功能说明]该函数用于设置‘标签组’状态参数。
Rate
5、得到‘标签组’状态
functionGetGroupState(hConnect,hGroup:
varpRate:
varbActive:
varpTimeBias:
varpDeadBand:
varpLCID:
标签组的缓冲区大小
pRate
pTimeBias
pDeadBand
pLCID
(四)‘标签项’函数
1、增加‘标签项’
functionAddItem(hConnect,hGroup:
ItemName:
[功能说明]该函数用于在标签组中增加标签项。
ItemName
标签项的名称
[返回值]该标签项的句柄
2、删除‘标签项’
procedureRemoveItem(hConnect,hGroup,hItem:
[功能说明]该函数用于在标签组中删除标签项。
hItem
标签项的句柄
3、读‘标签’的数据
functionReadItem(hConnect,hGroup,hItem:
varValue:
OleVariant;
varpTimeStamp:
FILETIME;
varpQuality:
[功能说明]该函数用于在标签组中读取标签的数据。
Value
标签的值
pTimeStamp
标签的时间戳
pQuality
标签的质量
4、写‘标签项’
functionWriteItem(hConnect,hGroup,hItem:
pVar:
POleVariant;
DoAsync:
BOOL=False):
[功能说明]该函数用于在标签组中标签数据的回写。
pVar
标签的回写值
DoAsync
回写操作的方式(是同步方式还是异步方式)
5、激活‘标签项’
functionActiveItem(hConnect,hGroup,hItem:
BOOL):
[功能说明]该函数用于在标签组中标签项的激活。
是否激活
6、验证‘标签项’
functionValidateItem(hConnect,hGroup:
varpType:
TVarType;
varpAccessRights:
[功能说明]该函数用于在标签组中验证标签项。
pType
标签的数据类型
pAccessRights
标签的存取权限
7、得到‘标签项’个数
functionGetItemCount(hConnect:
THANDLE):
[功能说明]该函数用于得到某个连接中标签项的个数。
[返回值]返回标签项的个数。
8、得到‘标签项’名称
functionGetItemName(hConnect:
index:
[功能说明]该函数用于得到‘标签项’名称。
index
标签的索引号
标签名缓冲区的指针
标签名缓冲区的大小
9、得到‘标签项’全名
functionGetItemFullName(hConnect:
[功能说明]该函数用于得到‘标签项’全名。
10、得到‘标签项’属性的个数
functionNumberOfItemProperties(hConnect:
[功能说明]该函数用于得到得到‘标签项’属性的个数。
[返回值]‘标签项’属性的个数。
11、得到‘标签项’属性说明
functionGetItemPropertyDescription(hConnect:
PropertyIndex:
varpPropertyID:
varVT:
[功能说明]该函数用于得到得到‘标签项’属性的描述。
PropertyIndex
标签项属性的索引号
pPropertyID
属性ID
VT
属性的数据类型
属性描述缓冲区的指针
属性描述缓冲区的大小
12、读‘标签项’属性值
functionReadPropertyValue(hConnect:
PropertyID:
pValue:
POleVariant):
(五)回调函数
procedureSetDataChangeProc(hConnect:
lpCallback:
DATACHANGEPROC;
WriteCallback:
WRITEFINISHPROC=nil);
[功能说明]该函数用于注册数据改变回调函数。
lpCallback
回调函数的程序指针(数据改变时调用)
WriteCallback
写数据函数的程序指针
[附加说明]当服务器中有数据改变时,会调用注册的回调函数。
(六)其它函数
1、浏览‘标签项’
functionBrowseItems(hConnect:
FilterType:
WORD):
[功能说明]该函数用于遍历某个连接中的标签项。
FilterType
过滤类型
[返回值]返回遍历标签项的个数。
2、设置浏览标签的过滤条件
functionS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPC 服务器 用户手册