В этом примере показано, как использовать динамику транспортного средства, медленно увеличивающую эталонное приложение рулевого управления, для анализа влияния угла поворота и скорости на управление транспортным средством. В частности, можно рассчитать коэффициент усиления рулевого управления при выполнении маневра с разными уставками скорости. На основе постоянной скорости, испытания на регулируемое рулевое управление, определенного в SAE J266, медленно увеличивающийся маневр рулевого управления помогает охарактеризовать боковую динамику транспортного средства. В ходе испытания водитель:
Ускоряется до тех пор, пока транспортное средство не достигнет целевой скорости.
Поддерживает целевую скорость.
Линейно увеличивает угол руля от 0 градусов до максимального угла.
Сохраняет угол поворота рулевого колеса в течение заданного времени.
Линейно уменьшает угол руля с максимального угла до 0 градусов.
Дополнительные сведения о справочном приложении см. в разделе Медленно увеличивающийся маневр рулевого управления.
helpersetupsis;

1. Откройте блок Генератор привязки продольного синуса (Swept Sine Reference Generator). По умолчанию маневр устанавливается со следующими параметрами:
Уставка продольной скорости - 50 миль/ч
Скорость маховика - 13,5 град.
Максимальный угол маховика - 270 град.
2. В подсистеме визуализации откройте блок 3D Engine. По умолчанию для параметра 3D Engine установлено значение Disabled. Требования к платформе модуля визуализации 3D и рекомендации по аппаратному обеспечению см. в разделе Требования и ограничения модуля визуализации 3D.
3. Выполните маневр с настройками по умолчанию. По мере выполнения моделирования просмотрите информацию о транспортном средстве.
mdl = 'ISReferenceApplication';
sim(mdl);
### Starting serial model reference simulation build Warning: method not found. ### Successfully updated the model reference simulation target for: Driveline ### Successfully updated the model reference simulation target for: PassVeh14DOF ### Successfully updated the model reference simulation target for: SiMappedEngineV Build Summary Simulation targets built: Model Action Rebuild Reason ========================================================================================== Driveline Code generated and compiled Driveline_msf.mexw64 does not exist. PassVeh14DOF Code generated and compiled PassVeh14DOF_msf.mexw64 does not exist. SiMappedEngineV Code generated and compiled SiMappedEngineV_msf.mexw64 does not exist. 3 of 3 models built (0 models already up to date) Build duration: 0h 4m 0.663s

В окне «Положение транспортного средства» просмотрите продольное расстояние транспортного средства как функцию или боковое расстояние. Желтая линия отображает скорость рыскания. Синяя линия показывает угол поворота.
В подсистеме визуализации откройте блок Yaw Rate и Steer Scope для отображения зависимости скорости и угла поворота от времени.

Выполните медленно увеличивающееся эталонное приложение угла поворота рулевого управления с тремя различными заданными точками скорости.
1. В медленно увеличивающейся эталонной модели приложения управления ISRefingApplication откройте блок Медленно увеличивающийся руль. Уставка продольной скорости, параметр блока xdot_r задает скорость транспортного средства. По умолчанию скорость составляет 50 миль/ч.
2. Включение регистрации сигналов для сигналов скорости, полосы движения и ISO. Можно также использовать редактор Simulink ® или эти команды MATLAB ®. Сохраните модель.
Активизируйте регистрацию сигналов для порта вывода сигнала медленно увеличивающегося направления.

mdl = 'ISReferenceApplication'; ph=get_param('ISReferenceApplication/Slowly Increasing Steer','PortHandles'); set_param(ph.Outport(1),'DataLogging','on');
Включить регистрацию сигналов для выходного сигнала блока пассажирского транспортного средства.

ph=get_param('ISReferenceApplication/Passenger Vehicle','PortHandles'); set_param(ph.Outport(1),'DataLogging','on');
В подсистеме визуализации включите регистрацию сигналов для блока ISO.

set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable');
3. Настройка вектора уставки скорости, xdot_r, что вы хотите расследовать. Например, в командной строке введите:
vmax = [45, 50, 55]; numExperiments = length(vmax);
4. Создайте массив входных данных моделирования, которые задают значение амплитуды рулевого управления для параметра «Генератор опорной синусоиды в продольном направлении», theta_hw равное amp.
for idx = numExperiments:-1:1 in(idx) = Simulink.SimulationInput(mdl); in(idx) = in(idx).setBlockParameter([mdl '/Slowly Increasing Steer'], ... 'xdot_r', num2str(vmax(idx))); end
5. Сохраните модель и запустите моделирование. Если доступно, используйте параллельные вычисления.
save_system(mdl) tic; simout = parsim(in,'ShowSimulationManager','on'); toc;
[17-Dec-2020 14:50:03] Checking for availability of parallel pool... [17-Dec-2020 14:50:03] Starting Simulink on parallel workers... [17-Dec-2020 14:50:03] Loading project on parallel workers... [17-Dec-2020 14:50:03] Configuring simulation cache folder on parallel workers... [17-Dec-2020 14:50:03] Loading model on parallel workers... [17-Dec-2020 14:50:14] Running simulations... [17-Dec-2020 14:51:05] Completed 1 of 3 simulation runs [17-Dec-2020 14:51:05] Completed 2 of 3 simulation runs [17-Dec-2020 14:51:06] Completed 3 of 3 simulation runs [17-Dec-2020 14:51:07] Cleaning up parallel workers... Elapsed time is 76.454042 seconds.
6. После завершения моделирования закройте окна инспектора данных моделирования.
Используйте инспектор данных моделирования для проверки результатов. Можно использовать пользовательский интерфейс или, в качестве альтернативы, функции командной строки.
1. Откройте инспектор данных моделирования. На панели инструментов Simulink на вкладке Simulation в разделе Review Results выберите Data Inspector.
В Инспекторе данных моделирования выберите Импорт.

В диалоговом окне «Импорт» снимите флажок logsout. Выбрать simout(1), simout(2), и simout(3). Выберите Импорт.

Используйте инспектор данных моделирования для проверки результатов.
2. В качестве альтернативы используйте эти команды MATLAB для построения графика продольной скорости, угла поворота рулевого колеса, бокового ускорения, продольного положения и бокового положения.
for idx = 1:numExperiments % Create sdi run object simoutRun(idx)=Simulink.sdi.Run.create; simoutRun(idx).Name=['Velocity = ', num2str(vmax(idx))]; add(simoutRun(idx),'vars',simout(idx)); end sigcolor=[0 1 0;0 0 1;1 0 1]; for idx = 1:numExperiments % Extract the lateral acceleration, position, and steering xsignal(idx)=getSignalByIndex(simoutRun(idx),22); xsignal(idx).LineColor =sigcolor((idx),:); ysignal(idx)=getSignalByIndex(simoutRun(idx),23); ysignal(idx).LineColor =sigcolor((idx),:); msignal(idx)=getSignalByIndex(simoutRun(idx),255); msignal(idx).LineColor =sigcolor((idx),:); ssignal(idx)=getSignalByIndex(simoutRun(idx),251); ssignal(idx).LineColor =sigcolor((idx),:); asignal(idx)=getSignalByIndex(simoutRun(idx),259); asignal(idx).LineColor =sigcolor((idx),:); end Simulink.sdi.view Simulink.sdi.setSubPlotLayout(5,1); for idx = 1:numExperiments % Plot the lateral position, steering angle, and lateral acceleration plotOnSubPlot(msignal(idx),1,1,true); plotOnSubPlot(ssignal(idx),2,1,true); plotOnSubPlot(asignal(idx),3,1,true); plotOnSubPlot(xsignal(idx),4,1,true); plotOnSubPlot(ysignal(idx),5,1,true); end
Результаты аналогичны этим графикам, которые показывают, что наибольшее боковое ускорение происходит, когда скорость транспортного средства составляет 45 миль/ч.

Для дальнейшего изучения результатов используйте эти команды для извлечения бокового ускорения, угла поворота и траектории транспортного средства из simout объект.
1. Извлеките боковое ускорение и угол поворота. Постройте график данных. Результаты аналогичны этому графику.
figure for idx = 1:numExperiments % Extract Data log = get(simout(idx),'logsout'); sa=log.get('Steering-wheel angle').Values; ay=log.get('Lateral acceleration').Values; firstorderfit = polyfit(sa.Data,ay.Data,1); gain(idx)=firstorderfit(1); legend_labels{idx} = [num2str(vmax(idx)), ' mph: Gain = ', ... num2str(gain(idx)), ' m/(deg s^2)']; % 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

2. Извлеките траекторию движения транспортного средства. Постройте график данных. Результаты аналогичны этому графику.
figure for idx = 1:numExperiments % Extract Data log = get(simout(idx),'logsout'); x = log{1}.Values.Body.InertFrm.Cg.Disp.X.Data; y = log{1}.Values.Body.InertFrm.Cg.Disp.Y.Data; legend_labels{idx} = [num2str(vmax(idx)), ' mph']; % Plot vehicle location axis('equal') plot(y,x) 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

[1] J266 SAE. Процедуры испытания легковых автомобилей и грузовых автомобилей малой грузоподъемности в установившемся режиме. Уоррендейл, Пенсильвания: SAE International, 1996.
polyfit | Simulink.SimulationInput | Simulink.SimulationOutput