This example shows you how to configure and execute a logging session, and how to retrieve data from that logging session.
PREREQUISITES:
Create a hierarchy of OPC Toolbox™ objects.
da = opcda('localhost','Matrikon.OPC.Simulation.1'); connect(da); grp = addgroup(da,'CallbackTest'); additem(grp,'Random.Real8'); additem(grp,'Random.UInt2'); additem(grp,'Random.Real4');
Set the group's UpdateRate
value to 0.2
seconds, and the RecordsToAcquire
property to 40
.
grp.UpdateRate = 0.2; grp.RecordsToAcquire = 40;
Configure the group to log data to disk and memory. Use a file in a temporary folder.
logFileName = fullfile(tempdir,'LoggingExample.olf'); grp.LoggingMode = 'disk&memory'; grp.LogFileName = logFileName; grp.LogToDiskMode = 'overwrite';
The disk file name is LoggingExample.olf
. If the file name exists, the toolbox engine overwrites the file.
Start the logging task on the group object. Wait two seconds and show the last acquired value.
start(grp) pause(2) sPeek = peekdata(grp,1)
sPeek = LocalEventTime: [2016 4 12 13 49 24.9080] Items: [3×1 struct]
Display the item ID and values
disp({sPeek.Items.ItemID;sPeek.Items.Value});
'Random.Real8' 'Random.UInt2' 'Random.Real4' [ 8.5714e+03] [ 9961] [ 1.9025e+04]
Wait for the object to complete logging before continuing with the example.
wait(grp)
Retrieve the first 20 acquired records into a structure.
sFirst = getdata(grp,20);
The getdata
function removes the records from the OPC Toolbox engine. Examine the available records using the RecordsAvailable
property of the group.
recAvail = grp.RecordsAvailable
recAvail = 20
Retrieve the balance of the records into separate arrays, converting all values to double-precision floating point numbers.
[exItmId,exVal,exQual,exTStamp,exEvtTime] = getdata(grp, ... recAvail,'double');
Examine the contents of the workspace.
whos ex*
Name Size Bytes Class Attributes exEvtTime 20x1 160 double exItmId 1x3 408 cell exQual 20x3 8880 cell exTStamp 20x3 480 double exVal 20x3 480 double
Retrieve data from disk for a specific item, using the 'itemids' filter.
sReal8Disk = opcread(logFileName,'itemids','Random.Real8')
sReal8Disk = 40×1 struct array with fields: LocalEventTime Items
Examine the second record.
sReal8Disk(2).Items
ans = ItemID: 'Random.Real8' Value: 1.4955e+04 Quality: 'Good: Non-specific' TimeStamp: [2016 4 12 13 49 24.3890]
Disconnect and delete OPC Toolbox objects from the OPC Toolbox engine.
disconnect(da) delete(da) delete(logFileName)
Deleting the client object also deletes the group and item objects.