В этом примере показано, как спроектировать контроллер для транспортного средства platooning приложения. Во взводе транспортных средств каждый после транспортного средства обеспечивает постоянный интервал от своего предыдущего транспортного средства. Транспортные средства, перемещающиеся в плотно расположенных с интервалами взводах, могут улучшить поток трафика, безопасность и экономию топлива.
Platooning имеет следующие цели управления [1].
Отдельная устойчивость транспортного средства — Разрядка ошибки для каждого после транспортного средства сходится, чтобы обнулить, если предыдущее транспортное средство перемещается на постоянной скорости.
Представьте устойчивость в виде строки — Разрядка ошибок не усиливает, когда они распространяют к хвосту строки транспортного средства.
В этом примере во взводе существует пять транспортных средств. Каждое транспортное средство моделируется как система трейлера грузовика следующими параметрами. Все длины исчисляются в метрах.
L1 = 6; % Truck length L2 = 10; % Trailer length M1 = 1; % Interconnection length
Ведущее транспортное средство следует за данным ускоряющим профилем. Каждое запаздывающее транспортное средство имеет контроллер, который управляет его ускорением.
Откройте модель Simulink®.
mdl = 'fiveVehiclePlatoon';
open_system(mdl)
В этом примере, запаздывающие транспортные средства все использование то же проектирование контроллера, которое имеет следующую структуру.
Здесь:
, , и соответствующее ускорение, скорость и положение автомобиля, оборудованного датчиком, то есть, запаздывающего транспортного средства под управлением.
и ускорение и скорость транспортного средства непосредственно перед автомобилем, оборудованным датчиком.
и ускорение и положение ведущего транспортного средства во взводе.
Каждое транспортное средство получает эту информацию из встроенных датчиков и радиосвязи с другими транспортными средствами во взводе.
Параметры для контроллера следующие.
желаемое следующее расстояние.
константа.
константа.
ПИД-регулятор.
Контроллер минимизирует ошибку скорости использование контроллера , и минимизирует ошибку интервала использование .
Задайте начальные параметры контроллера.
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);
В главном графике скорость каждого после транспортного средства сходится к ведущей скорости. В нижнем графике интервал между транспортными средствами сходится к желаемому интервалу.
Чтобы улучшать производительность, можно настроить усиления ПИД-регулятора. Как пример, настройте ПИД-регулятор интервала для 4-го транспортного средства во взводе.
Откройте контроллер.
open_system([mdl '/4th with controller/controller/K2'])
В параметрах блоков, в соответствии с настраивающим методом Выбора, выбирают Transfer Function Based (PID Tuner App)
. Нажмите Tune.
В приложении PID Tuner настройте время отклика и переходное поведение контроллера. Например, Время отклика секунды и Переходный фактор Поведения 0,6 производят ПИД-регулятор с более быстрым ответом и никаким перерегулированием.
Чтобы обновить параметры контроллера в модели, нажмите Update Block.
В данном примере откройте и симулируйте модель Simulink настроенными параметрами 4-го набора контроллера.
mdlTuned = 'fiveVehiclePlatoonTuned';
open_system(mdlTuned)
sim(mdlTuned);
В графике интервала ошибка для 4-го транспортного средства сходится быстрее, чем в предыдущей симуляции.
Поскольку запаздывающие транспортные средства используют то же проектирование контроллера, устанавливают усиления для других запаздывающих транспортных средств к настроенным усилениям от 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)
Симулируйте модель со всеми запаздывающими контроллерами транспортного средства контроллеры настраиваются.
sim(mdlTuned);
Ошибка для всех запаздывающих транспортных средств сходится быстрее, чем в исходной симуляции.
[1] Rajamani, Rajesh. Динамика аппарата и Управление. 2. Ряд Машиностроения редактора. Нью-Йорк, Нью-Йорк Гейдельберг: Спрингер, 2012.