Данные логов от OPC Data доступ к серверу

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

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

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

Отобразите 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)

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