After getting information about your OPC servers as described in Discover Available HDA Servers, you can establish a connection to the server by creating an OPC HDA client object, and connecting that client to the server. These steps are described next.
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 DA or HDA Simulation Server for OPC Classic Examples. The code requires only minor changes to work with other servers.
OPC Toolbox does not use groups when dealing with HDA server items. Instead, the items themselves are passed to the available functions. These functions are accessible through the OPC HDA client object. In most cases, functions accessed via this HDA client object return an opc.hda.Data object. These data object simplify the display and manipulation of the historical data retrieved from the HDA server.
To create an OPC HDA client object, call the
specifying the host name and server ID. You retrieved this information
opchdaserverinfo function (described
in Discover Available HDA Servers). This example creates an OPC
HDA client object to represent the connection to a Matrikon OPC Simulation
hdaClient = opchda('localhost','Matrikon.OPC.Simulation.1');
To view a summary of the characteristics of the OPC HDA client
object you created, enter the variable name you assigned to the object
at the command prompt. For example, this is the summary for the
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
connect function to connect a client
to the server:
connected. If the client could not connect to the server (for example, if the OPC server is shut down), an error message appears. For information on troubleshooting connections to an OPC server, see Troubleshooting. After connecting to the client to the server, you can request a list of available aggregate types with the
hdaClient.Aggregatesfunction, as well as available item attributes with
hdaClient.ItemAttributes. While connected you can browse the OPC server name space for information on available server items. See the next section for details on browsing the server name space. You can list the HDA functions with
A connected client object allows you to interact with the OPC server to obtain information about the name space of that server. The server name space provides access to all the data points provided by the OPC server by naming each data point with a server item, and then arranging those server items into a name space that provides a unique identifier for each server item.
The next section describes how to obtain a server name space
or a partial server name space, using the
getnamespace function to retrieve
the name space from an OPC HDA server. You must specify the client
object that is connected to the server that you are interested in.
The name space is returned as a structure array containing information
about each node in the name space.
This example retrieves the name space of the Matrikon OPC Simulation Server installed on the local host:
hdaClient = opchda('localhost','Matrikon.OPC.Simulation.1'); connect(hdaClient); ns = getnamespace(hdaClient) ns = 3x1 struct array with fields: Name FullyQualifiedID NodeType Nodes
This table describes the fields of the structure:
The name of the node, as a character vector.
The fully qualified item ID of the node, as a character
vector. The fully qualified item ID is made up of the path to the
node, concatenated with
The type of node.
From the previous above, exploring the name space shows:
ns(1) Name: 'Simulation Items' FullyQualifiedID: 'Simulation Items' NodeType: 'branch' Nodes: [8x1 struct] ns(3) Name: 'Clients' FullyQualifiedID: 'Clients' NodeType: 'leaf' Nodes: 
From this information, the first node is a branch node called
Items'. Since it is a branch node, it is most likely not
a valid server item. The third node is a leaf node (containing no
other nodes) with a fully qualified ID of
Since this node is a leaf node, it is most likely a server item that
can be monitored by creating an item object. To examine the nodes
further down the tree, reference the
of a branch node. For example, the first node contained within the
Items' node is obtained as follows:
ns(1).Nodes(1) Name: 'Bucket Brigade' FullyQualifiedID: 'Bucket Brigade.' NodeType: 'branch' Nodes: [14x1 struct]
The returned result shows that the first node of
Items' is a branch node named
and contains 14 nodes.
ns(1).Nodes(1).Nodes(9) ans = Name: 'Real8' FullyQualifiedID: 'Bucket Brigade.Real8' NodeType: 'leaf' Nodes: 
The ninth node in
'Bucket Brigade' is named
has a fully qualified ID of
Use the fully qualified ID to refer to that specific node in the server
name space when creating items using OPC Toolbox software.