Журнал информации о событиях
EventLog содержит структурный массив, в котором хранится информация, связанная с событиями OPC Toolbox™ программного обеспечения. Каждый элемент в массиве структуры соответствует событию.
Каждый элемент в EventLog структура содержит поля Type и Data. Type значение может быть 'WriteAsync', 'ReadAsync', 'CancelAsync', 'Shutdown', 'Start', 'Stop', или 'Error'.
Data сохраняет специфичную для события информацию в виде структуры. Для получения информации о полях, содержащихся в Data, см. связанные страницы ссылок на свойства обратного вызова. Например, чтобы найти информацию о полях, содержащихся в Data для Start , см. StartFcn собственность.
Вы указываете максимальное количество событий для хранения с помощью EventLogMax собственность.
Обратите внимание, что некоторые события не хранятся в EventLog. Чтобы сохранить эти события, необходимо указать обратный вызов для этого события.
При возникновении события можно выполнить функцию обратного вызова, указав функцию для связанного свойства обратного вызова. Например, для выполнения обратного вызова при генерации асинхронного события чтения используется ReadAsyncFcn собственность.
Если журнал событий заполнен (количество событий в журнале равно значению EventLogMax свойство) и принимают новое событие, удаляют самое старое событие, чтобы освободить место для нового события. Очистить журнал событий можно с помощью cleareventlog функция.
|
Доступ |
Только для чтения |
|
Относится к |
|
|
Тип данных |
Структурный массив |
|
Ценности |
Значением по умолчанию является пустая матрица ( |
В следующем примере создается клиент и настраивается группа с двумя элементами. Выполняется 30-секундная задача регистрации, и через 10 секунд считываются значения элементов. Когда задача регистрации прекращается, журнал событий извлекается и проверяется.
da = opcda('localhost', 'Matrikon.OPC.Simulation');
connect(da);
grp = addgroup(da, 'EvtLogExample');
itm1 = additem(grp, 'Random.Real8');
itm2 = additem(grp, 'Triangle Waves.UInt1');
set(grp, 'UpdateRate', 1, 'RecordsToAcquire', 30);
start(grp);
pause(10);
tid = readasync(grp);
wait(grp);
el = get(da, 'EventLog')
el = get(da, 'EventLog')
el =
1x3 struct array with fields:
Type
DataТеперь изучите первое событие, которое является событием начала.
el(1)
ans =
Type: 'Start'
Data: [1x1 struct]Поле Данные содержит следующую информацию.
el(1).Data
ans =
LocalEventTime: [2004 1 13 16 16 25.1790]
GroupName: 'EvtLogExample'
RecordsAcquired: 0Второе событие - это ReadAsync событие. Осмотрите Data структура и первый элемент Items структура.
el(2)
ans =
Type: 'ReadAsync'
Data: [1x1 struct]
el(2).Data
ans =
LocalEventTime: [2004 1 13 16 16 35.2100]
TransID: 2
GroupName: 'EvtLogExample'
Items: [2x1 struct]
el(2).Data.Items(1)
ans =
ItemID: 'Random.Real8'
Value: 2.4619e+003
Quality: 'Good: Non-specific'
TimeStamp: [2004 1 13 16 16 35.1870]CancelAsyncFcn, DataChangeFcn, EventLogMax, ErrorFcn, ReadAsyncFcn, StartFcn, StopFcn, WriteAsyncFcn