exponenta event banner

Доступ к историческим данным

Обзор программирования HDA

Этот раздел иллюстрирует основные шаги, чтобы создать приложение Historical Data Access (HDA) OPC Toolbox™, восстанавливая исторические данные из Волны Треугольника и Пилообразных сигналов Волны, обеспеченных Сервером Моделирования Matrikon™ OPC.

Примечание

Для выполнения примера кода в следующих шагах требуется сервер моделирования Matrikon OPC на локальном компьютере. Дополнительные сведения об установке см. в разделе Установка сервера моделирования OPC DA или HDA для классических примеров OPC. Код требует только незначительных изменений для работы с другими серверами.

Шаг 1. Поиск сервера доступа к данным OPC за прошлые периоды

На этом шаге можно получить две части информации, необходимой панели инструментов для однозначной идентификации сервера доступа к историческим данным OPC, к которому требуется подключиться. Эта информация используется при создании клиентского объекта доступа к историческим данным OPC (HDA), описанного в шаге 2 Создание клиентского объекта доступа к историческим данным OPC.

Первая информация - имя хоста компьютера сервера. Имя узла (описательное имя типа "HistorianServer"или IP-адрес, такой как 192.168.16.32) определяет этот компьютер в сети и используется протоколами OPC для определения доступных серверов OPC на этом компьютере. В любом приложении OPC Toolbox™ необходимо знать имя хоста сервера OPC, чтобы можно было установить соединение с этим хостом. Администратор сети может предоставить список имен узлов, предоставляющих серверы OPC в сети. В этом примере будет использоваться localhost в качестве имени узла, поскольку вы будете подключаться к серверу OPC на том же компьютере, что и клиент.

Вторая информация - идентификатор сервера OPC. Каждый сервер OPC на определенном хосте идентифицируется по уникальному идентификатору сервера (также называемому идентификатором программы или ProgID), который назначается этому серверу при установке. Идентификатор сервера - это символьный вектор, обычно содержащий точки.

Хотя администратор сети может предоставить список идентификаторов серверов для определенного хоста, можно запросить у хоста все доступные OPC-серверы. Discover Available HDA Servers (Обнаружение доступных серверов HDA) описывает, как запрашивать хосты из командной строки.

Используйте opchdaserverinfo для запроса из командной строки.

hostInfo = opchdaserverinfo('localhost')
hostInfo = 
             1x4 OPC HDA ServerInfo array:
index    Host                 ServerID          HDASpecification              Description                   
-----  ---------  ---------------------------------  -----  ------------------------------------------------
  1    localhost  Advosol.HDA.Test.3                 HDA1         Advosol HDA Test Server V3.0
  2    localhost  IntegrationObjects.OPCSimulator.1  HDA1         Integration Objects OPC DA DX HDA Simulator 2
  3    localhost  IntegrationObjects.OPCSimulator.1  HDA1         Integration Objects' OPC DA/HDA Server Simulator
  4    localhost  Matrikon.OPC.Simulation.1          HDA1         MatrikonOPC Server for Simulation and Testing

Более подробное изучение возвращенной структуры предоставляет идентификаторы серверов каждого сервера OPC.

allServers = {hostInfo.ServerID}
allServers =
Columns 1 through 3
	'Advosol.HDA.Test.3'  'IntegrationObjects.OPCSimulator.1'  'IntegrationObjects.OPCSimulator.1'
Column 4
	'Matrikon.OPC.Simulation.1'

Шаг 2: Создание объекта клиента доступа к историческим данным OPC

После определения имени хоста и идентификатора сервера OPC-сервера для подключения создайте объект клиента OPC HDA. Клиент управляет состоянием подключения к серверу и сохраняет события, происходящие с этого сервера.

Используйте opchda , указывая имя хоста и аргументы идентификатора сервера.

hdaClient = opchda('localhost','Matrikon.OPC.Simulation.1')
hdaClient =
OPC HDA Client localhost/Matrikon.OPC.Simulation.1:
          Host: localhost
      ServerID: Matrikon.OPC.Simulation.1
       Timeout: 10 seconds

        Status: disconnected

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

Дополнительные сведения о создании клиентов см. в разделе Создание объекта клиента OPC HDA.

Шаг 3. Подключение к серверу доступа к историческим данным OPC

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

Используйте connect для подключения объекта клиента OPC HDA к серверу в командной строке.

connect(hdaClient)

Шаг 4: Получение исторических данных

Создание исторических данных

После подключения к серверу HDA можно считывать исторические значения данных для Saw-toothed Waves.Real8 и Triangle Waves.Real8 элементы. Сервер моделирования Matrikon хранит данные только для элементов, которые были активированы и считаны клиентом OPC Data Access. Поэтому выполните этот код для создания и автоматического хранения данных в архиве.

Введите в командной строке следующее:

da = opcda('localhost','Matrikon.OPC.Simulation.1');
connect(da);
grp = addgroup(da);
additem(grp,'Saw-toothed Waves.Real8');
additem(grp,'Triangle Waves.Real8');
logDuration = 2*60;
logRate = 0.2;
numRecords = ceil(logDuration./logRate);
grp.UpdateRate = logRate;
grp.RecordsToAcquire = numRecords;
start(grp)
wait(grp)

Считывание значения с сервера доступа к историческим данным

Для считывания исторических значений с сервера HDA для определенного временного диапазона используйте readRaw функция. Эта функция принимает список позиций, а также время начала и окончания (разграничение промежутка времени), для которых требуются исторические данные.

data = hdaClient.readRaw({'Saw-toothed Waves.Real8','Triangle Waves.Real8'},now-100000,now)
data = 
1-by-2 OPC HDA Data object:
        ItemID                 Value            Start TimeStamp           End TimeStamp              Quality        
-----------------------  -----------------  -----------------------  -----------------------  ----------------------
Saw-toothed Waves.Real8  200 double values  2010-11-02 12:22:32.981  2010-11-02 12:23:13.363  1 unique quality [Raw]
Triangle Waves.Real8     199 double values  2010-11-02 12:22:33.141  2010-11-02 12:23:13.293  1 unique quality [Raw]

	

Извлеченные исторические данные содержат значение, временную метку и качество для каждой точки данных. Чтобы просмотреть эти элементы из предыдущего примера, используйте следующие инструкции.

data.Value
data.TimeStamp
data.Quality	

Шаг 5: Постройте график данных

Этот код используется для создания рисунка печати:

plot(data)
axis tight
datetick('x','keeplimits')
legend(data.ItemID)

Шаг 6: Очистка

После использования объектов OPC Toolbox в командной строке MATLAB ® или из собственных функций их необходимо удалить из механизма OPC Toolbox с помощью delete функция. Обратите внимание, что при удалении объекта панели инструментов дочерние элементы этого объекта автоматически удаляются из механизма панели инструментов.

disconnect(hda)
delete(hdaClient)
clear hdaClient data

Подробные сведения об управлении объектами панели инструментов OPC рассматриваются в разделе Удаление объектов.