Доступ к данным в функции MATLAB во время симуляции

Можно передать данные сигнала потоком к функции обратного вызова MATLAB® во время симуляции с помощью функциональности Data Access в Instrumentation Properties для сигнала. Функция, которую вы обеспечиваете, получает данные в пакетах асинхронно в течение симуляции. Функция обратного вызова выполняется каждый раз, когда она получает новые данные. Можно записать функцию обратного вызова, чтобы обработать данные сигнала во время симуляции или создать пользовательскую визуализацию сигнала. Функция обратного вызова не влияет на значения сигналов в вашей модели. Доступ к данным не поддерживает Быстрый Режим Accelerator или строку, фиксированную точку, или соединяет шиной сигналы и только поддерживает 1D и 2D матричные сигналы. Этот пример иллюстрирует шаги, требуемые получить доступ к данным сигнала во время симуляции с помощью простой функции обратного вызова, которая строит сигнал.

Запишите функцию обратного вызова для доступа к данным

Функция обратного вызова доступа к данным всегда получает данные сигнала в качестве первого аргумента. Можно принять решение отправить время симуляции и параметр. Когда вы включаете все три аргумента, время симуляции является вторым аргументом. Ваша функция обратного вызова может быть характерна для одного сигнала, или можно использовать тот же коллбэк, чтобы обработать и визуализировать несколько сигналов. Функция обратного вызова только имеет доступ к данным для одного сигнала за один раз. Этот пример создает функцию обратного вызова, которая получает данные сигнала, время, и параметр раньше идентифицировал, какой сигнал функция обрабатывает для данного вызова.

Создайте свою функцию обратного вызова в m-файле с тем же именем как ваша функция. Для получения дополнительной информации о записи функций MATLAB, смотрите, Создают Функции в Файлах (MATLAB). Функция обратного вызова в качестве примера использует дополнительный параметр, чтобы присвоить числовой идентификатор каждому сигналу. Параметр используется, чтобы создать уникальную фигуру для каждого сигнала и присвоить каждый сигнал различный цвет линии. Чтобы накопить данные сигнала на графике, коллбэк включает hold on. Для каждого вызова коллбэка функция получает фрагмент данных сигнала. Можно использовать коллбэк, чтобы накопить пакеты при желании.

function plotSignals(y,time,sigNum)
   
    figure(sigNum)
    
    if isequal(sigNum,1)
        marker = 'ro-';
    elseif isequal(sigNum,2)
        marker = 'go-';
    else
        marker = 'bo-';
    end
    
    hold on;
    plot(time,y,marker);

end

Функция обратного вызова не обеспечивает возвращаемых значений. Если вы задаете функцию с возвратами, данные о возврате отбрасываются.

Совет

Используйте assignin, чтобы получить доступ к данным из функции обратного вызова в базовом рабочем пространстве.

Сохраните функцию обратного вызова в месте на пути MATLAB. Если местоположение, где вы сохраняете коллбэк, не находится на пути, можно добавить его в путь. Щелкните правой кнопкой по директории, содержащей коллбэк в разделе Current Folder в MATLAB, и выберите Add to Path.

Сконфигурируйте сигналы для доступа к данным

К данным о доступе для сигнала с коллбэком доступа к данным необходимо регистрировать сигнал. Чтобы отметить сигнал для журналирования, щелкните правой кнопкой по сигналу по своей модели и выберите Log Selected Signals. Чтобы сконфигурировать доступ к данным для сигнала, щелкните правой кнопкой по значку журналирования и выберите Properties. На вкладке Data Access Instrumentation Properties можно задать имя функции обратного вызова, занимает ли функция обратного вызова время в качестве аргумента и дополнительного значения параметров.

Например, откройте модель vdp и сконфигурируйте x1 и сигналы x2 использовать коллбэк от предыдущего раздела.

  1. Введите vdp в Command Window MATLAB.

  2. Выберите сигналы x2 и x1. Затем щелкните правой кнопкой по выбранным сигналам и выберите Log Selected Signals из контекстного меню.

  3. Чтобы открыть Instrumentation Properties, щелкните правой кнопкой по значку журналирования для x1 и выберите Properties.

  4. На панели Data Access введите имя коллбэка, проверяйте Include simulation time и введите 1 как Function parameter.

  5. Откройте Instrumentation Properties для x2 и сконфигурируйте панель Data Access, чтобы использовать коллбэк plotSignals со значением Function parameter 2.

Моделируйте модель vdp. Коллбэк генерирует рисунки 1 и 2, чтобы отобразить x1 и сигналы x2 во время симуляции.

Можно изменить функцию обратного вызова, чтобы создать пользовательскую визуализацию или создать график обработанных данных сигнала. Ошибки, связанные с функцией обратного вызова доступа к данным, не прерывают симуляцию. Ошибки появляются в Diagnostic Viewer как предупреждение.

Похожие темы