Регистрируйте данные сигнала с блоком выходного порта и языком MATLAB

Чтобы использовать язык MATLAB® для журналирования сигнала, добавьте блок Outport в свою модель Simulink®. Активируйте журналирование при помощи команд MATLAB.

Чтобы получить доступ к журналу данных, который создает приложение реального времени, когда это работает на целевом компьютере, используйте Real-Time Application Properties.

Пример начинается с модели ex_slrt_rt_osc (open_system(docpath(fullfile(docroot, 'toolbox', 'xpc', 'examples', 'ex_slrt_rt_osc')))). Финалом сконфигурированная модель является ex_slrt_outport_osc (open_system(docpath(fullfile(docroot, 'toolbox', 'xpc', 'examples', 'ex_slrt_outport_osc')))):

Регистрируемые выходные параметры являются сигналами, соединенными с блоками Выходного порта Simulink. Модель имеет один блок Outport с индексом 1. Этот блок Outport показывает, что сигналы, оставляя блок маркировали Mux.

Журналы данных со свойствами SimulinkRealTime.target

Simulink Real-Time™ хранит записанные данные в четырех журналах данных, к которым можно получить доступ на компьютере разработчика при помощи Real-Time Application Properties. В следующем списке tg является именем объекта SimulinkRealTime.target, который вы используете, чтобы связаться с целевым компьютером.

  • tg.TimeLog — Время или T-вектор, заданный как вектор дважды. Чтобы включить, установите параметр модели SaveTime.

  • tg.OutputLog — Выведите или Y-вектор, заданный как матрица. Чтобы включить, установите параметр модели SaveOutput.

  • tg.TETLog — Вектор времени выполнения задачи, заданный как вектор дважды. Чтобы включить, установите параметр модели RL32LogTETModifier.

  • tg.StateLog — Состояние или X-вектор, заданный как матрица. Чтобы включить, установите параметр модели SaveState.

Примечание

tg.TimeLog, tg.OutputLog, tg.TeTLog и свойства tg.StateLog будут удалены в будущем релизе.

Включите журналирование только для данных, которыми вы интересуетесь.

Каждый блок Outport имеет связанный вектор-столбец в tg.OutputLog. Можно получить доступ к данным, которые соответствуют конкретному блоку Outport путем определения вектор-столбца для того блока. Например, чтобы получить доступ к данным, которые соответствуют Outport 2, используйте tg.outputlog(:,2).

Чтобы загрузить часть журналов, используйте метод целевого объекта getlog.

Примечание

  • Переменные tout регистрации данных, xout, yout и logsout доступны только, когда вы используете Simulink, чтобы моделировать модель в нев реальном времени.

  • Вы не можете использовать Инспектора Данных моделирования, чтобы создать вход в систему данных целевой компьютер. Можно регистрировать только сигналы, которые соединяются с блоком Outport.

Журналы данных с профилировщиком инспектора и данных о данных моделирования

tg.TimeLog, tg.OutputLog, tg.TeTLog и свойства tg.StateLog будут удалены в будущем релизе. Рассмотрите эти заменяющие подходы.

При использовании...

Замените на...

tg.TimeLog, tg.OutputLog или tg.StateLog

Доступ к объекту Simulink.sdi.Run для выполнения, созданного путем журналирования сигналов интереса для Инспектора Данных моделирования. От объекта Simulink.sdi.Run можно получить объекты Simulink.sdi.Signal, которые можно использовать, чтобы просмотреть данные. Например:

run = Simulink.sdi.getRun(runID);
% Get signal objects for the signals in the run
signal1 = fuelRun.getSignalByIndex(4);
signal2 = fuelRun.getSignalByIndex(9);

tg.TETLog

Отчет Профилирования Выполнения кода. Setup профилировщик и затем использует:

profiler_object = getProfilerData(tg);

Для примера смотрите Регистрацию данных С Инспектором данных моделирования (SDI).

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

  1. Открытая модель ex_slrt_rt_osc.

    mdl = 'ex_slrt_rt_osc';
    open_system(mdl);
  2. Проверяйте, что данные сигнала и время выполнения задачи регистрируются.

    get_param(mdl,'SaveTime')
    
    ans =
    
    on
    get_param(mdl,'SaveOutput')
    
    ans =
    
    on
    get_param(mdl,'RL32LogTETModifier')
    ans =
    
    on

    Эти параметры устанавливаются на 'on' по умолчанию.

  3. Проверяйте, что Signal logging buffer size in doubles установлен в значение, достаточно большое, чтобы разместить количество сигналов, что вы регистрируете.

    get_param(mdl,'RL32LogBufSizeModifier')
    ans =
    
    100000

    Значение по умолчанию 100 000 модулей является достаточно большим для этой модели.

  4. Сохраните модель под новым именем.

    save_system(mdl,'ex_slrt_outport_osc');

Регистрируйте данные

  1. Создайте приложение реального времени.

    rtwbuild(mdl);
  2. Запустите выполнение.

    tg = slrt;
    tg.stoptime = 1;
    start(tg);
  3. Остановка выполнения.

    stop(tg);

Загрузите и отобразите данные на графике

  1. Загрузите и постройте регистрируемые времена и выходные значения от целевого компьютера. В Командном окне введите:

    tg = slrt;
    timelog = tg.TimeLog;
    outputlog = tg.OutputLog;
    plot(timelog, outputlog)

  2. Загрузите и постройте времена выполнения задачи для целевого компьютера. В Командном окне введите:

    tetlog = tg.TETLog;
    plot(timelog, tetlog)

    Показанный график является результатом выполнения в реальном времени.

  3. В Командном окне введите:

    tg.AvgTET
    ans =
    
      5.7528e-006

    Процентом производительности ЦП является средний TET, разделенный на шаг расчета.

Время выполнения задачи (TET) измеряется, сколько времени оно берет ядро, чтобы запуститься для одного временного шага тарифной ставки. Для многоскоростной модели используйте профилировщик, чтобы узнать то, что время выполнения для каждого уровня.

Смотрите также

|

Похожие темы