Этот пример показывает вам, как сконфигурировать и выполнить сеанс логгирования, и как получить данные от того сеанса логгирования.
ПРЕДПОСЫЛКИ:
Создайте иерархию объектов OPC Toolbox™.
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');
Установите UpdateRate
группы значение к
0.2
секунды и RecordsToAcquire
свойство к 40
.
grp.UpdateRate = 0.2; grp.RecordsToAcquire = 40;
Сконфигурируйте группу к данным логов к диску и памяти. Используйте файл во временной папке.
logFileName = fullfile(tempdir,'LoggingExample.olf'); grp.LoggingMode = 'disk&memory'; grp.LogFileName = logFileName; grp.LogToDiskMode = 'overwrite';
Именем дискового файла является LoggingExample.olf
. Если имя файла существует, механизм тулбокса перезаписывает файл.
Запустите задачу логгирования на групповом объекте. Ожидайте две секунды и покажите последнее полученное значение.
start(grp) pause(2) sPeek = peekdata(grp,1)
sPeek = LocalEventTime: [2016 4 12 13 49 24.9080] Items: [3×1 struct]
Отобразите ID элемента и значения
disp({sPeek.Items.ItemID;sPeek.Items.Value});
'Random.Real8' 'Random.UInt2' 'Random.Real4' [ 8.5714e+03] [ 9961] [ 1.9025e+04]
Ожидайте объекта завершить логгирование прежде, чем продолжить пример.
wait(grp)
Получите первые 20 полученных записей в структуру.
sFirst = getdata(grp,20);
getdata
функция удаляет записи из механизма OPC Toolbox. Исследуйте доступные записи с помощью RecordsAvailable
свойство группы.
recAvail = grp.RecordsAvailable
recAvail = 20
Получите баланс записей в отдельные массивы, преобразовав все значения в числа плавающей точки двойной точности.
[exItmId,exVal,exQual,exTStamp,exEvtTime] = getdata(grp, ... recAvail,'double');
Исследуйте содержимое рабочей области.
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
Получите данные от диска для определенного элемента, с помощью фильтра 'itemids'.
sReal8Disk = opcread(logFileName,'itemids','Random.Real8')
sReal8Disk = 40×1 struct array with fields: LocalEventTime Items
Исследуйте вторую запись.
sReal8Disk(2).Items
ans = ItemID: 'Random.Real8' Value: 1.4955e+04 Quality: 'Good: Non-specific' TimeStamp: [2016 4 12 13 49 24.3890]
Отключите и удалите объекты OPC Toolbox из механизма OPC Toolbox.
disconnect(da) delete(da) delete(logFileName)
Удаление объекта клиента также удаляет объекты элемента и группа.