exponenta event banner

Доступ к данным в командной строке

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

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

Примечание

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

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

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

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

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

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

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

hostInfo = opcserverinfo('localhost')
hostInfo = 
                 Host: 'localhost'
             ServerID: {1x3 cell}
    ServerDescription: {1x3 cell}
     OPCSpecification: {'DA2' 'DA2' 'DA2'}
    ObjectConstructor: {1x3 cell}

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

allServers = hostInfo.ServerID'
allServers = 
    'Matrikon.OPC.Simulation.1'
    'ICONICS.Simulator.1'
    'Softing.OPCToolboxDemo_ServerDA.1'

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

После определения имени хоста и идентификатора сервера OPC, к которому необходимо подключиться, можно создать opcda клиентский объект. Клиент управляет состоянием соединения с сервером и сохраняет любые события, происходящие с этого сервера (например, уведомление о состоянии изменения данных, которое называется событием изменения данных) в журнале событий. opcda объект клиента также содержит любые объекты группы доступа к данным, созданные на клиенте. Дополнительные сведения об иерархии объектов панели инструментов OPC см. в разделе Иерархия объектов панели инструментов для стандарта доступа к данным.

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

da = opcda('localhost','Matrikon.OPC.Simulation.1')
da =
   OPC Data Access Object: localhost/Matrikon.OPC.Simulation.1
      Server Parameters
         Host:           localhost
         ServerID:       Matrikon.OPC.Simulation.1
         Status:         disconnected
      Object Parameters
         Group:          0-by-1 dagroup object

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

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

Объекты клиента доступа к данным OPC не подключаются к серверу автоматически при их создании. Это позволяет полностью настроить иерархию объектов OPC Toolbox (клиента с группами и элементами) перед подключением к серверу или даже без присутствия сервера.

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

connect(da)

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

Создаются объекты группы доступа к данным (dagroup объекты), чтобы управлять и содержать коллекцию объектов элемента доступа к данным (daitem объекты). A dagroup объект управляет тем, как часто сервер должен уведомлять вас о любых изменениях в значениях элементов, управляет состоянием активации элементов в этой группе, а также определяет, запускает и останавливает задачи ведения журнала.

Сами по себе, dagroup объектs не полезны. После добавления элементов в группу можно управлять этими элементами, считывать значения с сервера для всех элементов в группе и регистрировать данные для этих элементов с помощью dagroup объект. На шаге 5 выполняется поиск доступных тегов на сервере OPC. Шаг 6 включает добавление элементов, связанных с этими тегами, в dagroup объект.

Используйте addgroup функция для создания dagroup объектов из командной строки. В этом примере группа добавляется к opcda объект клиента уже создан.

grp = addgroup(da)
grp =
   OPC Group Object: Group0
      Object Parameters
         GroupType:        private
         Item:             0-by-1 daitem object
         Parent:           localhost/Matrikon.OPC.Simulation.1
         UpdateRate:       0.5
         DeadbandPercent:  0
      Object Status
         Active:           on
         Subscription:     on
         Logging:          off
         LoggingMode:      memory

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

Шаг 5: Обзор пространства имен серверов

Все серверы OPC обеспечивают доступ к элементам сервера через пространство имен серверов. Пространство имен представляет собой упорядоченный список элементов сервера, обычно упорядоченный в иерархическом формате для облегчения доступа. Элемент сервера (также известный как тег) - это точка измерения или точка данных на сервере, предоставляющая информацию от устройства (например, датчика давления) или от другого программного пакета, который предоставляет данные через OPC Data Access (например, пакет SCADA).

Примечание

Если вы знаете идентификаторы интересующих вас элементов сервера, вы можете пропустить этот раздел и перейти непосредственно к шагу 6 Добавление элементов доступа к данным OPC в группу. В этом примере предположим, что не известны точные идентификаторы элементов, хотя известно, что требуется регистрировать информацию о пилообразных волнах и треугольных волнах, предоставляемых сервером моделирования Matrikon.

В командной строке можно «просмотреть» пространство имен сервера с помощью serveritems функция. Необходимо поставить подключенный opcda клиентский объект для serveritems и необязательный аргумент символьного вектора для ограничения возвращаемых результатов. Вектор символов может содержать подстановочные символы (*). Пример использования serveritems является следующим.

sawtoothItems = serveritems(da,'*Saw*')
sawtoothItems = 
    'Saw-toothed Waves.'
    'Saw-toothed Waves.Int1'
    'Saw-toothed Waves.Int2'
    'Saw-toothed Waves.Int4'
    'Saw-toothed Waves.Money'
    'Saw-toothed Waves.Real4'
    'Saw-toothed Waves.Real8'
    'Saw-toothed Waves.UInt1'
    'Saw-toothed Waves.UInt2'
    'Saw-toothed Waves.UInt4'

Команда для получения свойств элемента сервера: serveritemprops. См. раздел serveritemprops справочная страница для получения подробной информации.

Шаг 6. Добавление элементов доступа к данным OPC в группу

Теперь, когда элементы сервера найдены в пространстве имен, можно добавить объекты элемента доступа к данным (daitem ) для этих тегов в dagroup объект, созданный на шаге 4. A daitem объект - это ссылка на тег в пространстве имен, предоставляющая значение тега и дополнительную информацию об этом элементе, например, канонический тип данных.

Чтение значения с сервера

A daitem первоначально объект не содержит сведений о представляемом им элементе сервера. daitem объект обновляется только тогда, когда сервер уведомляет клиента об изменении статуса этого элемента (уведомление называется событием изменения данных) или клиент специально считывает значение с сервера.

Каждый раз при чтении или получении данных с сервера с помощью события изменения данных сервер предоставляет обновленные значения значений «Значение», «Качество» и «Метка времени».

Добавление дополнительных элементов в группу

Используйте additem добавление элементов в dagroup объект. Вам нужно пройти dagroup объект, к которому будут добавлены элементы, и полный код элемента в качестве символьного вектора. Идентификаторы элементов были найдены с помощью serveritems функция на шаге 5.

itm1 = additem(grp,'Saw-toothed Waves.Real8')
itm1 =
   OPC Item Object: Saw-toothed Waves.Real8
      Object Parameters
         Parent:           Group0
         AccessRights:     read/write
         DataType:         double
      Object Status
         Active:           on
      Data:
         Value:   
         Quality: 
         Timestamp:

В одну группу можно добавить несколько элементов additem вызов, путем указания нескольких ItemID значения в массиве ячеек.

itms = additem(grp,{'Triangle Waves.Real8', ...
                    'Triangle Waves.UInt2'})
itms =
   OPC Item Object Array:
   Index:  DataType:  Active:  ItemID:
   1       double     on       Triangle Waves.Real8
   2       uint16     on       Triangle Waves.UInt2

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

Шаг 7: Просмотр всех значений позиций

Объект group позволяет считывать и записывать значения из всех элементов группы и записывать данные в память и/или на диск.

Значения значений Value, Quality и Timestamp элементов постоянно обновляются, пока включена подписка. Подписка управляет отправкой событий изменения данных сервером OPC на панель инструментов для элементов, значения которых изменяются. UpdateRate и DeadbandPercent определите, как часто элементы должны запрашиваться для получения нового значения, и должны ли все изменения значения или только изменения заданной величины отправляться на панель инструментов. Дополнительные сведения о подписке см. в разделе События изменения данных и подписка.

Наблюдая за данными в течение некоторого времени, вы увидите, что три сигнала, по-видимому, имеют одинаковые диапазоны. Это означает, что можно визуализировать данные по тем же осям при построении графика на шаге 10.

На шаге 9 вы сконфигурируете задачу ведения журнала и данные журнала для трех элементов.

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

Шаг 8: Настройка свойств группы для ведения журнала

Теперь, когда ваш dagroup содержит элементы, используйте группу для управления взаимодействием этих элементов с сервером. На этом шаге настройте группу для регистрации данных из этих элементов в течение 2 минут с интервалом в 0 2 секунды. Зарегистрированные данные можно использовать на шаге 9 для визуализации сигналов, генерируемых сервером моделирования Matrikon.

Серверы доступа к данным OPC предоставляют доступ только к «живым» данным (последнее известное значение каждого элемента сервера в их пространстве имен). Во многих случаях одно значение сигнала не является полезным, и временной ряд, содержащий значение сигнала в течение некоторого периода времени, полезен для анализа этого сигнала или набора сигналов. Программное обеспечение OPC Toolbox™ позволяет регистрировать все элементы в группе на диске или в памяти и извлекать эти данные для анализа в MATLAB ®.

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

Используйте set для установки свойств объекта OPC Toolbox. В командной строке можно вычислить количество записей, необходимых для задачи ведения журнала.

logDuration = 2*60;
logRate = 0.2;
numRecords = ceil(logDuration./logRate);
grp.UpdateRate = logRate;
grp.RecordsToAcquire = numRecords;

Шаг 9: Регистрация данных сервера OPC

Теперь, когда вы настроили dagroup свойства ведения журнала объекта, объект может записывать необходимый объем данных в память.

Используйте start функция с требуемой dagroup для запуска задачи ведения журнала.

start(grp)

Задача ведения журнала выполняется в фоновом режиме. Можно продолжить работу в MATLAB во время выполнения задачи ведения журнала. На задачу ведения журнала не влияют другие вычисления, происходящие в MATLAB, и обработка MATLAB не блокируется задачей ведения журнала. Можно дать команду MATLAB дождаться завершения задачи регистрации, используя wait функция.

wait(grp)

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

После завершения регистрации передайте данные из механизма панели инструментов в рабочую область MATLAB с помощью getdata функция, которая обеспечивает два типа вывода, в зависимости от ее 'datatype' аргумент. Для получения более подробной информации см. getdata справочная страница. В этом случае данные извлекаются в отдельные массивы и выводятся на график.

В этом примере создается рисунок:

[logIDs, logVal, logQual, logTime, logEvtTime] = ...
    getdata(grp,'double');
plot(logTime,logVal)
axis tight
datetick('x','keeplimits')
legend(logIDs)

Обратите внимание, как три сигнала кажутся почти полностью не связанными, за исключением периода двух Real8 сигналы. Пиковые значения для каждого сигнала различны, как и периоды для двух сигналов. Triangle Waves сигналы. Визуализация данных позволяет получить некоторое представление о том, как сервер моделирования OPC Matrikon моделирует каждый тег. В этом случае очевидно, что Real8 и UInt2 сигналы имеют другой период.

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

После завершения задачи OPC следует удалить объекты задачи из памяти и очистить рабочую область MATLAB от переменных, связанных с этими объектами.

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

disconnect(da)
delete(da)
clear da grp itm
close(gcf)

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