Регистрируйте данные сигнала с блоком выходного порта и языком 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. Модель имеет один блок 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);
    tg = slrt('TargetPC1');
    load(tg,mdl);
  2. Установите время остановки и запустите выполнение.

    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) измеряется, сколько времени оно берет ядро, чтобы запуститься для одного временного шага тарифной ставки. Для многоскоростной модели используйте профилировщик, чтобы узнать то, что время выполнения для каждого уровня.

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

|

Похожие темы