Определите размер шага

Для первого шага в рабочей Модели реального времени подготовки вы получаете результаты симуляции ссылки версии вашей модели Simscape™ с переменной степенью. Результаты ссылки обеспечивают базовую линию, по которой можно оценить точность модели при ее изменении. В этом примере показано, как анализировать результаты ссылки и размер шага, который принимает решатель переменного шага:

  • Оцените максимальный размер шага, который можно использовать для симуляции с фиксированным шагом

  • Идентифицируйте события, которые могут ограничить максимальный размер шага

Разрывы и быстрые изменения требуют небольшого шага размеров для точного захвата этой динамики. Максимальный размер шага, который можно использовать для симуляции с фиксированным шагом, должен быть достаточно маленьким, чтобы гарантировать точные результаты. Если ваша модель содержит такую динамику, то не исключено, что необходимый размер шага для точных результатов, Tsmax, слишком мал. Слишком маленький размер шага не позволяет вашему компьютеру в реальном времени закончить вычисление решения для любого заданного шага симуляции.

Анализ в этом примере помогает вам оценить максимальный размер шага, который могут использовать решатели с фиксированным шагом и который все еще получает точные результаты. Можно также использовать анализ, чтобы определить, какие элементы влияют на максимальный размер шага для точных результатов. Для получения дополнительной информации о том, как получение ссылочных результатов и выполнение анализа размера шага помогают вам подготовить модель к симуляции в реальном времени, см. Раздел «Цели подготовки модели».

  1. Чтобы открыть образец модели, в MATLAB® в командной строке введите:

    model = 'ssc_pneumatic_rts_reference';
    open_system(model)

  2. Симулируйте модель:

    sim(model)
  3. Создайте семилогарифмический график, который показывает, как размер шага для решателя изменяется во время симуляции.

    h1 = figure;
    semilogy(tout(1:end-1),diff(tout),'-x')
    title('Solver Step Size')
    xlabel('Time (s)')
    ylabel('Step Size (s)')

    Для большей части симуляции размер шага больше, чем значение Tsmax на графике. Соответствующее значение, ~ 0,001 секунды, является предполагаемым максимальным размером шага для достижения точных результатов во время симуляции с моделью на фиксированном шаге. Чтобы увидеть, как сконфигурировать размер шага для решателей с фиксированным шагом для симуляции в реальном времени, смотрите Выбор размера шага и Количество итераций.

    The x маркеры на графике указывают время, которое решатель взял, чтобы выполнить один шаг в этот момент симуляции. Данные размера шага дискретны. Линия, которая соединяет дискретные точки, существует только для того, чтобы помочь вам увидеть порядок индивидуальных времен выполнения в течение симуляции.

    Большое уменьшение размера шага указывает, что решатель обнаруживает событие пересечения нулем. Обнаружение пересечения нулем может произойти, когда значение сигнала изменяет знак или переходит порог. Симуляция уменьшает размер шага, чтобы точно захватить динамику для события пересечения нулем. После того, как решатель обрабатывает динамику для события пересечения нулем, размер шага симуляции может увеличиться. Решатель может сделать несколько небольших шагов, прежде чем вернуться к размеру шага, который предшествует событию пересечения нулем. Области в красных полях содержат изменения во времени восстановления для решателя переменного шага.

  4. Чтобы увидеть различное поведение после пересечения нуля, увеличьте изображение области в красном поле во время (t) = ~ 1 секунду.

     Скрипт для масштабирования

    После t = 1,005 секунд размер шага уменьшается с ~ 10e-3 секунд до менее чем 10e-13 секунд, чтобы захватить событие. Размер шага быстро увеличивается до ~ 10e-5 секунд, а затем медленно до ~ 10e-4 секунд. Размер шага уменьшается, чтобы захватить второе событие и быстро восстанавливается, а затем медленно до размера шага от до первого события. Медленные скорости восстановления указывают, что симуляция использует небольшие шаги, чтобы захватить динамику элементов в вашей модели. Если необходимый размер шага ограничивает максимальный размер фиксированного шага достаточно маленьким значением, то переполнение может произойти при попытке симуляции на компьютере в реальном времени.

    Типы элементов, которые требуют небольшого размера шага:

    • Элементы, которые вызывают разрывы, такие как жёсткие упоры и трение скольжения

    • Элементы, которые имеют небольшие временные константы, такие как малые массы с ненапряженными, жесткими пружинами и гидравлические цепи с маленькими сжимаемыми объемами

    Размер шага восстанавливается быстрее после того, как он замедляется, чтобы обработать событие, которое происходит до t = 1,02 секунды. Это событие с меньшей вероятностью потребует размеров небольшого шага для достижения точных результатов.

  5. Чтобы увидеть различные типы медленного восстановления решателя, увеличьте изображение области в красном поле на t = ~ 4,2 секунды.

    h1;
    xZoomStart2 = 4.16;
    xZoomEnd2 = 4.24;
    yZoomStart2 = 10e-20;
    yZoomEnd2 = 10e-1;
    axis([xZoomStart2 xZoomEnd2 yZoomStart2 yZoomEnd2]);

    Так же, как существуют различные типы событий, которые заставляют решатели замедляться, существуют различные типы медленного восстановления решателя. События, которые происходят непосредственно перед t = 4,19 и 4,2 секунды, включают пересечения нулем. Решатель делает ряд постепенно больших шагов, когда он достигает размера шага от до события. Большое количество очень небольших шагов, которые следуют за пересечением нуля в медленном восстановлении A, указывают, что элемент, который вызвал пересечение нуля, также численно жесток.

    Более быстрое увеличение размера шага после события, которое происходит в t = 4,2 секунды, указывает, что элемент, который вызвал пересечение нуля перед медленным восстановлением B, не так жесток, как событие при медленном восстановлении A.

  6. Чтобы увидеть результаты, откройте Simscape Results Explorer.

    sscexplore(simlog)

  7. Осмотрите угловую скорость. В окне Simscape Results Explorer, в иерархии дерева журнала симуляции, выберите Measurements > Ideal Rotational Motion Sensor > w.

  8. Чтобы добавить график потока газа, выберите Measure Flow > Pneumatic Mass & Heat Flow Sensor, а затем используйте Ctrl + нажатие кнопки, чтобы выбрать G_ps.

    Медленное время восстановления происходит, когда симуляция инициализируется, и приблизительно в t = 1, 4, 5, 8 и 9 секунд. Эти периоды небольших шагов совпадают с этими временами:

    • Скорость двигателя около нуля об/мин (время симуляции t = ~ 1, 5 и 9 секунд)

    • Изменение скорости двигателя инициируется с установившейся скорости на новую (время t = ~ 4 и 8 секунд)

    • Изменение скорости потока жидкости инициируется с установившейся скорости на новую скорость потока жидкости (время t = ~ 4 и 8 секунд)

    • Объемная скорость потока жидкости около нуля кг/с (t = ~ 1, 4 и 5 секунд)

    Эти результаты показывают, что медленное восстановление размера шага, скорее всего, связано с элементами модели, которые включают трение или которые имеют небольшие сжимаемые объемы. Чтобы увидеть, как идентифицировать проблемные элементы и изменить их, чтобы увеличить скорость симуляции, смотрите Уменьшение Численной Жесткости и Сокращение Пересечений Нуля.

См. также

Похожие примеры

Подробнее о