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