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