Получите данные из исторические данные OPC доступ к серверу

Этот пример показывает вам, как получить данные из сервера Исторических данных доступа (HDA) OPC.

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

Запустите исторические данные, входящие в систему сервер

ПРИМЕЧАНИЕ: Вы не должны обычно выполнять этот шаг на рабочем сервере.

Этот пример использует сервер симуляции, который только регистрирует исторические данные для элементов, которые подписаны с помощью OPC Data доступ к клиенту. Загрузите объект клиента из файла MAT и воссоедините клиент.

daObjs = load('opcdemoHDAConfigure.mat');
connect(daObjs.opcdemoHDAConfigure);

Ожидайте некоторое время сервера, чтобы регистрировать некоторые данные.

pause(10);

Создайте объект клиента HDA OPC

Создайте Клиент HDA OPC, сопоставленный с Сервером HDA OPC.

hdaObj = opchda('localhost','matrikon.OPC.Simulation')
hdaObj = 

OPC HDA Client localhost/matrikon.OPC.Simulation:
               Host: localhost
           ServerID: matrikon.OPC.Simulation
            Timeout: 10 seconds

             Status: disconnected

         Aggregates: -- (client is disconnected)
     ItemAttributes: -- (client is disconnected)

Объект клиента справляется со связью с сервером, позволяет вам получать информацию о сервере, просматривать пробел имени сервера и считывать данные, хранимые на сервере.

На данном этапе клиент еще не соединяется с сервером. Соедините клиент с сервером.

connect(hdaObj);

Чтобы подтвердить, что клиент соединяется, отобразите клиент Status свойство.

hdaObj.Status
ans =

connected

Задайте элементы интереса

Этот пример использует Real8 элементы от Saw-toothed Waves и Real8 и UInt2 элементы от Random. Сделайте массив ячеек названий товара для простоты.

itmIDs = {'Saw-toothed Waves.Real8', ...
    'Random.Real8', ...
    'Random.UInt2'};

Считайте необработанные данные из сервера

Считайте значения необработанных данных из исторического сервера за прошедший день.

data = readRaw(hdaObj,itmIDs,now-1,now)
data = 

1-by-3 OPC HDA Data object:

            ItemID                Value           Start TimeStamp           End TimeStamp              Quality        
    -----------------------  ---------------  -----------------------  -----------------------  ----------------------
    Saw-toothed Waves.Real8  9 double values  2016-04-12 16:30:17.662  2016-04-12 16:30:25.776  1 unique quality [Raw]
    Random.Real8             9 double values  2016-04-12 16:30:17.662  2016-04-12 16:30:25.776  1 unique quality [Raw]
    Random.UInt2             9 uint16 values  2016-04-12 16:30:17.662  2016-04-12 16:30:25.776  1 unique quality [Raw]

Use the showValues method to display all values.

Примечание: сервер Matrikon сохраняет только последние 200 симулированных значений для каждого элемента.

Отобразите значения элемента First Data.

showValues(data(1))
OPC HDA Data object for item Saw-toothed Waves.Real8:

           TIMESTAMP             VALUE       QUALITY
    =======================  =============  ==========
    2016-04-12 16:30:17.662       3.141593  Raw (Good)
    2016-04-12 16:30:18.677       6.283185  Raw (Good)
    2016-04-12 16:30:19.692       9.424778  Raw (Good)
    2016-04-12 16:30:20.707      12.566371  Raw (Good)
    2016-04-12 16:30:21.717      15.707963  Raw (Good)
    2016-04-12 16:30:22.732      18.849556  Raw (Good)
    2016-04-12 16:30:23.747      21.991149  Raw (Good)
    2016-04-12 16:30:24.761      25.132741  Raw (Good)
    2016-04-12 16:30:25.776      28.274334  Raw (Good)

Считайте обработанные данные из сервера

Запросите Aggregates свойство Объекта клиента HDA узнать, что составные типы поддержки сервера.

hdaObj.Aggregates
ans = 

OPC HDA Aggregate Types:
          Name         ID                                          Description                                        
    -----------------  --  -------------------------------------------------------------------------------------------
    INTERPOLATIVE      1   Retrieve interpolated values.
    TIMEAVERAGE        4   Retrieve the time weighted average data over the resample interval.
    MINIMUMACTUALTIME  7   Retrieve the minimum value in the resample interval and the timestamp of the minimum value.
    MINIMUM            8   Retrieve the minimum value in the resample interval.
    MAXIMUMACTUALTIME  9   Retrieve the maximum value in the resample interval and the timestamp of the maximum value.
    MAXIMUM            10  Retrieve the maximum value in the resample interval.

Сервер Matrikon поддерживает значение взвешенного среднего времени, таким образом, мы будем использовать тот составной тип на 10 секундах данных в течение прошлой 1 минуты. Отметьте ниже как Aggregates свойство может использоваться, чтобы задать составной тип.

pData = readProcessed(hdaObj,itmIDs,hdaObj.Aggregates.TIMEAVERAGE,10,now-1/24/60,now)'
pData = 

1-by-3 OPC HDA Data object:

            ItemID                Value           Start TimeStamp           End TimeStamp                  Quality           
    -----------------------  ---------------  -----------------------  -----------------------  -----------------------------
    Saw-toothed Waves.Real8  6 double values  2016-04-12 16:29:26.840  2016-04-12 16:30:16.840  1 unique quality [Calculated]
    Random.Real8             6 double values  2016-04-12 16:29:26.840  2016-04-12 16:30:16.840  1 unique quality [Calculated]
    Random.UInt2             6 uint16 values  2016-04-12 16:29:26.840  2016-04-12 16:30:16.840  1 unique quality [Calculated]

Use the showValues method to display all values.

Отобразите значения для Random.Real8 элемент.

itmInd = getIndexFromID(pData,'Random.Real8');
showValues(pData(itmInd))
OPC HDA Data object for item Random.Real8:

           TIMESTAMP             VALUE             QUALITY
    =======================  =============  ======================
    2016-04-12 16:29:26.840    5073.986117  Calculated (Uncertain)
    2016-04-12 16:29:36.840    5073.986074  Calculated (Uncertain)
    2016-04-12 16:29:46.840    5073.986105  Calculated (Uncertain)
    2016-04-12 16:29:56.840    5073.986137  Calculated (Uncertain)
    2016-04-12 16:30:06.840    5073.986227  Calculated (Uncertain)
    2016-04-12 16:30:16.840    7322.794889  Calculated (Uncertain)

Последнее значение имеет качество 'Uncertain' потому что временной интервал не является полными 10 секунды.

Очистка

Когда вы закончите с объектами OPC Toolbox™, удалите их из механизма OPC Toolbox. Несмотря на то, что удаление Объекта клиента HDA автоматически отключает объект от сервера, этот пример явным образом показывает его.

disconnect(hdaObj)
delete(hdaObj)
disconnect(daObjs.opcdemoHDAConfigure);
delete(daObjs.opcdemoHDAConfigure);

Объект клиента теперь недопустим.

isvalid(hdaObj)
ans =

   0