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

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

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

Примечание

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

Шаг 1: Найдите свой сервер Доступ

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

Первой информацией является имя хоста серверного компьютера. Имя хоста (описательное имя типа "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 Data

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

Используйте 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 Toolbox.

Шаг 3: Подключение к серверу Доступ

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

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

connect(da)

Шаг 4: Создайте Доступ данных OPC Группового объекта

Вы создаете объекты группы доступа к данным (dagroup объекты) для управления и хранения набора объектов Data Access Item (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 Доступы (такого как пакет SCADA).

Примечание

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

Из командной строки можно «просмотреть» пространство имен серверов, используя 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 Data в группу

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

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

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

Каждый раз, когда вы считываете или получаете данные от сервера через событие изменения данных, сервер предоставляет вам обновленные значения Value, Quality и Timestamp.

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

Используйте 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: Просмотреть все значения элемента

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

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

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

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

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

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

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

OPC Data Access Servers обеспечивают доступ только к «живым» данным (последнему известному значению каждого серверного элемента в пространстве имен). Во многих случаях одно значение сигнала не полезно, и временные ряды, содержащий значение сигналов в течение периода времени, полезны при анализе этого сигнала или набора сигналов. Программное обеспечение 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 сигналы. Визуализируя данные, можно получить некоторое представление о том, как Matrikon OPC Simulation Server моделирует каждый тег. В этом случае очевидно, что 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 Toolbox подробно рассмотрено в разделе «Удаление объектов».