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

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

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

Примечание

Чтобы запустить пример кода в следующих шагах, вам нужен Matrikon OPC Simulation Server на локальной машине. Для получения дополнительной информации об установке см. раздел Установка OPC DA или HDA Simulation Server для OPC Classic Examples. Код требует лишь незначительных изменений для работы с другими серверами.

Шаг 1: Найдите свой сервер исторического доступа к историческим данным OPC

На этом шаге вы получаете две части информации, которую тулбокс должен уникально идентифицировать сервер Исторические Данные Access, к которому вы хотите подключиться. Эта информация используется при создании объекта клиента доступа к историческим данным 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 Server обсуждает, как запросить хосты из командной строки.

Используйте 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 функция, задающая имя узла и аргументы Server ID.

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 Toolbox обсуждается в разделе «Удаление объектов».