В основном мне нужно сделать k * (T * s + 1) передаточный функциональный блок в Simulink. В Matlab это просто, я просто делаю знаменатель меньше, чем числитель, и все в порядке. Но когда я пытаюсь сделать то же самое с блоком Simulink, это дает мне ошибку. [знаменатель не должен быть меньше числителя. Так что ты думаешь?
Как сделать линейную передаточную функцию в Simulink?
Ответы (1)
То, что вы описываете, содержит чистый производный компонент (kTs
). Численные решатели не могут работать с этими компонентами, и природа не может их реализовать. Интуитивно чистый производный блок в Simulink будет иметь неоправданно большую реакцию на численные ошибки при очень малых временных шагах. Если вам удобно работать с графиками Боде, производная составляющая имеет сколь угодно большой отклик на высоких частотах.
При использовании производного компонента вы обычно выбираете частоту излома на кривой отклика. Это эквивалентно применению фильтра нижних частот ко входам перед операцией производной. Если частота фильтра нижних частот достаточно быстрее, чем динамика системы, то вы получаете производное поведение на интересующих вас частотах, при этом имея реализуемую систему.
Таким образом, чтобы справиться с этим в Simulink, вы можете либо изменить передаточную функцию самостоятельно, либо использовать один из блоков Simulink, который поддерживает производные, например блок «производный» или блок «ПИД-регулятор». (Тогда Simulink должен работать за кулисами, чтобы это работало.)
Например, перепишите уравнение как:
kTs + k
И используйте четыре блока, например:
---+---GAIN=kT----DERIVATIVE----SUM--
| |
+---GAIN=K--------------------+