exponenta event banner

Данные логов от 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)

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