Добавьте приложение App Designer в инвертированную модель маятника

В этом примере показано, как передать сигналы сигнала потоком к приложению инструментальной панели App Designer из приложения Simulink Real-Time. Пример создает приложение реального времени из модели slrtpendulum. Эта модель содержит модели, на которые ссылаются, которые производят сигналы, которые переданы потоком и построены. Инструментальная панель содержит эти компоненты App Designer:

  • Оси — Чтобы отобразить анимацию для двух инвертированных маятников и систем корзины.

  • Оси — Чтобы отобразить вывод сигнала для ответов на разрушение маятников.

  • Пошагово переместите кнопки — Чтобы применить вход (пошаговые перемещения) к корзинам, которые содержат маятники.

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

open_system(docpath(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','slrtpendulum')));

load_system(docpath(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','slrtpendulum_100Hz')));

load_system(docpath(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','slrtpendulum_200Hz')));

Запустите целевой компьютер и создайте приложение реального времени

Эти задачи генерируют приложение реального времени что потоковые данные к приложению инструментальной панели App Designer.

  1. Запустите целевой компьютер.

  2. Откройте модель slrtpendulum.

  3. Соедините компьютер разработчика с целевым компьютером. Создайте slrtpendulum модель.

  4. Разверните приложение реального времени в целевой компьютер.

В Командном Окне MATLAB введите:

set_param('slrtpendulum', 'RTWVerbose', 'off');
tg = slrt('TargetPC1');
rtwbuild('slrtpendulum');
load(tg,'slrtpendulum');
### Starting Simulink Real-Time build procedure for model: slrtpendulum_100Hz

### Starting Simulink Real-Time build procedure for model: slrtpendulum_200Hz

### Starting Simulink Real-Time build procedure for model: slrtpendulum
### Generated code for 'slrtpendulum' is up to date because no structural, parameter or code replacement library changes were found.
### Successful completion of build procedure for model: slrtpendulum
### Created MLDATX ..\slrtpendulum.mldatx

Запустите приложение инструментальной панели App Designer

Приложение инструментальной панели App Designer Pendulum обеспечивает средства управления, чтобы запуститься и взаимодействовать с приложением реального времени slrtpendulum.

1. Запустите приложение. Запустить приложение App Designer Pendulum.mlapp и создайте указатель appВ Командном Окне MATLAB введите:

app = Pendulum;
Acquire Group  1
  DiscreteInterval = 0.010
  SampleTimeString = 0.01
  HistoryFlag      = 1
  signals:
    slrtpendulum/Reference1:1
    cartposition1
    pendposition1
Acquire Group  2
  DiscreteInterval = 0.005
  SampleTimeString = 0.005
  HistoryFlag      = 1
  signals:
    slrtpendulum/Reference2:1
    cartposition2
    pendposition2

Когда приложение запускается, оно отображает вывод команды представления AcquiredList. Это представление отображает иерархию сигнала в объекте инструментирования в приложении.

2. Чтобы разрушить равновесие маятника на каждой корзине, нажмите кнопки Nudge. Можно настроить размер пошагового перемещения при помощи выбора значения рядом с каждой кнопкой.

3. Наблюдайте реакции графика на каждое пошаговое перемещение. Когда значение пошагового перемещения становится слишком большим, pedulum не может восстановить свое равновесие.

Код коллбэка приложения

Функциональность приложения инструментальной панели обеспечивается кодом коллбэка. Для получения дополнительной информации о добавляющих компонентах приложения и вводящем коде коллбэка, смотрите, Добавляет Приложение Инструментальной панели App Designer к Модели Бака.

Комментарии в коде коллбэка в приложении инструментальной панели Pendulum.mlapp опишите операции коллбэка и предложения программирования. Чтобы просмотреть код коллбэка, откройте Pendulum.mlapp в App Designer, и затем кликают по вкладке Code View. В Командном окне введите:

edit Pendulum

Задайте пути к блоку для сигналов в моделях, на которые ссылаются,

К потоковым данным из сигналов в моделях, на которые ссылаются, connectLine и addSignal функции для объекта инструментирования используют массив ячеек, чтобы передать блок path.

Для примеров смотрите setupInstrumentation(app) функция в приложении.

Функция updatePlotAxes

Эта функция является коллбэком с тремя аргументами.

Функция использует eventData.ExecTime получить текущее время на целевом компьютере и использовать то время, чтобы перенести XLims PlotAxes.

Функция updateAnimationCallback

Для каждого AcquireGroup эта функция проверяет, существуют ли новые данные с прошлого раза, когда коллбэк был назван. Если существуют данные, функция обновляет объекты Animation.

Обновите оси, и анимация при помощи получают группы

Часто, модели имеют несколько частот дискретизации.

Чтобы обновиться отображают данные на графике и строят анимацию, данные о группах объектов инструментирования AcquireGroups. Для slrtpendulum пример, два AcquireGroups на уровне различных частот дискретизации.

В коде коллбэка эта обработка отображается как AcquireGroupData группы сигнала в updateAnimationCallback функция. Отображения приложения эти группы в инструментировании возражают при помощи команды представления.

app.hInst.AcquireList.view

Закройте приложение и модели

Приложение инструментальной панели обрабатывает app обеспечивает доступ, чтобы закрыть приложение.

Закройте приложение. В Командном Окне MATLAB введите:

close(app.UIFigure)

Закройте открытые модели. В Командном окне введите:

bdclose ('all');