I suppose that in the following line you wanted to write the transfer function of a PI controller. I see many things here:
Gc = kc*c.tf([ti, 1], [ti, 0])
The parameters in the tf function are a polynomial in s, starting from the higher exponent.
For a PI controller, that function is (in your nomenclature where kc is the proportional constant)
Kc + Ki/s where Ki is Kc/ti. Taking Kc outside of the equation, then your transfer function is
Kc * (1+s/ti)/s
So the parameters of the Gc transfer function should be:
[1,1/t] and [1,0]
When you write that line as
Gc = kc*c.tf([1,1/ti], [0, 1])
It yields
{'RiseTime': 0.2562817118891321, 'SettlingTime': 0.562166335756806, 'SettlingMin': 0.09475317415593856, 'SettlingMax': 0.10505836575875488, 'Overshoot': 0, 'Undershoot': 126.60098522167488, 'Peak': 0.1330049261083744, 'PeakTime': 0.0, 'SteadyStateValue': 0.10505836575875488}
Now, you would get better answers if you put comments on your code and clarify what the variables mean and what you are intending to do.
I am just guessing that by Kc you wanted to writh the proportional constant but don't have a clue of what 0.9*3/23 means. Why are you using a delay, what "ti" is (may mean temperature or time, initial or integral).
And... by the way. if Gp is the process and Gc is the controller, you have the the transfer function for the closed loop wrong. It is a guess, you don't mention what you are trying to model
Instead of
Gc*Gp/(1+Gc*Gp)
The correct one , if Gc is the transfer function of a PI controller is:
Gp/(1+Gc*Gp)
If that is the case, the results are
{'RiseTime': 2.220933139341779, 'SettlingTime': 4.18058002699629, 'SettlingMin': 0.8064923681896231, 'SettlingMax': 0.8949416342412453, 'Overshoot': 0, 'Undershoot': 4.959759304365055, 'Peak': 0.8937741215508875, 'PeakTime': 6.907755278982151, 'SteadyStateValue': 0.8949416342412453}
Edited by Saml, 09 October 2022 - 07:09 PM.