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