第一范文网 - 专业文章范例文档资料分享平台

OPC说明书--中文版

来源:用户分享 时间:2025/10/14 21:06:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

数据访问服务器需要的接口 1.0 2.0 3.0 OPCServer

IUnknown 需要 需要 需要 IOPCServer 需要 需要 需要 IOPCCommon N/A 需要 需要

IConnectionPointContainer N/A 需要 需要 IOPCItemProperties N/A 需要 N/A IOPCBrowse N/A N/A 需要

IOPCServerPublicGroups 可选择可选择 N/A IOPCBrowseServerAddressSpace 可选择可选择 N/A IOPCItemIO N/A N/A 需要 OPCGroup

IUnknown 需要 需要 需要 IOPCItemMgt 需要 需要 需要 IOPCGroupStateMgt 需要 需要 需要 IOPCGroupStateMgt2 N/A N/A 需要 IOPCPublicGroupStateMgt 可选择可选择 N/A IOPCSyncIO 需要 需要 需要 IOPCSyncIO2 N/A N/A 需要 IOPCAsyncIO2 N/A 需要 需要 IOPCAsyncIO3 N/A N/A 需要 IOPCItemDeadbandMgt N/A N/A 需要 IOPCItemSamplingMgt N/A N/A 可选择 IConnectionPointContainer N/A 需要 需要 IOPCAsyncIO 需要 可选择 N/A IDataObject 需要 可选择 N/A

4.2.2 内存的分配

每一个COM说明书,客户程序必须释放所有同输出和输入/输出参数有关的内存。这个包括任何结构的成员指向内存的指针。客户端编写者明白这个是很重要的,否则,很难发现浪费的大量的内存泄漏。从IDL文件里可以看到并确认那些参数是输出参数。强烈推荐一个方法一个客户端应该创建一个子程序用来经常施放结构的空间。成功和失败的无关性,服务器必须经常为输出参数返回健康的定义的数值。释放分配的资源是客户程序的职责。

注:如果返回的错误结果是任何的FAILED错误象E_OUTOFMEMORY ,OPC服务器应该为所有的输出指针返回NULL(这是标准的COM行为),这个规则也应用于函数返回的指针组。通常,一个鲁棒型的OPC客户应该确认任何一个输出和输入/输出指针并优先用NULL来释放他们。

4.2.3 标准的接口

每个COM 说明书,所有的接口需要的方法都必须被实现。

每个COM 说明书,任何可选择的支持接口必须存在接口实现的内部功能,甚至实现紧紧是一个返回E_NOTIMPL的存根。

4.2.4 空串和空指针

这两个术语在以下被使用:他们不是同一个东西。一个NULL指针是一个有错误的指针(0),这个指针可能导致使用异常。一个NUL串是一个问题指针,他指向一个是NUL字符的字符数列。如果NULL串从一个方法里作为输出参数被返回的话他必须被释放。否则的话包含该指针的内存就会丢失。还要注意一个NULL指针不能通过一个输入字符窜参数传递,因为受COM聚合的限制。在这种情况下一个指向NULL的字符串应当作为省略的参数被传递。无论如何,NUL

串在本说明里被使用.C#没有NUL指针和NUL串的指针. 4.2.5 返回的数列.

你会注意在IDL文件使用的用从指针到指针组成的Size_is(,dwCount)函数的语法.他表示返回的条目时一个指向一定类型的实际数组的指针,不是指向一定类型的指针数组的数组指针.这个可以使服务器和客户使用聚合,创建,和数据访问更简单.

4.2.6 缓冲器数据,设备数据和时间戳

在这个说明书里大部分的术语CACHE 和DEVICE被抽象化了.,那就是 缓冲器和设备数据的读取会完全影响完全方式定义的接口行为的描述。这些功能的具体实现细节没有在这个说明书里做详细的描述。 事实上,很多服务器会把数据读进各种缓冲器里。很多客户程序也会去通过一些接下来讨论的机制来从这些缓冲器里读数据。对设备的数据访问希望慢一点和首先用作诊断和特殊的关键操作。

缓冲器应该反映最新的数据的值,质量和时间戳。时间戳应该反映设备获得的值和质量的时间。或者服务器更新和使值和质量在缓冲器里有效的时间。注意如果设备每隔10秒检查数值的话那么期望的数值时间戳会每隔10秒钟更新一次。因此时间戳反映服务器知道的准确的时间

系统接口的物理设备是否基于例外会真的被忽视。假设知道(a)一个例外的设备每隔0.5秒检查一次,(b)同一个设备的通信是完好的(c)三分钟以前设备更新条目FIC101的值为1.234。在这种情况下从缓冲器里读到的值将会是1.234和很重要。从这个数值返回的时间戳将会是当前时间(0.5秒内)因此知道条目的值事实上是0.5秒前的值1.234。

4.2.8 异步和同步接口比较

架设很多客户程序希望访问暂存器的数据,会有几种方法客户用来访问服务器数据。

可以用同步方式从缓冲器里读数据。这种方式适合很简单的一些客户程序,只读一些相当小数量的数据和最大效率不予考虑。这种方式操作的客户程序本质上是对服务器上已经存在的扫描的一种复制。

可以用IOPCDataCallback预订缓冲器里的数据,这个是客户程序被推荐使用的一种方式,因为它会消耗CPU和网络资源最少。 4.2.9 活动标志,死区,和更新速率

这些组和条目的属性用来降低客户和服务器的消耗的资源。在稍后的GROUPS里会做详细的讨论。一般的,他们会影响缓冲区数据和质量信息的更新频率和客户程序IOPCDataCallback的访问频率。 4.2.10 错误和返回代码

OPC说明书描述了OPC服务器实现的和OPC客户应用程序依靠的接口和相应的行为。在这个说明书的OPC错误代码摘要一章中包含了一个OPC详细的错误列表和返回代码。在每个被描述的方法后面都有一个所有可能出现的OPC错误代码也包括最平常的OLE错误

代码。客户程序有可能遇到额外的错误代码象RPC和实际的安全代码,他们应该做好预处理这些代码的工作。

在两种情况下(读/写)允许服务器返回开发商特殊的错误代码。这些代码被传递给GetErrorString 方法。以后会详细讨论这个。

所有的情况下 E 错误代码表示FAILED类型的错误和S 错误代码表示有局部成功。

4.2.11 启动问题

当条目被加到组里面以后,OPC服务器会花费一些时间为这些条目获得一些实时的值。在这些情况下,客户端就会完成一次读缓存,或者建立一个AdviseSink或者基于预约好的连接点,和在这些建立在预约上的值可用之前对他们进行一次刷新。你会在后边对预约的讨论中你会看到,在一个组中会期望有一个包含所有数值刷新的回调函数。当条目被加到组中的同时,在这种条件下期望的行为就会被概括描写。这些条目的初始状态会设为被OPC_QUALITY_WAITING_FOR_INITAL_DATA(20)屏蔽的OPC_QUALITY_BAD。任何客户端对这个组的操作会被表现为好和坏的质量评估。如果服务器在添加条目时不能迅速判断数据类型,它就会返回VT_EMPTY 的规范数据类型。注意在同步读和异步2操作时,服务器可能返回开发者定义的特殊的错误信息来提示开发者的一个特殊的错误例如“服务器初始化错误”。

4.2.12 VARIANT 数据类型和通用性

为了增强通用性,推出了下边的规则和建议。 一般的建议:

RARIANT类的 VT_I2, I4, R4, R8, CY, DATE, BSTR, BOOL, UI1 还有这些类型的单数组类希望能被经常作为通用类型使用。(部分地因为它们是VB里的合法类型)。 推荐无论什么情况下客户端请求的数据为这些数据类型,服务器也同样返回的是这些数据类型的数据。

如果想对一些扩展的数据类型进行使用在服务器和客户端都是同一个开发者开发的软件中进行不可移动的数据返回到客户端,为了通用性这些东西尽量少用。

在实际用于中法相一些服务器在条目加入和删除的时候不能断定不活动的数据类型(例如那些远程和本地的连接)。作为不活动的数据类型返回的VT_EMPTY类型在这些服务器中已经得到了实践。当数据可用和他们的实际数据类型可以断定的时候,这些服务器会保持请求的数据类型和将以请求的数据类型返回数据,推荐客户端处理AddItems和ValidateItems返回的初始的VT_EMPTY。

通用规则:

在推荐的数据类型之上服务器被允许维护和返回任何合法的通用数据类型(任何的对VT_flags的合法更换)

客户端被允许请求在推荐的数据类型之上的Variant数据类型

服务器应该准备以极好的方法来处理那些不能被转化为他们被请求类型的数据。那就是,

他们不应该失效,或返回错误的结果,或丢失内存,就像提到的,任何地方它们都可能返回各种错误包括微软VariantChangeType.返回的错误类型。

客户端应该随时准备处理那些不能处理请求数据类型的服务器。也就是,当错误被返回时它们不应该失效和丢失内存。

请求VT_EMPTY(习惯被表示返回他自己的通用类型)的客户端应该同样准备处理任何被返回的类型。也就是,即使发现他们不能用或不能显示返回的数据。他们应该正确释放数据。和正确地给用户提示一个不能被客户程序识别的数据类型被返回了。

Variant的实数值(VT_R4,VT_R8)将包含IEEE浮点数。标注,IEEE标准浮点数包含无数值的值(NAN)以这种格式存储。即使这些值相当少用,它们也是允许使用的。如果这些值被返回,就需要QUALITY 标志位被设置为OPC_QUALITY_BAD。

虽然IEEE标准允许NAN被存储到VT_R4和VT_R8格式,这些值仅可用目标条目的额外的固定格式来进行读写。他们不能与其他类型进行相互转换。当这些数值被读时QUALITY标志为必须被服务器返回OPC_QUALITY_BAD。如果这些值被写时QUALITY标志必须被客户提供位OPC_QUALITY_BAD,一些特殊的服务器是否返回和接受这些值就看服务器这方面是否特殊说明了。

数据转换的公认额外规则

OPC服务器必须支持至少是下面的在规范的和请求的数据类型之间的转换。读和写必须同步。注意早期的版本实现这个功能是同沟在COM库中的

VariantChangeEx()来提供的。在下面的表中,标志为OK的时可用的,其他的能与不能与数据源的特殊性有关。

象在这个规范的其他地方注释的一样,客户程序都会明确一个localID来使用。服务起会把他传递给VariantChangeTypeEx()在所有的会话中使用。注意有喜恶客户会通过控制面板的区域设置覆盖默认的区域设定。例如,英文的设置可能是MM/DD/YY 或YY/MM/DD 也有其他的格式。显然 03/02/01 在这种情况下是含糊不清的。终端用户应该确保对给定的local ID 在网路上不同的机子上是兼容的。

搜索更多关于: OPC说明书--中文版 的文档
OPC说明书--中文版.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3c5cm3de5o0daet3z43u_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top