Tachfdbk.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:2k
源码类别:

其他行业

开发平台:

Matlab

  1. function [numopen, denopen, denclsd]=tachfdbk(num,den,s1)
  2. % Hadi Saadat,  1998
  3. discr=[
  4. '                                                                       '
  5. '  The function tachfdbk(num, den, s1) is used for the design of the    '
  6. '  minor-loop rate-feedback or tachometer-feedback control.  num and den'
  7. '  are row vectors of polynomial coefficients of the uncompensated open-'
  8. '  loop plant transfer function and s1=a+j*w is a desired pole of the   '
  9. '  loop transfer function.  The function returns the open-loop and the  '
  10. '  closed-loop numerator and denominators of the compensated system     '
  11. '  transfer function.                                                   '];
  12. %disp(discr);
  13. clc
  14. beta=atan2(imag(s1),real(s1));
  15. sm=abs(s1);
  16. [mag,phase]=ghs(num,den,s1);   % Returns the mag. and phase of G(s1)H(s1)
  17.   if imag(s1)==0
  18.   disp('The specified closed-loop pole s1 must be a complex pole')
  19.   return
  20.   else
  21. Kp=-sin(beta+phase)/(mag*sin(beta));
  22. KD=sin(phase)/(sm*mag*sin(beta));
  23.   end
  24. Z0=Kp/KD;
  25. fprintf('     Ka = %g',Kp),fprintf(' , Kt = %g',KD),
  26. fprintf('s nn')
  27. % the following statements will form the characteristic Equation
  28. % of the compensated system.
  29. m=length(num); n=length(den);
  30. if n > m
  31. o=zeros(1,n-m); mk=[o,1]; num1=conv(num,mk);
  32. else, num1=num, end
  33. numgc=[KD,Kp]; numopen=conv(numgc, num1);
  34. dengc=[0, 1];  denopen=conv(dengc, den);
  35. denclsd=denopen+numopen;
  36. numopen=conv(Kp,num1);
  37. %fprintf('Row vectors of polynomial coefficients of the compensated system:nn')
  38. %fprintf('Open-loop num. '),disp(numopen)
  39. %fprintf('Open-loop den. '),disp(denopen)
  40. %fprintf('Closed-loop den'),disp(denclsd)
  41. fprintf('Compensated open-loop ')
  42. GH = tf(numopen, denopen)
  43. fprintf('Compensated closed-loop ')
  44. T = tf(numopen, denclsd)
  45. discr2=[
  46. 'Roots of the compensated characteristic equation:       '
  47. '                                                        '];
  48. disp(discr2)
  49. r=roots(denclsd);
  50. disp(r)
  51. rreal=real(r);
  52.   for l=1:n-1
  53.   if rreal(l) >=0
  54.   fprintf('   Root on the RHP, system is unstable. Change s1 & repeat.nn')
  55.   else,end
  56.   end