Настройка параметра и регистрация данных

В этом примере показано, как использовать настройку параметра в реальном времени и регистрацию данных с Simulink® Real-Time™. После того, как пример создает модель и загружает приложение реального времени, slrt_ex_param_tuning, к целевому компьютеру пример выполняет несколько запусков с усилением 'Gain1/Gain', измененный (настроенный) перед каждым запуском. Усиление развертывается от 0,1 до 0,7 с шагом 0,05.

Пример использует возможности регистрации данных Simulink Real-Time получить сигналы интереса во время каждого запуска. Регистрируемые сигналы загружены на компьютер разработчика и построены. Отображен 3-D график генератора выход по сравнению со временем по сравнению с усилением.

Открытый, сборка и модель загрузки к целевому компьютеру

Откройте модель, slrt_ex_param_tuning. Параметры конфигурации модели выбирают slrealtime.tlc системный конечный файл как цель генерации кода. Создавание модели создает приложение реального времени, slrt_ex_param_tuning.mldatx, это работает на целевом компьютере.

model = 'slrt_ex_param_tuning';
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples',model));

Создайте модель и загрузите приложение реального времени, slrt_ex_param_tuning.mldatx, к целевому компьютеру.

  • Сконфигурируйте для немногословной сборки.

  • Сборка и приложение загрузки.

set_param(model,'RTWVerbose','off');
set_param(model,'StopTime','0.2');
slbuild(model);
tg = slrealtime;
load(tg,model);
### Successful completion of build procedure for: slrt_ex_param_tuning
### Created MLDATX ..\slrt_ex_param_tuning.mldatx

Build Summary

Top model targets built:

Model                 Action                       Rebuild Reason                                    
=====================================================================================================
slrt_ex_param_tuning  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 20.514s

Запустите модель, параметр 'усиления' развертки, постройте записанные данные

Этот код выполняет несколько задач.

Задача 1: создайте целевой объект

Создайте переменную MATLAB®, tg, это содержит целевой объект Simulink Real-Time. Этот объект позволяет вам связаться с и управлять целевым компьютером.

  • Создайте целевой объект Simulink Real-Time.

  • Установите время остановки на 0,2 с.

Задача 2: запустите модель и постройте результаты

Запустите модель, развертывающуюся через и изменяющую усиление (ослабляющий параметр) перед каждым запуском. Постройте результаты для каждого запуска.

  • Если никакая фигура графика не существует, создает фигуру.

  • Если фигура графика существует, сделайте его текущей фигурой.

Задача 3: Цикл по коэффициенту затухания z

  • Установите коэффициент затухания (Gain1/Gain).

  • Запустите запуск приложения реального времени.

  • Сохраните выходные данные в outpY, и t переменные.

  • Отобразите данные на графике для текущего запуска.

Задача 4: создайте 3-D график (Генератор Выход по сравнению со временем по сравнению с усилением)

  • Цикл по коэффициенту затухания.

  • Создайте график генератора выход по сравнению со временем по сравнению с усилением.

  • Создайте 3-D график.

figh = findobj('Name', 'parsweepdemo');
if isempty(figh)
  figh = figure;
  set(figh, 'Name', 'parsweepdemo', 'NumberTitle', 'off');
else
  figure(figh);
end
y = []; flag = 0;
for z = 0.1 : 0.05 : 0.7
  if isempty(find(get(0, 'Children') == figh, 1))
      flag = 1;
      break;
  end
  load(tg,model);
  tg.setparam([model '/Gain1'],'Gain',2 * 1000 * z);
  tg.start('AutoImportFileLog',true, 'ExportToBaseWorkspace', true);
  pause(0.4);
  outp = logsOut.FileLogSignals{1}.Values;
  y    = [y,outp.Data(:,1)];
  t    = outp.Time;
  plot(t,y);
  set(gca, 'XLim', [t(1), t(end)], 'YLim', [-10, 10]);
  title(['parsweepdemo: Damping Gain = ', num2str(z)]);
  xlabel('Time'); ylabel('Output');
  drawnow;
end
if ~flag
  delete(gca);
  surf(t(1 : 200), 0.1 : 0.05 : 0.7, y(1 : 200, :)');
  colormap cool
  shading interp
  h = light;
  set(h, 'Position', [0.0125, 0.6, 10], 'Style', 'local');
  lighting gouraud
  title('parsweepdemo: finished');
  xlabel('Time'); ylabel('Damping Gain'); zlabel('Output');
end

Закройте модель

Когда сделано, близко модель.

close_system(model,0);