Access Historical Data
HDA Programming Overview
This section illustrates the basic steps to create an OPC Historical Data Access (HDA) application by retrieving historical data from the Triangle Wave and Saw-toothed Wave signals provided by the Matrikon™ OPC Simulation Server.
Note
To run the sample code in the following steps you need the Matrikon OPC Simulation Server on your local machine. For installation details, see Install an OPC HDA Simulation Server for OPC Classic Examples. The code requires only minor changes to work with other servers.
Step 1: Locate Your OPC Historical Data Access Server
In this step, you obtain two pieces of information that the toolbox needs to uniquely identify the OPC Historical Data Access server that you want to connect to. You use this information when creating an OPC Historical Data Access (HDA) client object, described in Step 2: Create OPC Historical Data Access Client Object.
The first piece of information is the host name of the server computer. The host
                name (a descriptive name like "HistorianServer" or an IP address
                such as 192.168.16.32) qualifies that computer on the network,
                and is used by the OPC protocols to determine the available OPC servers on that
                computer. In any OPC application, you must know the name of the OPC server's host,
                so that a connection with that host can be established. Your network administrator
                can provide a list of host names that provide OPC servers on your network. In this
                example, you will use localhost as the host name, because you
                will connect to the OPC server on the same machine as the client.
The second piece of information is the OPC server's server ID. Each OPC server on a particular host is identified by a unique server ID (also called the Program ID or ProgID), which is allocated to that server on installation. The server ID is a character vector, usually containing periods.
Although your network administrator can provide a list of server IDs for a particular host, you can query the host for all available OPC servers. Find and Connect to OPC HDA Server discusses how to query hosts from the command line.
Use the opchdaserverinfo function to query
                from the command line.
| hostInfo = opchdaserverinfo('localhost')hostInfo = 
             1x4 OPC HDA ServerInfo array:
index    Host                 ServerID          HDASpecification              Description                   
-----  ---------  ---------------------------------  -----  ------------------------------------------------
  1    localhost  Advosol.HDA.Test.3                 HDA1         Advosol HDA Test Server V3.0
  2    localhost  IntegrationObjects.OPCSimulator.1  HDA1         Integration Objects OPC DX HDA Simulator 2
  3    localhost  IntegrationObjects.OPCSimulator.1  HDA1         Integration Objects' OPC HDA Server Simulator
  4    localhost  Matrikon.OPC.Simulation.1          HDA1         MatrikonOPC Server for Simulation and Testing
 | 
Examining the returned structure in more detail provides the server IDs of each OPC server.
allServers = {hostInfo.ServerID}allServers = Columns 1 through 3 'Advosol.HDA.Test.3' 'IntegrationObjects.OPCSimulator.1' 'IntegrationObjects.OPCSimulator.1' Column 4 'Matrikon.OPC.Simulation.1'
Step 2: Create OPC Historical Data Access Client Object
After determining the host name and server ID of the OPC server to connect to, create an OPC HDA client object. The client controls the connection status to the server, and stores events that occur from that server.
Use the opchda function, specifying the host
                name and Server ID arguments.
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 seconds
        Status: disconnected
    Aggregates: -- (client is disconnected)
ItemAttributes: -- (client is disconnected)
Methods
For details on creating clients, see Create OPC HDA Client Object.
Step 3: Connect to OPC Historical Data Access Server
OPC Historical Data Access Client objects are not automatically connected to the server when they are created.
Use the connect function to connect an OPC HDA
                client object to the server at the command line.
connect(hdaClient)
Step 4: Retrieve Historical Data
To read historical values from an HDA server for a particular time range, use the
                    readRaw function. This function takes
                a list of items as well as a start and end time (demarcating the time span) for
                which historical data is required.
| data = hdaClient.readRaw({'Saw-toothed Waves.Real8','Triangle Waves.Real8'},now-100000,now)data = 
1-by-2 OPC HDA Data object:
        ItemID                 Value            Start TimeStamp           End TimeStamp              Quality        
-----------------------  -----------------  -----------------------  -----------------------  ----------------------
Saw-toothed Waves.Real8  200 double values  2010-11-02 12:22:32.981  2010-11-02 12:23:13.363  1 unique quality [Raw]
Triangle Waves.Real8     199 double values  2010-11-02 12:22:33.141  2010-11-02 12:23:13.293  1 unique quality [Raw]
	 | 
The retrieved historical data contains a Value, Timestamp, and Quality for each data point. To view these elements from the previous example, use the following instructions:
data.Value data.TimeStamp data.Quality
Step 5: Plot Data
Use this code to generate the plot figure:
plot(data)
axis tight
legend(data.ItemID)Step 6: Clean Up
After using OPC objects at the MATLAB®
                command line or from your own functions, you must remove them from the toolbox
                engine with the delete function. Note that when you delete a
                toolbox object, the children of that object are also removed from the toolbox
                engine.
disconnect(hda) delete(hdaClient) clear hdaClient data