Для иллюстрации использования обратных вызовов в этом разделе представлен простой пример создания иерархии объектов OPC Toolbox™ и связывания функции обратного вызова с событием запуска, событием получения записей и событием остановки объекта OPC Data Access Group (dagroup объект). Сведения обо всех обратных вызовах событий, поддерживаемых панелью инструментов, см. в разделе Типы событий.
В примере используется функция обратного вызова по умолчанию, предоставляемая с панелью инструментов. opccallback. Функция обратного вызова по умолчанию отображает имя объекта вместе с информацией о типе произошедшего события и его времени. Сведения о создании собственных функций обратного вызова см. в разделе Создание и выполнение функций обратного вызова.
В этом примере создается иерархия объектов панели инструментов OPC для сервера моделирования Matrikon™. Для запуска этого примера в системе необходимо установить сервер моделирования Matrikon. Можно также заменить значения, используемые при создании объектов, значениями для сервера, к которому можно получить доступ.
da = opcda('localhost','Matrikon.OPC.Simulation.1'); connect(da); grp = addgroup(da,'CallbackTest'); itm = additem(grp,{'Random.Real8','Saw-toothed Waves.UInt2'});
В этом примере мы регистрируем 20 записей с интервалом 0,5 секунды.
grp.RecordsToAcquire = 20; grp.UpdateRate = 0.5;
Задайте значения трех свойств обратного вызова. В примере используется функция обратного вызова по умолчанию opccallback.
grp.StartFcn = @opccallback; grp.StopFcn = @opccallback; grp.RecordsAcquiredFcn = @opccallback;
В этом примере указывается частота генерации события получения записей.
grp.RecordsAcquiredFcnCount = 5;
Запустите dagroup объект. Объект регистрирует 20 с интервалом 0,5 секунды, а затем останавливается. С включенными тремя функциями обратного вызова объект выводит информацию о каждом событии по мере его возникновения. Событие получения записей происходит четыре раза для этого примера.
start(grp)
OPC Start event occurred at local time 18:52:38 Group 'CallbackTest': 0 records acquired. OPC RecordsAcquired event occurred at local time 18:52:41 Group 'CallbackTest': 5 records acquired. OPC RecordsAcquired event occurred at local time 18:52:44 Group 'CallbackTest': 10 records acquired. OPC RecordsAcquired event occurred at local time 18:52:47 Group 'CallbackTest': 15 records acquired. OPC RecordsAcquired event occurred at local time 18:52:49 Group 'CallbackTest': 20 records acquired. OPC Stop event occurred at local time 18:52:49 Group 'CallbackTest': 20 records acquired.
Всегда удаляйте объекты панели инструментов из памяти и переменные, которые ссылаются на них, когда они больше не нужны.
disconnect(da) delete(da) clear da grp itm