Считайте регистрируемые записи от диска до рабочего пространства MATLAB
S = OPCREAD('LogFileName')
S = opcread('LogFileName','PropertyName
','PropertyValue',...)
TSCell = opcread('LogFileName','DataType','timeseries')
[I,V,Q,TS,ET] = opcread('LogFileName','DataType',DType
,...)
S = OPCREAD('LogFileName')
возвращает все доступные записи в файл журнала OPC под названием LogFileName
. Если никакое расширение не задано как часть LogFileName
, то .olf
используется.
S
является NRec
-by-1
массив структур, где NRec
является количеством возвращенных записей. S
содержит поля 'LocalEventTime'
и 'Items'
. LocalEventTime
является соответствием вектора даты локальному времени события для той записи. Items
является NItems
-by-1
, массив структур, содержащий поля, показывают ниже.
Имя поля |
Описание |
---|---|
|
Полностью определенный ID элемента, как вектор символов. |
|
Значение данных. Тип данных зависит от свойства |
|
Качество данных, как вектор символов. |
|
Время значение было изменено как вектор даты. |
S = opcread('LogFileName','
ограничивает данные, считанные из заданного файла журнала OPC на основе свойств и обеспеченных значений. Допустимые имена свойства и значения свойств заданы в приведенной ниже таблице. PropertyName
','PropertyValue',...)
PropertyName |
Значение свойства |
---|---|
|
Задайте необходимые записи как |
|
Задайте диапазон дат для записей как |
|
Задайте необходимые идентификаторы элемента как вектор символов, строку или массив. Если никакие записи не совпадают с необходимым |
TSCell = opcread('LogFileName','DataType','timeseries')
присваивает данные, полученные от файла журнала OPC до массива ячеек объектов временных рядов. TSCell
содержит столько же объектов временных рядов, сколько существуют элементы в группе с именем каждого набора объекта временных рядов к ID элемента. Качественное значение, сохраненное в объекте временных рядов, смещается от качественного значения, возвращенного Сервером OPC 128. Качество, отображенное каждым, является тем же самым. Поскольку каждая регистрируемая запись не может содержать информацию для каждого элемента, объекты временных рядов имеют только столько же точек данных, сколько существуют записи, содержащие информацию о том конкретном ID элемента.
[I,V,Q,TS,ET] = opcread('LogFileName','DataType',
присваивает полученные данные от файла журнала OPC до отдельных массивов. Допустимыми типами данных для DType
,...)DType
является 'double'
, 'single'
, 'int8'
, 'int16'
, 'int32'
, 'uint8'
, 'uint16'
, 'uint32'
, 'logical'
, 'currency'
, 'date'
и 'cell'
.
I
является 1
-by-NItem
массив ячеек названий товара.
V
является NRec
-by-NItem
массив значений с заданным типом данных. Если тип данных 'cell'
задан, V
является массивом ячеек, содержащим данные в возвращенном типе данных для каждого элемента. В противном случае V
является числовым массивом заданного типа данных.
DType
должен быть установлен в 'cell'
при получении записей, содержащих векторы символов или массивы значений.
Q
является NRec
-by-NItem
массив качественных векторов символов для каждого значения в V
.
TS
является NRec
-by-NItem
массив чисел даты MATLAB, представляющих время, когда соответствующее значение и качество хранились на Сервере OPC.
ET
является NRec
-by-1
массив чисел даты MATLAB, соответствуя локальному времени события для каждой записи.
Каждая регистрируемая запись не может содержать информацию для каждого возвращенного элемента, поскольку данные для того элемента не могли измениться от предыдущего обновления. Когда данные возвращены как числовая матрица, недостающие столбцы элемента для той записи заполнены следующие.
|
Соответствующая запись значения установлена в предыдущее значение того элемента, или к |
|
Соответствующая качественная запись установлена в |
|
Соответствующая запись метки времени установлена в первую допустимую метку времени для той записи. |
Сконфигурируйте и запустите задачу журналирования. Ожидайте задачи завершиться.
da = opcda('localhost','Matrikon.OPC.Simulation'); connect(da); grp = addgroup(da,'ExOPCREAD'); itm1 = additem(grp,'Triangle Waves.Real8'); itm2 = additem(grp,'Saw-Toothed Waves.Int2'); grp.LoggingMode = 'disk'; grp.RecordsToAcquire = 30; grp.LogFileName = 'ExOPCREAD.olf'; start(grp); wait(grp);
Получите первые две записи в структуру:
s = opcread('ExOPCREAD.olf','Records',[1, 2]);
Получите все данные и постройте их с легендой:
[itmID,val,qual,tStamp] = opcread('ExOPCREAD.olf', ... 'DataType','double'); plot(tStamp(:,1),val(:,1),tStamp(:,2),val(:,2)); legend(itmID); datetick x keeplimits