В этом примере показано, как использовать блок Adaptive Cruise Control System в Simulink ®, и показаны цели управления и ограничения этого блока.
Добавьте папку файла примера к пути MATLAB ®.
addpath(fullfile(matlabroot,'examples','mpc','main'));
Транспортное средство (эго-автомобиль), оснащенное адаптивным круиз-контролем (ACC), имеет датчик, такой как радар, который измеряет расстояние до предшествующего транспортного средства в той же полосе (ведущий автомобиль),.
Датчик также измеряет относительную скорость ведущего вагона.
Система ACC работает в следующих двух режимах:
Контроль скорости: эго-автомобиль движется со скоростью, установленной водителем.
Контроль интервалов: Автомобиль ego поддерживает безопасное расстояние от ведущего автомобиля.
Система ACC решает, какой режим использовать на основе радиолокационных измерений в реальном времени. Например, если ведущий вагон находится слишком близко, система ACC переключается с управления скоростью на управление интервалом. Аналогично, если ведущий вагон находится дальше, система ACC переключается с управления интервалом на управление скоростью. Другими словами, система ACC обеспечивает движение эго-автомобиля со скоростью, установленной водителем, до тех пор, пока он поддерживает безопасное расстояние.
Для определения режима работы системы ACC используются следующие правила:
Если,
то режим управления скоростью активен. Цель управления состоит в отслеживании скорости, установленной драйвером,.
Если,
то активен режим управления интервалом. Целью контроля является поддержание безопасного расстояния,.

Динамика для свинцового автомобиля и эго-автомобиля смоделирована в Simulink. Откройте модель Simulink.
mdl = 'mpcACCsystem';
open_system(mdl)

Чтобы приблизить реалистичную среду вождения, ускорение ведущего автомобиля изменяется в соответствии с синусоидальной волной во время моделирования. Блок Adaptive Cruise Control System выдает сигнал управления ускорением для эго-автомобиля.
Определите время выборки, Tsи продолжительность моделирования, T, в секундах.
Ts = 0.1; T = 80;
Как для эго-транспортного средства, так и для ведущего транспортного средства динамика между ускорением и скоростью моделируется следующим образом:

что приближает динамику корпуса дросселя и инерции транспортного средства.
Укажите линейную модель для автомобиля ego.
G_ego = tf(1,[0.5,1,0]);
Укажите исходное положение и скорость для двух транспортных средств.
x0_lead = 50; % initial position for lead car (m) v0_lead = 25; % initial velocity for lead car (m/s) x0_ego = 10; % initial position for ego car (m) v0_ego = 20; % initial velocity for ego car (m/s)
Система ACC моделируется с использованием блока Adaptive Cruise Control System Block в Simulink. Входами в системный блок ACC являются:
Заданная драйвером скорость 
Разрыв во времени 
Скорость эго-автомобиля 
Относительное расстояние до ведущего вагона
(от РЛС)
Относительная скорость к головному вагону
(от РЛС)
Выходом для системы ACC является ускорение эго-автомобиля.
Безопасное расстояние между ведущим автомобилем и эго-автомобилем является функцией скорости эго-вагона,:

где
- интервал между остановками по умолчанию и
интервал времени между транспортными средствами. Задайте значения для,
в метрах и в
секундах.
t_gap = 1.4; D_default = 10;
Укажите заданную драйвером скорость в м/с.
v_set = 30;
Учитывая физические ограничения динамики транспортного средства, ускорение ограничено диапазоном [-3,2] (м/с ^ 2).
amin_ego = -3; amax_ego = 2;
В этом примере параметры по умолчанию блока адаптивной системы круиз-контроля соответствуют параметрам моделирования. Если параметры моделирования отличаются от значений по умолчанию, обновите параметры блока соответствующим образом.
Запустите моделирование.
sim(mdl)
-->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. Assuming no disturbance added to measured output channel #1. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Постройте график результата моделирования.
mpcACCplot(logsout,D_default,t_gap,v_set)

В первые 3 секунды, чтобы достичь установленной водителем скорости, эго-автомобиль разгоняется с полным дросселем.
С 3 до 13 секунд свинцовая машина разгоняется медленно. В результате для поддержания безопасного расстояния до ведущей машины эго-автомобиль ускоряется с более медленной скоростью.
От 13 до 25 секунд эго-автомобиль поддерживает заданную водителем скорость, как показано на графике Velocity. Тем не менее, когда ведущий автомобиль снижает скорость, ошибка интервала начинает приближаться к 0 через 20 секунд.
С 25 до 45 секунд ведущий болид замедляется и затем снова разгоняется. Автомобиль ego поддерживает безопасное расстояние от ведущего автомобиля, регулируя его скорость, как показано на графиках расстояния.
От 45 до 56 секунд, погрешность интервала выше 0. Поэтому эго-автомобиль снова достигает заданной водителем скорости.
От 56 до 76 секунд последовательность замедления/ускорения от 25 до 45 секунд повторяется.
Во время моделирования контроллер обеспечивает, чтобы фактическое расстояние между двумя транспортными средствами было больше установленного безопасного расстояния. Когда фактическое расстояние достаточно велико, то контроллер гарантирует, что эго-транспортное средство следует установленной водителем скорости.
Удалите папку файла примера из пути MATLAB и закройте модель Simulink.
rmpath(fullfile(matlabroot,'examples','mpc','main')); bdclose(mdl)