主要内容

访问历史数据

编程概述注重科技进步

本节演示创建OPC Toolbox™历史数据访问(HDA)应用程序的基本步骤,方法是从Matrikon™OPC仿真服务器提供的三角波和锯齿波信号中检索历史数据。

请注意

要按以下步骤运行示例代码,您需要在本地机器上安装Matrikon OPC仿真服务器。安装方法请参见为OPC经典示例安装一个OPC DA或HDA模拟服务器。代码只需要做很小的修改就可以与其他服务器一起工作。

步骤1:找到您的OPC历史数据访问服务器

在此步骤中,您将获得工具箱需要的两段信息,以惟一地标识您想要连接的OPC历史数据访问服务器。在创建OPC历史数据访问(HDA)客户端对象时使用此信息,请参见步骤2:创建OPC历史数据访问客户端对象

第一条信息是服务器计算机的主机名。主机名(描述性名称,如“HistorianServer或IP地址,例如192.168.16.32)限定网络上的计算机,并被OPC协议用于确定该计算机上可用的OPC服务器。在任何OPC Toolbox™应用程序中,您都必须知道OPC服务器主机的名称,以便能够建立与该主机的连接。您的网络管理员可以提供一个主机名列表,这些主机名在您的网络上提供OPC服务器。在本例中,您将使用本地主机作为主机名,因为您将连接到与客户机在同一台机器上的OPC服务器。

第二条信息是OPC服务器的服务器ID。特定主机上的每个OPC服务器都由唯一的服务器ID(也称为程序ID或ProgID)标识,该ID在安装时分配给该服务器。服务器ID是一个字符向量,通常包含句点。

尽管您的网络管理员可以提供特定主机的服务器id列表,但您可以查询该主机中所有可用的OPC服务器。发现可用的HDA服务器讨论如何从命令行查询主机。

使用opchdaserverinfo命令功能从命令行查询。

hostInfo = opchdaserverinfo (“localhost”)
hostInfo = 1 x4 OPC ServerInfo数组:注重科技进步指数主机ServerID HDASpecification描述  ----- --------- --------------------------------- ----- ------------------------------------------------ 1 localhost Advosol.HDA.Test。3 HDA1 Advosol HDA Test Server V3.01 HDA1集成对象OPC DA DX HDA Simulator 2 3 localhost IntegrationObjects.OPCSimulator.1 HDA1集成对象的OPC DA/HDA Server Simulator1 HDA1 MatrikonOPC服务器,用于模拟和测试

更详细地检查返回的结构可以提供每个OPC服务器的服务器id。

allServers = {hostInfo.ServerID}
allServers =列1到3 '3“IntegrationObjects.OPCSimulator。1“IntegrationObjects.OPCSimulator。1 ` Column 4 ` Matrikon.OPC.Simulation.1 `

步骤2:创建OPC历史数据访问客户端对象

确定要连接的OPC服务器的主机名和服务器ID后,创建OPC HDA client对象。客户端控制到服务器的连接状态,并存储从该服务器发生的事件。

使用opchda函数,指定主机名和服务器ID参数。

hdaClient = opchda (“localhost”,“Matrikon.OPC.Simulation.1”)
hdaClient = OPC HDA Client localhost/Matrikon.OPC.Simulation。1: Host: localhost ServerID: Matrikon.OPC.Simulation。1 Timeout: 10秒Status: disconnected聚合:——(客户端连接断开)项目属性:——(客户端连接断开)方法

创建客户端的详细信息请参见创建OPC HDA客户端对象

步骤3:连接OPC历史数据访问服务器

OPC历史数据访问客户端对象创建时不会自动连接到服务器。

使用连接函数在命令行中将OPC HDA客户端对象连接到服务器。

连接(hdaClient)

步骤4:检索历史数据

生成的历史数据

连接到HDA服务器后,您可以读取历史数据值锯齿状的Waves.Real8三角形Waves.Real8物品。Matrikon模拟服务器只存储已经被OPC数据访问客户端激活和读取的数据。因此,运行此代码在历史记录中生成并自动存储数据。

在命令行输入以下命令:

da = opcda (“localhost”,“Matrikon.OPC.Simulation.1”);连接(da);grp = addgroup (da);additem (grp),“锯齿Waves.Real8”);additem (grp),“三角Waves.Real8”);logDuration = 2 * 60;logRate = 0.2;numRecords =装天花板(logDuration. / logRate);grp。UpdateRate = logRate;grp。RecordsToAcquire = numRecords;开始(grp)等(grp)

从历史数据访问服务器读取一个值

要从HDA服务器读取特定时间段的历史值,请使用readRaw函数。这个函数接受一个项目列表,以及需要历史数据的开始和结束时间(划分时间跨度)。

data = hdaClient.readRaw ({“锯齿Waves.Real8”,“三角Waves.Real8”},现在- 100000)
data = 1×2 OPC数据对象:注重科技进步ItemID价值开始时间结束时间戳的质量  ----------------------- ----------------- ----------------------- ----------------------- ---------------------- 锯齿状的波。2010-11-02 12:22:32.981 2010-11-02 12:23:13.363 1 unique quality [Raw] Triangle Waves。2010-11-02 12:23:13.293 2010-11-02 12:23:13.293 unique quality [Raw]

检索到的历史数据包含每个数据点的值、时间戳和质量。要查看前面示例中的这些元素,请使用以下说明:

数据。值数据。时间戳data.Quality

第五步:绘制数据

使用以下代码生成图:

情节(数据)轴datetick (“x”,“keeplimits”传奇(data.ItemID)

第六步:清理

之后在MATLAB中使用OPC工具箱中的对象®命令行或从您自己的函数中删除它们时,必须使用删除函数。请注意,当您删除工具箱对象时,该对象的子对象将自动从工具箱引擎中删除。

断开()注重科技进步删除(hdaClient)清晰hdaClient数据

OPC工具箱对象管理的细节在删除对象