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

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

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

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

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

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

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

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

  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 просмотрите транспортное средство продольное расстояние как функцию бокового расстояния.

    • В подсистеме Визуализации откройте блок Yaw Rate и 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. Создайте массив входных параметров симуляции, которые устанавливают параметры блоков Swept Sine Reference Generator, 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;

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

    1. На панели инструментов Simulink Editor нажмите кнопку 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), чтобы исследовать держащийся ответ в частотном диапазоне.

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

| |

Похожие темы