Этот раздел иллюстрирует основные шаги, чтобы создать приложение Доступа к данным OPC Toolbox™ путем визуализации Треугольных и Пилообразных сигналов Волны Волны, обеспеченных Сервером Симуляции Matrikon™ OPC. Данные о журналах приложения к памяти и отображают те данные на графике, подсвечивая точки неопределенных или неправильных данных. Путем визуализации данных можно более ясно видеть отношения между сигналами.
Примечание
Чтобы запустить пример кода в следующих шагах, вам нужен Сервер Симуляции Matrikon OPC на вашей локальной машине. Для получения дополнительной информации установки смотрите Установку DA OPC или Сервер Симуляции HDA для Классических примеров OPC. Код требует только, чтобы незначительные изменения работали с другими серверами.
На этом шаге вы получаете два данные, что тулбокс должен однозначно определить 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'
После определения имени хоста и 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.
Доступ к OPC Data к Объектам клиента автоматически не соединяется с сервером, когда они создаются. Это позволяет вам полностью конфигурировать иерархию объектов OPC Toolbox (клиент с группами и элементами) прежде, чем связать с сервером, или без сервера, даже присутствующего.
Используйте connect
функционируйте, чтобы соединить opcda
объект клиента к серверу в командной строке.
connect(da)
Вы создаете Групповые объекты Доступа к данным (dagroup
объекты), чтобы управлять и содержать набор объектов Элемента Доступа к данным (daitem
объекты. dagroup
возразите средствам управления, как часто сервер должен уведомить вас относительно любых изменений в значениях элемента, управляет состоянием активации элементов в той группе, и задает, запускает и прекращает регистрировать задачи.
Самостоятельно, dagroup
объекты
не полезны. Если вы добавляете элементы в группу, можно управлять теми элементами, считать значения из сервера для всех элементов в группе и данные логов для тех элементов, с помощью 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
Смотрите Создают Групповые объекты Доступа к данным для получения дополнительной информации о создании групповых объектов из командной строки.
Все Серверы 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
страница с описанием для деталей.
Теперь, когда вы нашли серверные элементы в пространстве имен, можно добавить объекты Элемента Доступа к данным (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
Для получения дополнительной информации на добавляющих элементах группам, смотрите, Создают Объекты Элемента Доступа к данным.
Групповой объект позволяет вам считать и записать значения из всех элементов в группе и данные логов к памяти и/или диску.
Значение, Качество и значения Метки времени элементов постоянно обновляются, пока вам включили Подписку. Подписка управляет, отправляются ли события изменения данных Сервером OPC в тулбокс для элементов, значения которых изменяются. UpdateRate
и DeadbandPercent
задайте, как часто элементы должны быть запрошены для нового значения, и изменяется ли все значение, или только изменения заданной величины отправляются в тулбокс. Для получения дополнительной информации по Подписке, смотрите События Изменения Данных и Подписку.
Путем наблюдения данных некоторое время, вы будете видеть, что три сигнала, кажется, имеют подобные области значений. Это указывает, что можно визуализировать данные в тех же осях, когда вы строите их на Шаге 10.
На Шаге 9 вы сконфигурируете задачу логгирования и данные логов для этих трех элементов.
Используйте read
функция с групповым объектом как первый параметр, который считает значения из всех элементов в группе. read
функция обсуждена подробно в Риде и записи данных.
Теперь, когда ваш 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;
Теперь, когда вы сконфигурировали dagroup
свойства логгирования объекта, ваш объект может регистрировать необходимое количество данных к памяти.
Используйте start
функция с необходимым dagroup
возразите, чтобы запустить задачу логгирования.
start(grp)
Задача логгирования происходит в фоновом режиме. Можно продолжить работать в MATLAB, в то время как задача логгирования в действии. Задача логгирования незатронута другими расчетами, происходящими в MATLAB, и обработка MATLAB не блокируется задачей логгирования. Можно дать MATLAB команду ожидать задачи логгирования завершиться, с помощью wait
функция.
wait(grp)
После логгирования концов передайте данные от механизма тулбокса до рабочего пространства 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
сигналы имеют различный период.
После окончания задачи OPC необходимо удалить объекты задачи из памяти и очистить рабочее пространство MATLAB переменных, сопоставленных с этими объектами.
При использовании объектов OPC Toolbox в командной строке MATLAB или от ваших собственных функций, необходимо удалить их из механизма OPC Toolbox с помощью delete
функция. Обратите внимание на то, что, когда вы удаляете объект тулбокса, дочерние элементы того объекта автоматически удалены из механизма тулбокса. В этом примере нет никакой потребности удалить grp
и itm
, когда они - дочерние элементы da
.
disconnect(da) delete(da) clear da grp itm close(gcf)
Управление объектами OPC Toolbox обсуждено подробно в, Удаляют Объекты.