OPC Toolbox™ provides an OPC UA client to connect to OPC UA servers. Using the client, you connect to the server, query server status, browse the server namespace, read and write current values, and read historical values from nodes on the server. Historical data is retrieved as OPC data objects, which allow you to process historical data in preparation for common analysis tasks.
You construct the OPC UA Client using the
opcua function. You connect the client to the server using
connect. The Client includes a number of properties describing the
server capabilities. See
opc.ua.Client for more information on the
properties exposed by the Client. You can also query the server for extended status
You use the Client to perform any communication with the server, including browsing the server name space, reading and writing current values, and reading historical values from the server.
The OPC UA Client includes a Namespace property, which contains the top level of
the server’s namespace as an array of Nodes. An OPC UA Node variable describes the
node on the server, and contain other subnodes in the
property. Nodes have a
NodeType which can be
'Variable'. Object nodes have
no value associated with them, and are used purely for organizing the namespace of
the server. Variable nodes store current values, representing a sensor or actuator
value associated with the server. For more information, see
Servers may choose to historize nodes (store previous data values for that node).
Historizing property of a Node defines whether a server is
historizing the node or not. If you try to retrieve historical data from a Variable
Historizing set to
false, no data
is returned and an error is displayed.
You can read and write current values, and retrieve historical data, using Node
variables directly. This is simply a short-hand for performing the same operations
on the node
Data retrieved from OPC UA servers includes three important values. The Value is accompanied by a Quality and a Timestamp. The Quality represents how accurately the data Value is considered to reflect the actual source value attached to the server. The Timestamp represents the time that the server recorded the value, or received notification from the data source that the value is current.
When you retrieve current values, the Value, Quality and Timestamp are retrieved into separate arrays. When you retrieve historical values, OPC UA servers may return a different number of Value, Quality and Timestamp arrays for each Node requested. This data is packaged into an OPC UA Data object, which allows you to process this data set in preparation for common analysis tasks. For more information, type
For an example of working with OPC UA data, see Visualize and Preprocess OPC UA Data.
OPC UA Quality values are 32-bit integer values. OPC UA Qualities encode many different characteristics of the quality of the data returned from a current or historical data read operation, including the Major quality (Good, Uncertain, or Bad), quality substatus (dependent on Major quality), value limits (High Limit, Low Limit, Constant), and history origin and characteristics (Raw, Interpolated, Calculated). You can query these characteristics individually using functions specific to the Quality variable that is returned in the read operation. For more information, type
OPC UA servers return timestamps for server status and for all current and
historical read operations. The timestamp represents the time at which the server
recorded the data value returned in the read operation. Timestamps are represented
in MATLAB® by
datetime values. The datetime
values are always returned in the time zone of the MATLAB client used to retrieve
the data from the OPC UA server. OPC UA historical read functions require time
ranges or specific timestamp arrays over which to retrieve historical data. You can
specify time ranges using MATLAB
datetime values, or as MATLAB
date numbers. Any numeric value passed as a timestamp is interpreted as a MATLAB
date number. For functions requiring a start and end timestamp, you can also pass a
start timestamp and a