Этот пример показывает вам, как сконфигурировать и выполнить сеанс журналирования, и как получить данные от того сеанса журналирования.
ПРЕДПОСЫЛКИ:
Создайте иерархию объектов 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)
Удаление объекта клиента также удаляет объекты элемента и группа.