How can I implement an improper transfer function (without delays) in Simulink?

51 次查看(过去 30 天)
I have a system that I would like to model in Simulink. If expressed as a transfer function, it would have an improper form, with more zeros than poles. I do not have any internal delays in the transfer function.
The Transfer Function block from Simulink and the LTI System block from the Control System Toolbox both return errors when I try to use this improper transfer function.

采纳的回答

MathWorks Support Team
编辑:MathWorks Support Team 2020-5-11
The ability to implement an improper transfer function (without delays) is not available in the Transfer Function and LTI System blocks.
To work around this issue, you can implement the transfer function using the Derivative and Integrator blocks.
An example/workaround for improper transfer functions (without delays) is as follows:
Consider the following transfer function:
>> num = [4.03*.064*1.06e-5 .064 4.30];
>> den = [.064*1.06e-5 1];
>> tf(num,den)
ans =
2.734e-06 s^2 + 0.064 s + 4.3
-----------------------------
6.784e-07 s + 1
We can do a partial fraction decomposition:
>> [r,p,k] = residue(num,den);
Now the 3 systems can be implemented in Simulink as:
% SYSTEM 1: Implemented as an "LTI System" block
% https://www.mathworks.com/help/control/ref/ltisystem.html
sys1 = tf(r(1),[1,-p(1)]);
% SYSTEM 2: Implemented as a gain and a du/dt block
% https://www.mathworks.com/help/simulink/slref/derivative.html
k(1)*s
% SYSTEM 3: Implemented as a gain block
k(2)
These three systems should be summed in parallel. For instance, a basic setup with a "Step" input may look like:

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 PID Controller Tuning 的更多信息

产品


版本

R14SP1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by