Инициализация в Simulink

Я работаю над моделью температуры двигателя. Я застрял в точке. Существует сигнал с именем tred, который необходимо отфильтровать с помощью фильтра нижних частот, чтобы получить окончательный выходной сигнал как tredf. Проблема в том, что tred начинается с 90 ° C, но после фильтрации tredf начинается с 0. Я сравниваю свою модель simulink. с другой моделью реального времени. Кажется, все в порядке, кроме этой инициализации. Я хочу, чтобы мой отфильтрованный сигнал tredf также начинался с 90°C. Фильтр, который я использую, представляет собой фильтр PT1 (пропорциональная передача 1-го порядка) (низкочастотный), который получен из самостоятельно созданной библиотеки.
Фильтр имеет следующие 6 входов:

  1. u(k), то есть вход, а именно tred.
  2. T т. е. постоянная времени фильтра, а именно 500.
  3. y(0), то есть начальное значение, а именно tred.
  4. reset - подключен к биту (сбрасывается, когда бит ложный).
  5. вычисление - подключено к тому же биту (вычисляет вывод, когда бит истинен).
  6. dT - время выборки/инкремента - я установил его на 0,1.

Это описание блока PT1 для лучшего понимания:

  • Блок PT1 представляет собой ФНЧ с дискретным временем и постоянной времени T, алгоритм интегрирования работает по принципу Эйлера-вперед. Постоянная времени автоматически ограничивается в диапазоне их значений (T > = dT). Вход y(0) является цифровым фильтром нижних частот, указывающим начальное значение, поскольку это начальное значение может быть в любой момент импульсом при приеме сброса-возврата. Блок PT1 должен явно содержать ввод с поддержкой вычислений.

Первые 5 входов фильтра фиксированы, и я могу установить только dT. Есть ли у кого-нибудь идеи, что я делаю неправильно и как выход, т.е. tredf, также начинается с 90 ° C?


person Aakash Sehgal    schedule 05.01.2016    source источник
comment
Похоже, что вход y (0) должен быть установлен на 90, что вы используете?   -  person Phil Goddard    schedule 05.01.2016
comment
Нет, для него нельзя установить значение 90, так как задан вход для y(0). Я попробовал и понял проблему. y(0) — это не начальное значение, а начальное значение при сбросе. Поэтому всякий раз, когда он сбрасывается, он начинается с начального значения. Но фильтр не был инициализирован, поэтому simulink всегда начинается с 0. Мне нужно как-то сбросить его для самого первого Input, чтобы он автоматически принимал значение Initial. Но я не понял как? любая идея @PhilGoddard   -  person Aakash Sehgal    schedule 06.01.2016


Ответы (1)


Возможно, вы захотите проверить это:

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

person Akanksha    schedule 13.07.2016