Этот пример показывает вам, как использовать 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)
Удаление объекта клиента автоматически удаляет объекты элемента и группа.