У вас есть две вещи, которые считают время и, кажется, думают, что одна из них контролирует время в другой.Это не так.
В частности, у вас есть
«Таймер» в MATLAB, который вы просили запускать определенный фрагмент кода один раз в секунду в течение 10секунд.(Оба времени измеряются в настенных часах.)
Некоторый код MATLAB, который загружает модель Simulink (если она еще не загружена);запускает модель (если она еще не запущена);и получает значение на выходе блока Clock
, который находится в модели (он делает это только один раз при каждом выполнении кода).Как и в случае с любой моделью Simulink, она будет выполняться так быстро, как только может, пока не будет достигнуто время окончания моделирования (или что-то еще остановит его).
Таким образом, в вашем случае каждый разTimer
выполняется, моделирование запускается, значение / вывод значения выводится / распечатывается (что, поскольку это происходит очень быстро после запуска модели, выводит, что время моделирования равно 0);и затем (поскольку у вас есть очень простое моделирование, которое не требует времени для завершения), моделирование завершается.
Вышеуказанное происходит 10 раз, каждый раз печатая значение часов в начале моделирования,т. е. 0.
Чтобы увидеть другие значения, вам нужно, чтобы ваша симуляция продолжалась дольше - занимая как минимум 1 секунду времени настенных часов.Например, если вы измените решатель на фиксированный шаг и добавите очень маленький размер шага, например, 0,000001, то для моделирования, вероятно, потребуется несколько секунд (времени настенных часов).
Теперь вам следуетсм. Timer
печать в разное время, так как иногда модель будет по-прежнему выполняться при вызове кода (1 секунда времени настенных часов позже).
Но, по сути, вы должны понимать, что Timer
неконтролирует, и не зависит от времени моделирования, и наоборот.
(Я не уверен насчет проблемы с использованием Ramp
, но подозреваю, что это связано с Clock
, являющимся фундаментальным блокомв то время как Ramp
является подсистемой в маске.)