simulink transfer function with time constant changing during simulation

I'm trying to create in Simulink a transfer function, say 1/(T1*s+1), with T1 changing during simulation depending on various conditions. Since I cannot change manually the value for T1 the use of Transfer Fcn block is not possible. My question is how can I implement this transfer function?

 Réponse acceptée

Assume your input is x and output is y:
y=x/(T1*s+1)
y*T1*s+y=x
y*T1*s=x-y
y=(x-y)*(1/s)*(1/T1)
1/s is an integrator, use a negative feedback to get (x-y), 1/T1 is the gain, or can be a multiplication block. You can construct your transfer function now.

7 commentaires

Thank you for your answer, but unfortunately, although is correct, it's not applicable for my situation. The value for T1 is a result of an interpolation within a s-function and it changes during simulation depending on some conditions, so I cannot pass it (manually) to a Transfer Fcn block or to a Gain block. I have to find a way to implement a transfer function within a s-function or to pass the value of T1 (automatically) to a Simulink block and use that block to implement the transfer function. Unfortunately I haven't found this block, I don't know if it exists.
Use the "Divide" block from the "Math Operations" library. Connect the first input to the output of the "Integrator" block, which effectively is (x-y)*(1/s), connect the second input to your S-function output, which is effectively T1, you then get (x-y)*(1/s)/T1
That seems the way to go. Thank you very much.
Jeremy Simpson
Jeremy Simpson le 25 Mai 2017
Modifié(e) : Jeremy Simpson le 25 Mai 2017
For others who come across this, you can also include an initial condition (see block diagram).
first,this answers is vrey valuable.But i have a question further.How about change two parameters(T1 T2) in the same time.
Is it a transfer function, such as k/((T1*s+1)(T2*s+1)) or is it another situation?
How would you acheive this with the function looking more like this: K/(T1s^2+T2s+1) ? I am trying to keep it all in the transfer function block and change the denominator coefficient to include these variables.

Connectez-vous pour commenter.

Plus de réponses (1)

Marian
Marian le 26 Mar 2020
The transfer function K/(T1s^2+T2s+1) is associated with the differential equation T1*y'' + T2*y' + y = K*u.
It can be written: y'' = (K*u - T2*y' - y)/T1
So the transfer function can be implemented like in the figure
This is a subsystem like
The transfer function is implemented as a subsystem with its parameters (K, T1, T2) available for change from external blocks.
You can compare the answer of this subsytem with the answer of a transfer function block. In this example, the transfer function is 2/(12s^2+7s+1). You will see that are the same.
I hope this is what you looking for.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by