syms s
J1 = 0.0024;
C1 = 0.007;
K12 = 2.8;
a = 0;
z = 1;
b = 1;
p = 1;
Kc = .1;
Kh = ((16000)*(1/(2*pi))*(32));
Ka = (10/32768)*2*0.1*3;
Gn = (Kh*Ka)/J1
Gd = s^2 + (C1/J1)*s + K12/J1
Cn = Kc*(a*s+z)
Cd = (b*s+p);
% Cs = Cn/Cd;
num = [Cn * Gn]
dem1 = Cd*Gd
dem2 = Cn * Gn
dem = (dem1 + dem2)
% Tf = num/(dem1 + dem2)
sys = tf(num,dem)
step(10000*sys)

 Respuesta aceptada

Reshma Nerella
Reshma Nerella el 10 de Nov. de 2020
Hi,
The numerator and denominator coefficients of transfer function should be a row vector or a cell array of row vectors. In the above of code
num = [Cn * Gn]
>> 6835652755764317/10995116277760
class(num)
>> 'sym'
You need to convert 'num' to a vector.
dem = (dem1 + dem2)
>> (s + 1)*(s^2 + (35*s)/12 + 3500/3) + 6835652755764317/10995116277760
class(dem)
>> 'sym'
Convert 'dem' to a vector of polynomial coefficients.
For example,
sys(s)=1/(2s2+3s+4);
Specify the numerator and denominator coefficients ordered in descending powers of s, and create the transfer function model.
numerator = 1;
denominator = [2,3,4];
sys = tf(numerator,denominator)
sys =
1
---------------
2 s^2 + 3 s + 4
%Continuous-time transfer function.
For more information on tf function, refer to the documentation page

7 comentarios

Jorje German
Jorje German el 10 de Nov. de 2020
Is that what class(num) and class(dem) do? So I also need to add the "sys" after each of them?
So I was able to refine my code with your help and ended up with something that looks and provides the correct transfer functions. However I know what when p = -.5 or -.1 my sys should explode and become unstable. However, right now when I plot it, it doesnt really grow exponentially. I cant figure out why.
syms s
J1 = 0.0024;
C1 = 0.007;
K12 = 2.8;
a = 0;
z = 1;
b = 1;
p = -.1;
Kc = .1;
Kh = ((16000)*(1/(2*pi))*(32));
Ka = (10/32768)*2*0.1*3;
%plant Transfer Function
numg = [(Kh*Ka)/J1];
demg = [1 (C1/J1) (K12/J1)];
%Controller Transfer Function.
numc = [Kc*a z*Kc];
demc = [b p];
%verying that they are correct.
sysg = tf(numg,demg)
sysc = tf(numc,demc)
%Combining them
Tfnum = conv(numc,numg);
% Tfd= conv(demc,demg) + Tfnum
Tfdem = [1 (2.916+p) (2.916*p+1166.67) (1166.67*p+627.7)];
TF = tf(Tfnum,Tfdem);
step(10000*TF)
Why do you think that p = -0.1 and p = -0.5 should make the system unstable, when using all of your other parameters?
I don't think the equation for Tfdem is quite correct. Instead of trying to do it by hand, you can get the closed loop transfer function directly:
TF = feedback(sysc*sysg,1)
Jorje German
Jorje German el 11 de Nov. de 2020
really? I didn't know I was able to do this. Let me give it a shot.
Thank you for the advise. I do have one more question. How do I go about finding the zeros, poles, and gains. Ive tried doing
rlocus(TF)
and just clicking on the information. Ive also tried
[z,p,k] = zpkdata(TF)
but I cannot access the data.
zpkdata returns z and p in cell arrays; they need to be accessed as such:
>> TF=feedback(sysc*sysg,1)
TF =
621.7
------------------------------
s^3 + 2.817 s^2 + 1166 s + 505
>> [z,p,k]=zpkdata(TF);
>> z{:}
ans =
0×1 empty double column vector
>> p{:}
ans =
-1.1916 +34.1163i
-1.1916 -34.1163i
-0.4334 + 0.0000i
>> k
k =
621.6990
Jorje German
Jorje German el 12 de Nov. de 2020
Thank you very much. You were very hepful

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 7 de Nov. de 2020

Comentada:

el 12 de Nov. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by