exponenta event banner

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

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

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

  • Ускоряется, пока автомобиль не врезается в целевую скорость.

  • Управляет синусоидальным входом руля.

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

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

Запустите руководящий маневр развернутого синуса

  1. Создайте и откройте рабочую копию увеличения, регулирующего пример готовых узлов.

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

    • Longitudinal velocity setpoint — 30 миль в час

    • Steering amplitude — 90 градусов

    • Final frequency — 0,7 Гц

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

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

    • В окне Vehicle Position просмотрите автомобиль продольное расстояние как функцию бокового расстояния.

    • В подсистеме Визуализации откройте Уровень Отклонения от курса и блок Steer Scope, чтобы отобразить уровень отклонения от курса и держащийся угол по сравнению со временем:

      • Желтая строка — уровень Отклонения от курса

      • Синие строки — Держащийся угол

      Синяя строка показывает амплитуде градуса 90 синусоидальный руководящий угол с увеличивающейся частотой.

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

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

  1. В развернутом синусе, регулирующем модель SSSReferenceApplication примера готовых узлов, откройте блок Swept Sine Reference Generator. Параметры блоков Steering amplitude, theta_hw устанавливают амплитуду. По умолчанию амплитуда является градусом 90.

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

    Элемент модели

    Редактор Simulink

    VehFdbk inport

    Блок ISO 15037-1:2006

    3D Блок двигателя

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

    % Open the model
    mdl = 'SSSReferenceApplication';
    open_system(mdl);
    
    % Enable signal logging for VehFdbk
    ph=get_param('SSSReferenceApplication/Visualization/VehFdbk','PortHandles');
    set_param(ph.Outport,'DataLogging','on');
    
    % Enable signal logging for ISO block
    set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable');
    
    % Disable 3D environment
    set_param([mdl '/Visualization/3D Engine'],'engine3D','Disabled');
    
    save_system(mdl)

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

    mdl = 'SSSReferenceApplication';
    open_system(mdl);
    % Define the set of amplitudes to sweep
    amp = [60, 90, 120];
    numExperiments = length(amp);

  4. Создайте массив входных параметров симуляции, которые устанавливают Развернутые параметры блоков Генератора Ссылки Синуса, Steering amplitude, 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. Сохраните модель и запустите симуляции. При наличии используйте параллельные вычисления.

    tic; 
    simout = parsim(in,'ShowSimulationManager','on');
    toc;
    delete(gcp('nocreate'))

  6. Импортируйте результаты симуляции Инспектору Данных моделирования.

    1. На панели инструментов Simulink Editor нажмите кнопку Simulation Data Inspector.

    2. В Инспекторе Данных моделирования выберите Import. В диалоговом окне Import примите значения по умолчанию и выберите Import.

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

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

  7. Исследуйте результаты в Инспекторе Данных моделирования. Чтобы охарактеризовать регулирование, просмотрите графики результатов симуляции. Например, постройте боковое положение, Y, угол руля и поперечное ускорение. Результаты подобны этим графикам, которые показывают результаты для выполнений 2, 3, и 4. Результаты показывают, что самое большое поперечное ускорение, происходит, когда держащаяся амплитуда является градусом 120.

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

    • Извлеките поперечное ускорение и держащийся угол. Отобразите данные на графике.

      % Plot results from simout object: lateral acceleration vs steering angle
      figure
      for idx = 1:numExperiments
          % Extract Data
          log = simout(idx).get('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

      Результаты подобны этому графику.

    • Извлеките путь к автомобилю. Отобразите данные на графике.

      % Plot results from simout object
      figure
      for idx = 1:numExperiments
          % Extract Data
          log = simout(idx).get('logsout');
          VehFdbk = log.get('VehFdbk');
          x = VehFdbk.Values.Body.X;
          y = VehFdbk.Values.Body.Y;
          legend_labels{idx} = ['amplitude = ', num2str(amp(idx)), '^{\circ}'];
         
          % Plot vehicle location
          axis('equal')
          plot(y.Data,x.Data)
          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
      

      Результаты подобны этому графику.

  9. Для следующих шагов используйте быстрое преобразование Фурье (FFT), чтобы исследовать держащийся ответ в частотном диапазоне.

Смотрите также

| |

Похожие темы