В этом примере показано, как использовать OPC Toolbox™ синхронных операций чтения и записи для обмена данными с сервером OPC.
ПРЕДВАРИТЕЛЬНЫЕ УСЛОВИЯ:
Создание opcda и подключите этот клиент к серверу OPC.
da = opcda('localhost','Matrikon.OPC.Simulation.1'); connect(da);
Добавьте группу к клиенту и элемент к группе.
grp = addgroup(da);
itm1 = additem(grp,'Random.Real8');
Операция чтения по умолчанию получает значения из кэша сервера.
r = read(itm1)
r =
struct with fields:
ItemID: 'Random.Real8'
Value: 0
Quality: 'Bad: Out of Service'
TimeStamp: [2016 8 30 11 55 24.4130]
Error: ''
Чтобы заставить сервер считывать значение с устройства, укажите этот параметр. Этот процесс может занять некоторое время, если сервер OPC находится в сети или устройству требуется некоторое время для получения значения.
r = read(itm1,'device')
r =
struct with fields:
ItemID: 'Random.Real8'
Value: 20.8848
Quality: 'Good: Non-specific'
TimeStamp: [2016 8 30 11 55 24.7220]
Error: ''
Добавление элемента, доступного для записи, в группу.
itm2 = additem(grp,'Bucket Brigade.Real8')
itm2 =
Summary of OPC Data Access Item Object: Bucket Brigade.Real8
Object Parameters
Parent : Group0
Access Rights : read/write
Object Status
Active : on
Data Parameters
Data Type : double
Value :
Quality : Bad: Out of Service
Timestamp :
Запишите значение 10 в элемент.
write(itm2,10)
Прочитайте значение обратно в MATLAB.
r = read(itm2,'device')
r =
struct with fields:
ItemID: 'Bucket Brigade.Real8'
Value: 10
Quality: 'Good: Non-specific'
TimeStamp: [2016 8 30 11 55 24.8520]
Error: ''
С помощью объекта группы можно считывать данные из нескольких элементов.
r = read(grp)
r =
2×1 struct array with fields:
ItemID
Value
Quality
TimeStamp
Error
Отображение информации об отдельных элементах путем индексирования.
r(1)
ans =
struct with fields:
ItemID: 'Random.Real8'
Value: 20.8848
Quality: 'Good: Non-specific'
TimeStamp: [2016 8 30 11 55 24.7220]
Error: ''
Извлеките несколько значений из элемента.
itmIDs = {r.ItemID}
vals = [r.Value]
itmIDs =
1×2 cell array
'Random.Real8' 'Bucket Brigade.Real8'
vals =
20.8848 10.0000
Запись в несколько элементов, передача значений элементов в группе в виде массива ячеек.
write(grp,{1.234,5.432})
Warning: One or more items could not be written. Random.Real8 returned 'The item's access rights do not allow the operation.'
Предыдущая команда возвращает предупреждение, поскольку первый элемент не позволяет записать в него данные. Однако второй имеет записанное значение 5.432. Вы можете убедиться, что читаете его.
r = read(itm2,'device')
r =
struct with fields:
ItemID: 'Bucket Brigade.Real8'
Value: 5.4320
Quality: 'Good: Non-specific'
TimeStamp: [2016 8 30 11 55 24.9070]
Error: ''
Отключитесь от сервера и удалите объект клиента.
disconnect(da) delete(da)
При удалении объекта клиента автоматически удаляются объекты группы и элемента.