首页 理论教育 数据获取与管理模块的设计优化方案

数据获取与管理模块的设计优化方案

更新时间:2025-01-10 工作计划 版权反馈
【摘要】:数据获取与管理在本书的很多章节中已经出现过了,分别介绍了其设计模型、与数据组态、功能组态和通信组态的关系等内容。数据获取与管理是基于OPC技术的数据采集方式的,其OPC服务器的设计这里不作介绍,主要介绍OPC客户端如何访问OPC服务器。客户程序本身可以完成很多复杂的数据处理与显示功能,但需要通过OPC接口部分访问OPC服务器,对现场数据进行存取。异步通报接口方式和连接点方式中的数据的接收和处理有所不同。

数据获取与管理在本书的很多章节中已经出现过了,分别介绍了其设计模型、与数据组态、功能组态和通信组态的关系等内容。本节主要介绍其有关的实现的具体技术。

数据获取与管理是基于OPC技术的数据采集方式的,其OPC服务器的设计这里不作介绍,主要介绍OPC客户端如何访问OPC服务器。OPC客户程序的设计主要是指客户程序中OPC接口部分的设计。客户程序本身可以完成很多复杂的数据处理与显示功能,但需要通过OPC接口部分访问OPC服务器,对现场数据进行存取。

OPC服务器是一个典型的COM组件,所以客户程序对它的调用要遵循COM组件调用实现的一般过程。COM组件调用的一般过程如下:

1)调用CoInitialize函数初始化COM结构对象。

2)调用CLSIDFromProgID()函数将ProgID变换为CLSID。

3)CoGetClassObject函数创建类厂对象,并得到类厂指针p。

4)通过类厂指针p创建所需对象实例,初始化第一个接口,并得到初始化对象的接口指针p1。

5)利用p1调用QueryInterface函数得到所需的接口指针pn。

6)通过所需的接口指针pn调用所需的功能函数。

7)应用完毕调用Release()函数释放接口。

8)调用CoFreeUnusedLibraries()函数释放动态库。

9)调用CoUninitialize()函数释放COM结构。(www.xing528.com)

在客户/服务器模式中,客户端的主要工作除了建立连接,就是接收和处理数据。异步通报接口方式和连接点方式中的数据的接收和处理有所不同。

1.异步通报接口方式

在异步通报接口方式中,客户程序被要求实现一个支持IAdviseSink接口的OnDat-aChange方法的类。服务器通过OnDataChange方法的把数据流(具有固定格式的一块内存)传给客户,然后,客户对数据流进行解析,从中取出所需数据。数据流有多种传输格式,主要有:

1)PCSTMFORMATDATA:用在数据发生变化时,如刷新或异步读操作,表明传输数据的不带时间戳格式。

2)OPCSTMFORMATDATATIME:用在数据发生变化时,如刷新或异步读操作,表明传输数据的带时间戳格式。

3)OPCSTMFORMATWRITECOMPLETE:用于异步写完成时的传输数据格式。

2.连接点方式

在连接点方式中,客户程序被要求实现一个能完成的事件或通知的接收器sink。OPC规范定义了客户程序必须完成的事件。因为,客户程序实现的事件指针既可以操作服务器,又可以操作客户程序,所以它能很方便地把服务器的内存中指定内容传到客户程序的内存中。

为了应用连接点指针,客户程序必须创建同时支持IUnknown、IOPCDataCallback和IOPCShutdown三个接口的对象,即客户必须实现以上接口的功能函数。客户将为服务器的连接点(可从IConnectionPointContainer::FindConnectionPoint或EnumConnectionPoints中获得)接口的Advise方法传递指向IUnknown接口的指针。服务器将调用客户的接口查询函数得到IOPCDataCallback接口或IOPCShutdown接口。

数据管理组件的抽象层完成与仪器的数据通信与控制,其基本类定义如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈