exponenta event banner

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

В этом примере показано, как использовать настройку параметров в реальном времени и регистрацию данных с помощью 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, к целевому компьютеру.

  • Настройка для построения, отличного от Verbose.

  • Создайте и загрузите приложение.

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).

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

  • Сохранить выходные данные в outp, y, и 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);