Как изменить переменные во времени в Simulink? - PullRequest
1 голос
/ 21 апреля 2011

У меня есть некоторая обработка (перемещение колесной пары). У колесной пары есть масса, она переменная и она декларируется в файле init.m (например, M=1;)

Теперь я хочу, чтобы в этом процессе масса колесной пары менялась каждые 2 секунды. Как сохранить новое значение массы в переменной M из Simulink?

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Можете ли вы просто использовать что-то вроде блока Случайное число для генерации этих значений?Вы можете дать среднее значение и дисперсию.

Если это не сработает для вас, следующая простейшая вещь - это использовать либо S-функцию , написанную в MATLAB, либо функцию MATLAB блок,Функция будет вызываться на каждом временном шаге, и вы можете запустить любой код MATLAB для вычисления следующего значения вывода.

2 голосов
/ 22 апреля 2011

Для меня я нашел решение.

Я использовал переменную M для хранения массы объекта. И из simulink я только что вызвал M в вызовах функций. Например:

enter image description here

Но вызов функции Rho в блоке MATLAB Function выглядит так: enter image description here

Этот подход работает, только если M является статическим. Теперь я хочу динамически изменить M. Итак, сначала я решил, что могу сделать M глобальным и изменить его. Я написал функцию, создал функциональный блок, который вычислял новое значение M и устанавливал его для глобальной переменной M. Но это не сработало. Вы не можете одновременно использовать и изменять одну глобальную переменную в Simulink.

Так что я решил изменить весь подход. Поскольку M теперь не является статическим параметром, я должен сделать M в качестве сигнала. Так что теперь это выглядит так:

enter image description here

Здесь в блоке Constant M получает из рабочей области (или из некоторого файла init.m), а затем Simulink работает не с переменной M из рабочей области, а с локальным сигналом M

2 голосов
/ 21 апреля 2011

Лучшее решение, чем сохранение переменной в рабочей области, изменение ее в рабочей области и чтение ее обратно в симуляцию (я даже не уверен, разрешено ли это), - это изменить ее внутри самой симуляции и использовать эту переменную.Если бы вы лучше объяснили вашу проблему, может быть, я смогу помочь вам больше.

...