Частотная характеристика на вход угла управления

В этом примере показов, как использовать динамику аппарата примера готовых узлов рулевого управления для анализа динамической реакции рулевого управления на входы рулевого управления. В частности, вы можете изучить частотную характеристику транспортного средства и боковое ускорение, когда вы запускаете маневр с различными синусоидальными амплитудами рулевого управления волны.

Стреловидный маневр рулевого управления проверяет частотную характеристику транспортного средства на входы рулевого управления. В тесте драйвер:

  • Ускоряется до тех пор, пока транспортное средство не достигнет целевой скорости.

  • Команда синусоидального входа рулевого колеса.

  • Линейно увеличивайте частоту синусоидальной волны.

Для получения дополнительной информации о примере готовых узлов см. Раздел «Маневр рулевого управления свептом-синусом».

helpersetupsss;

Запуск маневра рулевого управления со свептом-синусом

1. Откройте блок Swept Sine Reference Generator. По умолчанию маневр устанавливается с этими параметрами:

  • Уставка продольной скорости - 30 миль/ч

  • Амплитуда рулевого управления - 90 o

  • Конечная частота - 0,7 Гц

2. В Подсистеме визуализации откройте блок 3D Engine. По умолчанию для параметра 3D Engine задано значение Disabled. Требования к платформе механизма 3D визуализации и рекомендации по оборудованию см. в 3D Требования и ограничения Engine визуализации.

3. Запустите маневр с настройками по умолчанию. Когда будет выполняться симуляция, просмотрите информацию о транспортном средстве.

mdl = 'SSSReferenceApplication';
sim(mdl);
### Starting serial model reference simulation build
Warning: method not found. 
### Successfully updated the model reference simulation target for: Driveline
### Successfully updated the model reference simulation target for: PassVeh14DOF
### Successfully updated the model reference simulation target for: SiMappedEngineV

Build Summary

Simulation targets built:

Model            Action                       Rebuild Reason                              
==========================================================================================
Driveline        Code generated and compiled  Driveline_msf.mexw64 does not exist.        
PassVeh14DOF     Code generated and compiled  PassVeh14DOF_msf.mexw64 does not exist.     
SiMappedEngineV  Code generated and compiled  SiMappedEngineV_msf.mexw64 does not exist.  

3 of 3 models built (0 models already up to date)
Build duration: 0h 4m 2.207s

  • В окне Положение транспортном средстве просмотрите продольное расстояние транспортного средства как функцию или боковое расстояние. Желтая линия является частотой рыскания. Синяя линия - это угол поворота руля.

  • В Подсистеме визуализации откройте блок Yaw Rate и Steer Scope, чтобы отобразить скорость рыскания и угол поворота в зависимости от времени.

Развертка рулевого управления

Запустите пример готовых узлов с тремя различными синусоидальными амплитудами управления волной.

1. В модели примера готовых узлов рулевого управления swept-sine откройте блок Swept Sine Reference Generator. Амплитуда управления, theta_hw параметров блоков устанавливает амплитуду. По умолчанию амплитуда составляет 90 o.

2. Включите регистрацию сигналов для сигналов скорости, маршрута и ISO. Можно использовать редактор Simulink ® или, кроме того, эти команды MATLAB ®. Сохраните модель.

  • Включите регистрацию сигнала для сигнала Outport Lane генератора ссылки смены маршрута.

mdl = 'SSSReferenceApplication';
open_system(mdl);
ph=get_param('SSSReferenceApplication/Swept Sine Reference Generator','PortHandles');
set_param(ph.Outport(1),'DataLogging','on');
  • Включите регистрацию сигнала для сигнала вывода блока Passenger Vehicle.

ph=get_param('SSSReferenceApplication/Passenger Vehicle','PortHandles');
set_param(ph.Outport(1),'DataLogging','on');
  • В Подсистеме визуализации включите регистрацию сигнала для блока ISO.

set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable');

3. Настройте вектор амплитуды рулевого управления, amp, что вы хотите расследовать. Для примера в командной строке введите:

amp = [60, 90, 120];
numExperiments = length(amp);

4. Создайте массив входов симуляции, который устанавливает генератор Ссылки Swept Sine параметров блоков амплитуду рулевого управления theta_hw равной amp.

for idx = numExperiments:-1:1
    in(idx) = Simulink.SimulationInput(mdl);
    in(idx) = in(idx).setBlockParameter([mdl '/Swept Sine Reference Generator'],...
        'theta_hw',num2str(amp(idx)));
end

5. Сохраните модель и запустите симуляции. При наличии используйте параллельные вычисления.

save_system(mdl)
tic;
simout = parsim(in,'ShowSimulationManager','on');
toc;
[17-Dec-2020 15:45:52] Checking for availability of parallel pool...
[17-Dec-2020 15:45:52] Starting Simulink on parallel workers...
[17-Dec-2020 15:45:53] Loading project on parallel workers...
[17-Dec-2020 15:45:53] Configuring simulation cache folder on parallel workers...
[17-Dec-2020 15:45:53] Loading model on parallel workers...
[17-Dec-2020 15:46:05] Running simulations...
[17-Dec-2020 15:47:03] Completed 1 of 3 simulation runs
[17-Dec-2020 15:47:04] Completed 2 of 3 simulation runs
[17-Dec-2020 15:48:34] Completed 3 of 3 simulation runs
[17-Dec-2020 15:48:35] Cleaning up parallel workers...
Elapsed time is 174.675488 seconds.

6. После завершения симуляций закройте окна Данных моделирования Inspector.

Используйте Данные Моделирования Inspector для анализа результатов

Используйте Данные моделирования Inspector, чтобы изучить результаты. Можно использовать пользовательский интерфейс или, кроме того, функции командной строки.

1. Откройте Данные моделирования Inspector. На панели инструментов Simulink, на вкладке Simulation, в разделе Review Results, нажмите Data Inspector.

  • В Данные моделирования Inspector выберите Import.

  • В диалоговом окне Импорт очистите logsout. Выберите simout(1), simout(2), и simout(3). Выберите Импорт.

  • Используйте Данные моделирования Inspector, чтобы изучить результаты.

2. Также используйте эти команды MATLAB для построения графика данных для каждого запуска. Для примера используйте эти команды, чтобы построить график бокового положения, угла поворота рулевого колеса и бокового ускорения. Результаты аналогичны этим графикам, которые показывают результаты для каждого запуска.

for idx = 1:numExperiments
    % Create sdi run object
    simoutRun(idx)=Simulink.sdi.Run.create;
    simoutRun(idx).Name=['Amplitude = ', num2str(amp(idx))];
    add(simoutRun(idx),'vars',simout(idx));
end
sigcolor=[0 1 0;0 0 1;1 0 1];
for idx = 1:numExperiments
    % Extract the lateral acceleration, position, and steering
    ysignal(idx)=getSignalByIndex(simoutRun(idx),7);
    ysignal(idx).LineColor =sigcolor((idx),:);
    ssignal(idx)=getSignalByIndex(simoutRun(idx),255);
    ssignal(idx).LineColor =sigcolor((idx),:);
    asignal(idx)=getSignalByIndex(simoutRun(idx),263);
    asignal(idx).LineColor =sigcolor((idx),:);
end
Simulink.sdi.view
Simulink.sdi.setSubPlotLayout(3,1);
for idx = 1:numExperiments
    % Plot the lateral position, steering angle, and lateral acceleration
    plotOnSubPlot(ysignal(idx),1,1,true);
    plotOnSubPlot(ssignal(idx),2,1,true);
    plotOnSubPlot(asignal(idx),3,1,true);
end

Результаты аналогичны этим графикам, которые указывают, что наибольшее боковое ускорение происходит, когда амплитуда рулевого управления 120 град.

Последующий анализ

Чтобы исследовать результаты далее, используйте эти команды, чтобы извлечь боковое ускорение, угол поворота руля и траекторию транспортного средства из simout объект.

1. Извлеките боковое ускорение и угол поворота руля. Постройте график данных. Результаты аналогичны этому графику.

figure
for idx = 1:numExperiments
    % Extract Data
    log = get(simout(idx),'logsout');
    sa=log.get('Steering-wheel angle').Values;
    ay=log.get('Lateral acceleration').Values;
    legend_labels{idx} = ['amplitude = ', num2str(amp(idx)), '^{\circ}'];
    % Plot steering angle vs. lateral acceleration
    plot(sa.Data,ay.Data)
    hold on
end
% Add labels to the plots
legend(legend_labels, 'Location', 'best');
title('Lateral Acceleration')
xlabel('Steering Angle [deg]')
ylabel('Acceleration [m/s^2]')
grid on

2. Извлеките транспортное средство пути. Постройте график данных. Результаты аналогичны этому графику.

figure
for idx = 1:numExperiments
    % Extract Data
    log = get(simout(idx),'logsout');
    x = log{1}.Values.Body.InertFrm.Cg.Disp.X.Data;
    y = log{1}.Values.Body.InertFrm.Cg.Disp.Y.Data;
    legend_labels{idx} = ['amplitude = ', num2str(amp(idx)), '^{\circ}'];
    % Plot vehicle location
    axis('equal')
    plot(y,x)
    hold on
end
% Add labels to the plots
legend(legend_labels, 'Location', 'best');
title('Vehicle Path')
xlabel('Y Position [m]')
ylabel('X Position [m]')
grid on

См. также

| |

Похожие темы