Использование функции передачи System Identification Toolbox с Simulink
Я полагаю, что я делаю что-то в корне неправильно, когда пытаюсь импортировать и тестировать передаточную функцию в Simulink, которая была создана с помощью System Identification Toolbox (SIT).
Чтобы дать простой пример того, что я делаю. У меня есть вход, который представляет собой смещенную синусоидальную волну от 12 секунд до 25 секунд с амплитудой 1 и частотой 1,5рад / с, которая дает измеренный выходной сигнал.
Я использовал SIT для создания простой двухполюсной 1-нулевой передаточной функции, которая дает следующее согласие:
Затем я попытался импортировать эту передаточную функцию в Simulink для исследования в следующей конфигурации, которая имеет синусоидальный вход с частотой 1,5рад / с и стартовый t=12. Системный блок LTI относится к переменной передаточной функции в рабочей области:
Когда я запускаю эту симуляцию в течение 13 секунд, входные данные для блока соответствуют ожидаемым, но сигнал функции после передачи показывает слабое согласие с тем, что ожидается, и на порядок меньше.
до:
сообщение:
Может ли кто-нибудь дать понять, где я иду не так и почему вывод из tf
в simulink показывает небольшое сходство с выводом модели, отображаемым в SIT. У меня есть базовое понимание теории управления, но я изо всех сил пытаюсь понять это.
1 ответ
Это может быть связано с различными начальными условиями, используемыми в SimuLink и SI Toolbox, последний должен оценивать начальные условия с моделью, в то время как Simulink не делает ничего особенного с начальными условиями, если вы сами не зададите их.
Мне кажется, что ваши исходные сигналы находятся в периодическом режиме, так как ваш выход выглядит почти как синусоида. В периодическом режиме начальные условия мало влияют. Вы можете проверить мое предположение, смоделировав вашу модель в течение более длительного периода времени: если в конце ваш сигнал достигнет правильной амплитуды и фазового запаздывания, как в ваших данных, вы будете знать, что начальные условия были неправильными. В любом случае, вы можете получить примерное начальное состояние с панели инструментов, я думаю, используя InitialState
свойство результирующего объекта.
Другая вещь, которая может пойти не так, это дискретизация времени, которую вы используете в Simulink, если вы оценили модель с непрерывным временем (одна в переменной Лапласа) s
, не в z
или же q
).
редактировать: в этом случае я бы порекомендовал вам проверить, что Simulink использует для дискретизации вашей модели CT, используя c2d
в MATLAB и настройки, подобные приведенной ниже в Simulink. В MATLAB вы также можете "смоделировать" ответ на модель CT, используя lsim
, где вы должны указать метод дискретизации.
Эта установка позволяет вам загружать в модель CT и дискретизированный вариант (в данном случае представление в пространстве состояний). Сравнивая сигналы, вы можете увидеть, является ли метод дискретизации, который вы используете, тем же, который использует SimuLink (это зависит от метода интеграции, который вы задали в настройках).