Main Content

Create and Configure OPC Objects

This example shows you how to create and configure objects in the workspace to access an OPC server.


Create Client Objects

Create a client using the opcda function. You need the host name and the server ID for the OPC server associated with this client.

da = opcda('localhost','Matrikon.OPC.Simulation.1');

Add Groups to the Client

Use the addgroup function to add groups to the client object. The toolbox automatically assigns a name to the group, if you do not specify one.

grp1 = addgroup(da);

Group objects are used to manage collections of daitem objects.

To assign your own name to a group, the name must be unique for all the groups in a client. Pass the name as an additional argument to addgroup.

grp2 = addgroup(da,'MyGroup');

Type the object name to view a summary of the group object.

grp1 =

Summary of OPC Data Access Group Object: Group0

   Object Parameters
      Group Type   : private
      Item         : 0-by-1 daitem object
      Parent       : localhost/Matrikon.OPC.Simulation.1
      Update Rate  : 0.5
      Deadband     : 0%

   Object Status
      Active       : on
      Subscription : on
      Logging      : off

   Logging Parameters
      Records      : 120
      Duration     : at least 60 seconds
      Logging to   : memory
      Status       : Waiting for START.
                     0 records available for GETDATA/PEEKDATA

Add Item Objects to the Group

Add the item named Random.Real8 to the group.

itm1 = additem(grp1,'Random.Real8');

If you want the value stored in MATLAB® to have a specific data type, specify it as the third argument.

itm2 = additem(grp1,'Random.UInt2','double');

To view a summary of the object, type the name of the object.

itm1 =

Summary of OPC Data Access Item Object: Random.Real8

   Object Parameters
      Parent        : Group0
      Access Rights : read

   Object Status
      Active        : on

   Data Parameters
      Data Type     : double
      Value         : 0
      Quality       : Bad: Out of Service
      Timestamp     : 12-Apr-2016 16:19:50

Create Object Vectors

References to multiple OPC objects can be stored in object vectors.

itmVec = [itm1,itm2]
itmVec =

   OPC Item Object Array:

   Index:  Active:  ItemID:             Value:                Quality:    TimeStamp:
   1       on       Random.Real8        0                     Bad: Ou...  16:19:50
   2       on       Random.UInt2                              Bad: Ou...   

Displaying the object vector shows information about each object in the vector.

View and Change Object Properties

View a list of all properties supported by the object.

  General Settings:
    EventLog = []
    EventLogMax = 1000
    Group = [1×2 dagroup]
    Host = localhost
    Name = localhost/Matrikon.OPC.Simulation.1
    ServerID = Matrikon.OPC.Simulation.1
    Status = connected
    Tag = 
    Timeout = 10
    Type = opcda
    UserData = []

  Callback Function Settings:
    ErrorFcn = @opccallback
    ShutdownFcn = @opccallback
    TimerFcn = []
    TimerPeriod = 10

Obtain information about a specific property.

clientName = da.Name
clientName =


Get information about a property using the propinfo function.

statusInfo = propinfo(da,'Status')
statusInfo = 

               Type: 'string'
         Constraint: 'enum'
    ConstraintValue: {'disconnected'  'connected'}
       DefaultValue: 'disconnected'
           ReadOnly: 'always'

The information includes whether the property is read-only, and lists the valid values for properties that have a predefined set of values.

Set the value of the Timeout property to 30 seconds.

da.Timeout = 30
da =

Summary of OPC Data Access Client Object: localhost/Matrikon.OPC.Simulation.1

   Server Parameters
      Host      : localhost
      ServerID  : Matrikon.OPC.Simulation.1
      Status    : connected
      Timeout   : 30 seconds

   Object Parameters
      Group     : 2-by-1 dagroup object
      Event Log : 0 of 1000 events

Clean Up

Delete objects that you are finished using from the OPC engine.


Deleting the client object also deletes the group and item objects associated with that client.