Размер шага и количество итераций, заданных для решателей в модели, влияют на скорость и точность моделирования в реальном времени. Если уменьшить размер шага или увеличить число итераций, результаты будут более точными, но моделирование будет выполняться медленнее. При увеличении размера шага или уменьшении числа итераций моделирование выполняется быстрее, но результаты менее точны.
Чтобы оптимизировать модель для моделирования на целевой машине в реальном времени, укажите комбинацию размера шага (Ts) и количества итераций (N), которая обеспечивает приемлемую точность и скорость, чтобы избежать превышения. Как и в случае решателя, можно указать различные комбинации значений Ts и N для глобального решателя Simulink ® и для каждой независимой сети Simscape™ в модели .
Этот рабочий процесс помогает выбрать размер шага и количество итераций для моделирования в реальном времени.
Получение эталонных результатов путем выполнения моделирования с переменным шагом на модели гидравлического привода.
Используйте измененную версию модели для определения максимального размера шага, используемого для достижения достаточно точных результатов моделирования с фиксированным шагом и фиксированной стоимостью. Для моделирования в режиме реального времени требуется моделирование с фиксированным шагом и фиксированными затратами.
Укажите глобальные и локальные настройки решателя с фиксированным шагом и фиксированной стоимостью для измененной версии модели.
Выполните моделирование по времени с измененной моделью и оцените точность результатов.
Настройте размер шага и количество итераций, чтобы найти параметры решателя, которые обеспечивают необходимую скорость и точность моделирования в реальном времени.
Для получения эталонных результатов смоделируйте исходную версию модели гидравлического привода.
Для открытия модели гидравлического привода в командной строке MATLAB ® введите:
model = 'ssc_hydraulic_actuator_digital_control';
open_system(model)

Модель настроена на ограничение точек данных. Чтобы настроить модель для регистрации всех точек dat, откройте параметры конфигурации модели и на панели Simscape снимите флажок Ограничить точки данных (Limit data points).
Моделирование модели.
sim(model)
Извлеките данные о давлении и времени шага моделирования из зарегистрированного узла Simscape.
simlogRef = simlog_ssc_hydraulic_actuator_digital_control;
pRefNode = simlogRef.Hydraulic_Actuator.Hydraulic_Cylinder.Chamber_A.A.p;
pRef = pRefNode.series.values('Pa');
tRef = pRefNode.series.time;Постройте график размера шага.
h1 = figure; semilogy(tRef(1:end-1),diff(tRef),'-x') title('Solver Step Size') xlabel('Time (s)') ylabel('Step Size (s)')

Максимальный размер шага (Tsmax) для получения точных результатов в реальном времени для исходной модели составляет приблизительно 1e-2 секунды. Сведения об определении Tsmax см. в разделе Определение размера шага.
Постройте график результатов моделирования.
h2 = figure; plot(tRef,pRef, 'b-') h2Legend1 = legend({'Reference'},'Location','southoutside'); title('Cylinder Pressure') xlabel('Time (s)') ylabel('Pressure (Pa)')

В модифицированной версии модели гидравлического привода можно изменить значение Tsmax, максимальный размер шага для достижения точных результатов моделирования в реальном времени.
Откройте модифицированную модель гидравлического привода.
ssc_hydraulic_actuator_HIL

Эта версия гидравлического привода содержит дискретизированный разделенный контроллер. Локальный решатель для подсистемы гидравлического привода включен для моделирования с фиксированным шагом и фиксированной стоимостью. Размер шага параметризуется (ts) так, чтобы можно было вносить коррективы решателя, уменьшающие вероятность возникновения превышения. Пример дискретизации контроллера для гидравлического привода см. в разделе Гидравлический привод, сконфигурированный для тестирования HIL.
Для определения максимального размера шага, используемого для получения точных результатов моделирования в реальном времени, выполняется моделирование с помощью глобального решателя с переменными шагами. Чтобы настроить измененную модель для моделирования с переменным шагом с помощью глобального решателя, отключите конфигурацию локального решателя. В подсистеме Гидравлический привод в диалоговом окне Блок конфигурации решателя снимите флажок Использовать локальный решатель.
Моделирование модели.
Извлеките данные о давлении и времени из зарегистрированного узла Simscape.
simlog0 = simlog_ssc_hydraulic_actuator_HIL;
pNodeSim0 = simlog0.Hydraulic_Actuator.Hydraulic_Cylinder.Chamber_A.A.p;
pSim0 = pNodeSim0.series.values('Pa');
tSim0 = pNodeSim0.series.time;Постройте график размера шага к рисунку, который содержит данные размера шага для исходной модели.
figure(h1) hold on semilogy(tSim0(1:end-1),diff(tSim0),'--x', 'Color','r',... 'LineWidth',.1,'MarkerSize',5) title('Solver Step Size') xlabel('Time (s)') ylabel('Step Size (s)') h1Legend1 = legend({'Reference','Modified'},... 'Location','southoutside');

Для дискретизированной модели Tsmax составляет от 1e-2 до 1e-3 секунд.
Чтобы уменьшить количество шагов для поиска оптимальных параметров решателя моделирования в реальном времени, параметризуйте конфигурацию решателя с переменными рабочей области. В дискретной модели гидравлического привода размер шага для конфигурации локального решателя задается как переменная рабочего пространства ts. В этом примере переменные рабочей области также используются для параметризации глобального размера шага (tsG) и локального числа нелинейных итераций (N).
Для измененной модели в диалоговом окне параметров конфигурации модели задайте следующие настройки:
| Стекло | Параметр | Стоимость | Цель |
|---|---|---|---|
Решающее устройство | Напечатать | Fixed-step | Настройте глобальный решатель измененной модели для моделирования с фиксированным шагом. |
| Решающее устройство | discrete (no continuous states) | Настройте глобальный решатель в соответствии с состоянием контроллера. | |
Additional options > Фиксированный размер шага (основное время выборки) | tsG | Параметризовать глобальный размер шага. | |
Simscape | Предельные точки данных | Снимите флажок. | При уменьшении размера шага решателя количество точек данных, генерируемых при моделировании, увеличивается. Снимите флажок, чтобы обеспечить сбор всех данных, необходимых для оценки точности моделирования. |
Настройте локальный решатель для моделирования с фиксированным шагом. В подсистеме Гидравлический привод в диалоговом окне Блок конфигурации решателя выберите Использовать локальный решатель.
Для параметризации стоимости моделирования задайте для параметра Нелинейные итерации значение N.
Можно определить, подходят ли настройки решателя для моделирования в реальном времени, смоделировав модель, а затем оценив точность результатов и скорость моделирования. Чтобы оценить точность, сравните результаты с эталонными результатами и результатами других моделирования с фиксированным шагом и фиксированной стоимостью. Чтобы оценить скорость моделирования, сравните прошедшее время с указанным временем моделирования и с бюджетом выполнения моделирования. Если скорость или точность неприемлемы, отрегулируйте размер шага и количество итераций, чтобы модель могла работать в реальном времени.
Бюджет времени выполнения моделирования для этого примера составляет четыре секунды. Сведения об определении бюджета времени выполнения для модели см. в разделе Оценка затрат на вычисление.
Для первого моделирования укажите как глобальный, так и локальный размер шага в качестве максимально возможного значения Tsmax из графика шага. Задайте относительно большое значение размера шага для обоих решателей и три для количества нелинейных итераций для локального решателя.
ts = 1e-2; tsG = 1e-2; N = 3;
Выполнение моделирования фиксированных затрат с фиксированным шагом по времени.
tic; sim('ssc_hydraulic_actuator_HIL'); tSim1 = toc;
time1 = max(tSim1);Извлеките данные о давлении и времени моделирования из зарегистрированного узла Simscape.
simlog1 = simlog_ssc_hydraulic_actuator_HIL;
pNodeSim1 = simlog1.Hydraulic_Actuator.Hydraulic_Cylinder.Chamber_A.A.p;
pSim1 = pNodeSim1.series.values('Pa');
tSim1 = pNodeSim1.series.time;Постройте график результатов моделирования на рисунке, содержащем справочные результаты. Запишите прошедшее время в легенду фигуры.
figure(h2) hold on plot(tSim1, pSim1, 'g--') delete(h2Legend1) configSim1L = ['Local: Ts= ',num2str(ts),'s, N= ',num2str(N),'.']; configSim1G = [' Global: Ts= ',num2str(tsG),'s.']; timeSim1T = ['Time=',num2str(time1)]; cfgSim1 = [configSim1L,configSim1G,timeSim1T]; h2Legend2 = legend({'Reference',num2str(cfgSim1)},... 'Location','southoutside');

Истекшее время изменяется, поскольку зависит от непосредственной вычислительной мощности компьютера, на котором выполняется моделирование. Время, прошедшее с момента моделирования на 3.6-GHz процессоре Intel ® с 16-GB памятью. Легенда содержит прошедшее время моделирования на компьютере .
Моделирование заняло меньше времени, чем указанное время моделирования (10 с), поэтому оно выполняется быстрее, чем в реальном времени на компьютере разработчика. Прошедшее время также меньше, чем бюджет времени выполнения моделирования для этого примера (четыре секунды). Поэтому указанная конфигурация решателя обеспечивает приемлемый запас прочности для моделирования в реальном времени на целевой машине, которая предоставляет данные бюджета.
Увеличьте изображение точки перегиба, чтобы оценить точность результатов.
figure(h2) xStart = 0; xEnd = 10; yStart = 0; yEnd = 3.5e6; xZoomStart = 0.3; xZoomEnd = 0.6; yZoomStart = 2.6e6; yZoomEnd = 3.5e6; axis([xZoomStart xZoomEnd yZoomStart yZoomEnd])

Теоретические и эмпирические данные подтверждают справочные результаты. Точность результатов моделирования неприемлема, поскольку решатель колеблется до того, как он сходится в решении в ссылочных данных.
Если можно достичь допустимой точности результата, но моделирование выполняется слишком медленно для данного бюджета времени выполнения, увеличьте скорость, увеличив размер шага или уменьшив число итераций.
Когда вы находите комбинацию настроек решателя, которые обеспечивают достаточно точные результаты и скорость моделирования, соответствующую вашему бюджету времени выполнения, вы можете попытаться запустить модель на целевом компьютере в реальном времени, выполнив рабочий процесс аппаратного моделирования в цикле. Если не удается найти правильное сочетание настроек решателя, выполните рабочий процесс подготовки модели в реальном времени или увеличьте вычислительные возможности в реальном времени для повышения скорости и точности моделирования. Чтобы увеличить вычислительные возможности в реальном времени, обновите целевое оборудование или разбейте модель на разделы для параллельной обработки.
Обычно можно повысить точность, увеличив число итераций или уменьшив размер шага.
Попробуйте повысить точность, увеличив число итераций (N) до 10.
N = 10;
Запуск моделирования по времени.
tic; sim('ssc_hydraulic_actuator_HIL'); tSim2 = toc;
time2 = max(tSim2);
Извлеките данные о давлении и времени моделирования.
simlog2 = simlog_ssc_hydraulic_actuator_HIL;
pNodeSim2 = simlog2.Hydraulic_Actuator.Hydraulic_Cylinder.Chamber_A.A.p;
pSim2 = pNodeSim2.series.values('Pa');
tSim2 = pNodeSim2.series.time;Постройте график результатов.
figure(h2) hold on plot(tSim2, pSim2, 'r:') delete(h2Legend2) axis([xStart xEnd yStart yEnd]) configSim2L = ['Local: Ts= ',num2str(ts),'s, N= ',num2str(N),'.']; configSim2G = [' Global: Ts= ',num2str(tsG),'s.']; timeSim2T = ['Time=',num2str(time2)]; cfgSim2 = [configSim2L,configSim2G,timeSim2T]; h2Legend3 = legend({'Reference',num2str(cfgSim1),num2str(cfgSim2)},... 'Location','southoutside');

Моделирование выполняется достаточно быстро для моделирования в реальном времени, поскольку для его выполнения потребовалось меньше времени, чем для выполнения бюджета на четыре секунды.
Зумирование для оценки точности.
figure(h2) axis([xZoomStart xZoomEnd yZoomStart yZoomEnd])

В целом результаты не намного точнее результатов моделирования с меньшим количеством итераций.
Попробуйте повысить точность, уменьшив размер шага до 1e-3 секунд для локальных и глобальных решателей. Определить 3 для числа итераций (N).
ts = 1e-3; tsG = 1e-3; N = 3;
Запуск моделирования по времени.
tic; sim('ssc_hydraulic_actuator_HIL'); tSim3 = toc;
time3 = max(tSim3);
Извлеките данные о давлении и времени моделирования.
simlog3 = simlog_ssc_hydraulic_actuator_HIL;
pNodeSim3 = simlog3.Hydraulic_Actuator.Hydraulic_Cylinder.Chamber_A.A.p;
pSim3 = pNodeSim3.series.values('Pa');
tSim3 = pNodeSim3.series.time;Постройте график результатов.
figure(h2) hold on plot(tSim3, pSim3, 'k--') delete(h2Legend3) axis([xStart xEnd yStart yEnd]) configSim3L = ['Local: Ts= ',num2str(ts),'s, N= ',num2str(N),'.']; configSim3G = [' Global: Ts= ',num2str(tsG),'s.']; timeSim3T = ['Time=',num2str(time3)]; cfgSim3 = [configSim3L,configSim3G,timeSim3T]; h2Legend4 = legend... ({'Reference',num2str(cfgSim1),num2str(cfgSim2),num2str(cfgSim3)},... 'Location','southoutside');

Моделирование занимает больше времени, но достаточно быстро, учитывая четырехсекундный бюджет времени выполнения моделирования.
Увеличьте изображение, чтобы лучше оценить точность.
figure(h2) axis([xZoomStart xZoomEnd yZoomStart yZoomEnd])

Точность результатов является приемлемой. Для моделирования в реальном времени с измененной моделью используйте параметры решателя, которые обеспечивают приемлемую скорость и точность:
Три нелинейные итерации
Глобальные и локальные размеры шага 1e-3 секунды
Если можно достичь достаточно точных результатов, но моделирование выполняется слишком медленно для бюджета времени выполнения, увеличьте скорость, увеличив размер шага или уменьшив количество итераций.
Когда вы находите комбинацию настроек решателя, которая обеспечивает достаточно точные результаты и скорость моделирования, которая меньше, чем ваш бюджет времени выполнения, вы можете запустить модель на целевой машине в реальном времени. Чтобы запустить модель на целевой машине в реальном времени, выполните процесс моделирования оборудования в цикле.
Если не удается найти правильное сочетание настроек решателя для моделирования в реальном времени, повысьте скорость и точность моделирования, изменив область действия или точность модели. Дополнительные сведения см. в разделе Рабочий процесс подготовки модели в реальном времени.
Если вы не можете сделать модель доступной в реальном времени, изменив область или точность модели, увеличьте вычислительные возможности в реальном времени. Дополнительные сведения см. в разделе Обновление целевого оборудования и моделирование компонентов системы параллельно.