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