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

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

Запуск модели, параметр Sweep 'Gain', построение записанных данных

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

Задача 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);