How to properly set up my Transfer function
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示

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)
採用された回答
Reshma Nerella
2020 年 11 月 10 日
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.
7 件のコメント
Jorje German
2020 年 11 月 10 日
Is that what class(num) and class(dem) do? So I also need to add the "sys" after each of them?
Jorje German
2020 年 11 月 11 日
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)
Paul
2020 年 11 月 11 日
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
2020 年 11 月 11 日
really? I didn't know I was able to do this. Let me give it a shot.
Jorje German
2020 年 11 月 11 日
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.
Paul
2020 年 11 月 12 日
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
2020 年 11 月 12 日
Thank you very much. You were very hepful
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Control System Toolbox についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
