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

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

Примечание

Доступ к данным не поддерживает режим Rapid Accelerator, ссылочные модели, данные с фиксированной точкой или сигналы виртуальной шины и поддерживает только 1-D и 2-D матричные сигналы.

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

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

Примечание

Функция обратного вызова доступа к данным получает невиртуальные данные шины как структуру массивов, которая соответствует иерархии шины.

Создайте функцию обратного вызова в m-файле с таким же именем, как и ваша функция. Для получения дополнительной информации о записи функций 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. Выберите x1 и x2 сигналы. Затем щелкните правой кнопкой мыши выбранные сигналы и выберите 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 модель. Обратный коллбэк генерирует фигуры и 2, чтобы отобразить x1 и x2 сигналы во время симуляции.

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

Похожие темы