Этот раздел иллюстрирует основные шаги, чтобы создать приложение Historical Data Access (HDA) OPC Toolbox™, восстанавливая исторические данные из Волны Треугольника и Пилообразных сигналов Волны, обеспеченных Сервером Моделирования Matrikon™ OPC.
Примечание
Для выполнения примера кода в следующих шагах требуется сервер моделирования Matrikon OPC на локальном компьютере. Дополнительные сведения об установке см. в разделе Установка сервера моделирования OPC DA или HDA для классических примеров 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'
После определения имени хоста и идентификатора сервера 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.
Объекты клиента доступа к историческим данным OPC не подключаются к серверу автоматически при их создании.
Используйте connect для подключения объекта клиента OPC HDA к серверу в командной строке.
connect(hdaClient)
После подключения к серверу 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
Этот код используется для создания рисунка печати:
plot(data) axis tight datetick('x','keeplimits') legend(data.ItemID)
После использования объектов OPC Toolbox в командной строке MATLAB ® или из собственных функций их необходимо удалить из механизма OPC Toolbox с помощью delete функция. Обратите внимание, что при удалении объекта панели инструментов дочерние элементы этого объекта автоматически удаляются из механизма панели инструментов.
disconnect(hda) delete(hdaClient) clear hdaClient data
Подробные сведения об управлении объектами панели инструментов OPC рассматриваются в разделе Удаление объектов.