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

29 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 11 Mag 2020
Modificato: MathWorks Support Team il 11 Mag 2020
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:

Più risposte (0)

Prodotti


Release

R14SP1

Community Treasure Hunt

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

Start Hunting!

Translated by