exponenta event banner

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

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

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

Примечание

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

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

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

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

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

Несмотря на то, что ваш администратор сети может предоставить список идентификаторов сервера для конкретного хоста, можно запросить хост ко всем доступным Серверам 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 доступ к объекту клиента

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

Используйте функцию opcda, чтобы задать ID Сервера и имя хоста.

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 Data доступ к серверу

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

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

connect(da)

Шаг 4: создайте OPC Data доступ к групповому объекту

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

Самостоятельно, dagroup objects не полезен. Если вы добавляете элементы в группу, можно управлять теми элементами, считать значения из сервера для всех элементов в группе и данные логов для тех элементов, с помощью объекта 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.

Из командной строки можно “просмотреть” пробел имени сервера с помощью функции 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 доступ к элементам группе

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

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

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

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

Добавление большего количества элементов группе

Используйте функцию additem, чтобы добавить элементы в объект dagroup. Необходимо передать объект dagroup, к которому элементы будут добавлены, и полностью определенный ID элемента как вектор символов. Идентификаторы элемента были найдены с помощью функции 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: просмотрите все значения элемента

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

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

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

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

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

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

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

OPC Data доступ к Серверам обеспечивают доступ только, чтобы “жить” данные (последнее известное значение каждого серверного элемента в их пространстве имен). Во многих случаях одно значение сигнала не полезно, и временные ряды, содержащие значение сигналов в течение времени, полезны в анализе того сигнала или набора сигнала. Программное обеспечение 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 моделирует каждый тег. В этом случае очевидно, что 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 обсуждено подробно в, Удаляют Объекты.