Этот раздел иллюстрирует основные шаги для создания приложения OPC Toolbox™ Historical Data Access (HDA) путем извлечения исторических данных из сигналов треугольной волны и пилозубой волны, предоставленных Matrikon™ OPC Simulation Server.
Примечание
Чтобы запустить пример кода в следующих шагах, вам нужен Matrikon OPC Simulation Server на локальной машине. Для получения дополнительной информации об установке см. раздел Установка OPC DA или HDA Simulation Server для OPC Classic Examples. Код требует лишь незначительных изменений для работы с другими серверами.
На этом шаге вы получаете две части информации, которую тулбокс должен уникально идентифицировать сервер Исторические Данные 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'
После определения имени хоста и идентификатора сервера 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.
Объекты клиента исторического доступа к историческим данным 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 Toolbox обсуждается в разделе «Удаление объектов».