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

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

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

Проверяйте связь между разработкой и целевыми компьютерами

Используйте 'slrtpingtarget', чтобы протестировать связь между разработкой и целевыми компьютерами.

if ~strcmp(slrtpingtarget, 'success')
  error(message('xPCTarget:examples:Connection'));
end

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

Откройте модель осциллятора, xpcosc. При настройках опции Simulink Real-Time параметра конфигурации модели системный конечный файл был установлен в slrt.tlc. Создавание модели создаст исполняемое изображение, xpcosc.mldatx, который может быть запущен на компьютере, загруженном с Ядром Simulink Real-Time.

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

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

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

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

set_param('xpcosc','RTWVerbose','off');
rtwbuild('xpcosc');
### Starting Simulink Real-Time build procedure for model: xpcosc
Warning: This model contains blocks that do not handle sample time
changes at runtime. To avoid incorrect results, only change
the sample time in the original model, then rebuild the model. 
### Successful completion of build procedure for model: xpcosc
### Created MLDATX ..\xpcosc.mldatx
### Looking for target: TargetPC1
### Download model onto target: TargetPC1

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

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

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

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

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

  • Установите шаг расчета на 250us.

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

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

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

  • Получите индекс параметра 'Gain1/Gain'

  • Фигура графика существует?

  • Если не, создайте фигуру

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

Задача 3: Цикл по затуханию фактора z

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

  • Запустите образцовое выполнение

  • Загрузка вывод и хранилище в матрице

  • Загрузите временной вектор

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

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

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

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

tg = slrt; % create target object
tg.SampleTime = 0.000250;
tg.StopTime   = 0.2;
tPar = getparamid(tg, 'Gain1', 'Gain'); % run the model
figh = findobj('Name', 'parsweepdemo');
if isempty(figh)
  figh = figure;
  set(figh, 'Name', 'parsweepdemo', 'NumberTitle', 'off');
else
  figure(figh);
end
y = []; flag = 0; % loop over damping factor
for z = 0.1 : 0.05 : 0.7
  if isempty(find(get(0, 'Children') == figh, 1)), flag = 1; break; end
  setparam(tg,tPar,2 * 1000 * z);
  start(tg);
  pause(2*tg.StopTime);
  outp = tg.OutputLog;
  y    = [y, outp(:, 1)];
  t    = tg.TimeLog;
  plot(t, outp(:, 1));
  set(gca, 'XLim', [t(1), t(end)], 'YLim', [-10, 10]);
  title(['parsweepdemo: Damping Gain = ', num2str(z)]);
  xlabel('Time'); ylabel('Output');
  drawnow;
end
if ~flag % create 3-D plot
  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('xpcosc',0);