Спроектируйте контроллер для транспортного средства Platooning

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

Platooning имеет следующие цели управления [1].

  • Отдельная устойчивость транспортного средства — Разрядка ошибки для каждого после транспортного средства сходится, чтобы обнулить, если предыдущее транспортное средство перемещается на постоянной скорости.

  • Представьте устойчивость в виде строки — Разрядка ошибок не усиливает, когда они распространяют к хвосту строки транспортного средства.

Модель Platooning

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

L1 = 6;  % Truck length
L2 = 10; % Trailer length
M1 = 1;  % Interconnection length

Ведущее транспортное средство следует за данным ускоряющим профилем. Каждое запаздывающее транспортное средство имеет контроллер, который управляет его ускорением.

Откройте модель Simulink®.

mdl = 'fiveVehiclePlatoon';
open_system(mdl)

Проектирование контроллера

В этом примере, запаздывающие транспортные средства все использование то же проектирование контроллера, которое имеет следующую структуру.

aego=C1alead+(1-C1)afront-K1(vego-vlead)-K2(xego-xfront+L)

Здесь:

  • aego, vego, и xego соответствующее ускорение, скорость и положение автомобиля, оборудованного датчиком, то есть, запаздывающего транспортного средства под управлением.

  • afront и vfront ускорение и скорость транспортного средства непосредственно перед автомобилем, оборудованным датчиком.

  • alead и xlead ускорение и положение ведущего транспортного средства во взводе.

Каждое транспортное средство получает эту информацию из встроенных датчиков и радиосвязи с другими транспортными средствами во взводе.

Параметры для контроллера следующие.

  • L желаемое следующее расстояние.

  • C1 константа.

  • K1 константа.

  • K2 ПИД-регулятор.

Контроллер минимизирует ошибку скорости vlead-vego использование контроллера K1, и минимизирует ошибку интервала xego-xfront+L использование K2.

Задайте начальные параметры контроллера.

L = L1 + L2 + M1 + 5;     % Front-to-front vehicle spacing
C1 = 0.8;                 % Constant gain
K1 = 8;                   % Constant gain
K2 = [2,1];               % PD gains for spacing control [P,D]

Запустите симуляцию.

sim(mdl);

В главном графике скорость каждого после транспортного средства сходится к ведущей скорости. В нижнем графике интервал между транспортными средствами сходится к желаемому интервалу.

Настройка ПИДа

Чтобы улучшать производительность, можно настроить усиления ПИД-регулятора. Как пример, настройте ПИД-регулятор интервала K2 для 4-го транспортного средства во взводе.

Откройте контроллер.

open_system([mdl '/4th with controller/controller/K2'])

В параметрах блоков, в соответствии с настраивающим методом Выбора, выбирают Transfer Function Based (PID Tuner App). Нажмите Tune.

В приложении PID Tuner настройте время отклика и переходное поведение контроллера. Например, Время отклика 3 секунды и Переходный фактор Поведения 0,6 производят ПИД-регулятор с более быстрым ответом и никаким перерегулированием.

Чтобы обновить параметры контроллера в модели, нажмите Update Block.

В данном примере откройте и симулируйте модель Simulink настроенными параметрами 4-го набора контроллера.

mdlTuned = 'fiveVehiclePlatoonTuned';
open_system(mdlTuned)
sim(mdlTuned);

В графике интервала ошибка для 4-го транспортного средства сходится быстрее, чем в предыдущей симуляции.

Поскольку запаздывающие транспортные средства используют то же проектирование контроллера, устанавливают K2 усиления для других запаздывающих транспортных средств к настроенным усилениям от 4-го транспортного средства.

% Obtained tuned controller gains.
pTuned = get_param([mdlTuned '/4th with controller/controller/K2'],'P');
dTuned = get_param([mdlTuned '/4th with controller/controller/K2'],'D');

% Set gains in other controllers.
set_param([mdlTuned '/3rd with controller/controller/K2'],'P',pTuned)
set_param([mdlTuned '/3rd with controller/controller/K2'],'D',dTuned)
set_param([mdlTuned '/2nd with controller/controller/K2'],'P',pTuned)
set_param([mdlTuned '/2nd with controller/controller/K2'],'D',dTuned)
set_param([mdlTuned '/1st with controller/controller/K2'],'P',pTuned)
set_param([mdlTuned '/1st with controller/controller/K2'],'D',dTuned)

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

sim(mdlTuned);

Ошибка для всех запаздывающих транспортных средств сходится быстрее, чем в исходной симуляции.

Ссылки

[1] Rajamani, Rajesh. Динамика аппарата и Управление. 2. Ряд Машиностроения редактора. Нью-Йорк, Нью-Йорк Гейдельберг: Спрингер, 2012.

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

Приложения

Блоки

Похожие темы