Журнал данных с сервера Доступ

В этом примере показано, как сконфигурировать и выполнить сеанс логгирования и как получить данные из этого сеанса логгирования.

НЕОБХОДИМЫЕ УСЛОВИЯ:

Создайте иерархию объектов OPC Toolbox

Создайте иерархию объектов 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)

Удаление объекта клиента также удаляет группу и объекты элемента.