how to inverse transfer function simulink

13 views (last 30 days)
stanley ho
stanley ho on 24 Jun 2022
Edited: Paul on 25 Jun 2022
I am doing a feed forward controller for simulink
Gff = -Gd/Gp = -Gd * 1/Gp
However my Gd is first order while my Gp is second order, which means my numerator has a higher order than the denominator.
example:
-[0.5/(1+19s)] * [ (9(s^2)+3.159s+1) /1.4] * e^{-s)
that will be transfer function but I can't put it in the block cause the numerator has a higher order than the denominator.
any advise on I should do to put this into a transfer function block?
Thank you very much

Answers (1)

Paul
Paul on 24 Jun 2022
Edited: Paul on 25 Jun 2022
Hi Stanley.
First off you'll need to factor out the exp(-s) and implement that with a Transport Delay block.
For the non-proper transfer function that remains there are a few options.
By far, the best option if feasible is to combine that transfer function with another system such that the combined system is proper (or strictly proper). For example, suppose Gtf (after factoring out exp(-s)) is in series with another transfer function, call it H. If the product Gtf*H is proper, then implement that product in one block. Maybe some creativity here will be of benefit.
If that approach is infeasible or undesriable, then you can do sys = ss(GTF) (not including the exp(-s)). sys will be in descriptor state space (DSS) form and the A/B/C/D/E matrices can be accessed by sys.A, sys.B, etc. Those matrices can then be used in a Descriptor State Space block. However, this approach comes with the cost of simulating a differential-algebraic equation (DAE).
See this question and/or the doc for futher discussion on DSS sysems and DAE and for yet at least one other approach to solving this problem.

Community Treasure Hunt

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

Start Hunting!

Translated by