Моя простая модель Simulink работает слишком быстро

Я разработал простые диаграммы simulink и stateflow на Matlab. Он работает отлично! Но у меня есть две проблемы:

1) Модель работает слишком быстро. Время перехода между двумя состояниями удивительно быстрое, чего я не вижу. Я пытался изменить некоторые параметры, но мне это не удалось. Что я должен изменить (может быть, в параметрах конфигурации модели?), чтобы сделать его медленнее, чтобы мы могли видеть переходы?

2) В настоящее время у меня просто постоянный ввод. Как я могу установить ряд констант, возможно, периодических? Я предполагаю, что должен быть специальный компонент. Мне нужно, например, ввести 0 во время 0, затем 1 через 1 минуту, 2 во время 3 и т. д.?

введите здесь описание изображения

введите здесь описание изображения


person Community    schedule 17.11.2014    source источник
comment
Возможно, расширьте масштаб на Scope и визуализируйте график, также вы можете уменьшить время остановки моделирования с 1000,0 до, скажем, 1 или 2 или даже меньше.   -  person P0W    schedule 17.11.2014


Ответы (3)


1) У меня были те же проблемы с некоторыми интерактивными симуляциями, когда процессор заставлял их работать слишком быстро, чтобы пользователь мог взаимодействовать. Использование блока выполнения Simulink в реальном времени принес решение, несмотря на то, что оно сильно загружает процессор из-за используемого решения. При этом, если вы определите 10-секундную симуляцию, она продлится именно столько. Если вы не хотите проходить через это бремя, просто удлините симуляцию или тщательно проверьте области на протяжении всей симуляции (отключив ограничение точек в области, нажав кнопку «Параметры», а затем сняв флажок «История данных» / «Ограничить точки данных до последнего». ..)

2) Simulink/Источники/Повторяющаяся последовательность. Вы определяете векторы времени и значение для вывода за это время. Имейте в виду, что блок интерполирует значения между двумя точками, поэтому, если вы хотите изменить от 2 до 3 в T=1s, вы должны определить две точки, одну U=2 в T=1s и другую U=3 в T=1s Т=1с. Например, 0 в (0..1), 5 в (1..2), 10 в (2..3) и 15 в (3..4):

Time values:   [0 1 1 2 2  3  3  4]
Output values: [0 0 5 5 10 10 15 15]
person Manex    schedule 17.11.2014
comment
Отладчик Stateflow также позволяет задерживать анимацию. - person am304; 17.11.2014
comment
@Manex Ошибка! Временные ценности должны быть монолитными; два последовательных числа, по-видимому, не могут быть одинаковыми. - person ; 21.11.2014

Если вы просто хотите проверить переходы, вам не нужно делать это медленнее. Вы можете попробовать использовать режим отладки, доступный в Stateflow, и увидеть, как работает ваша модель шаг за шагом.

person oro777    schedule 17.11.2014
comment
Спасибо. Вы случайно не знаете, можем ли мы также проверить сгенерированный код C помимо самой модели? Мне нужно проверить доступность; что определенное состояние (или часть кода) никогда не будет достигнуто. - person ; 22.11.2014
comment
@ArianaJasmine Это можно сделать с помощью Simulink Design Verifier, который проверит дизайн в Simulink (не код) и Polyspace Code Prover для кода. Оба они являются (дорогими) надстройками к Simulink. - person am304; 03.12.2014

Параметр для замедления анимации Stateflow (чтобы, например, вы могли лучше видеть переходы между состояниями во время моделирования) находится в меню Display в строке меню Simulink.

В последнем выпуске (R2014b) этот параметр находится в разделе Отображение->Анимация Stateflow (а также в разделе Simulation->Анимация Stateflow). (Подробнее см. здесь.)

В более старых версиях он находится в разделе Отображение->Отображение данных в моделировании->Задержка анимации диаграммы (сек) (хотя я не уверен на 100%, когда этот параметр был перемещен в меню).

Обратите внимание, что вы должны находиться внутри диаграммы, чтобы эти параметры были включены в меню.

person grungetta    schedule 19.11.2014