私はscilabで非同期電動機のモデルを作成しようとしており、rpm、電流、トルクが経時変化する様子をグラフで表示しています。それはかなり長いように見えますが、すべてを読む必要はありません。シラバスプロットが不適切なode値を示しています
fHz = 50;
Um = 230;
p = 3;
we = 2*%pi*fHz/p;
wb = 2*%pi*50;
Rs = 0.435;
Rr = 0.64;
Ls = 0.0477;
Xls = wb*Ls; // [Ohm]
Lr = 0.0577;
Xlr = wb*Lr; // [Ohm]
Lm = 0.012;
Xm = wb*Lm; // [Ohm]
Xml = 1/(1/Xls + 1/Xm + 1/Xlr) // [Ohm];
D = 0.0002;
J = 0.28;
Mt = 0.0;
function [xdot]=AszinkronGep(t, x, Um, fHz)
xdot = zeros(12, 1);
Fsq = x(1);
Fsd = x(2);
Frq = x(3);
Frd = x(4);
wr = x(5);
isabc(1) = x(6);
isabc(2) = x(7);
isabc(3) = x(8);
irabc(1) = x(9);
irabc(2) = x(10);
irabc(3) = x(11);
Ua = Um*sin(2*%pi*fHz*t);
Ub = Um*sin(2*%pi*fHz*t - 2*%pi/3);
Uc = Um*sin(2*%pi*fHz*t + 2*%pi/3);
Uab = 2/3*[1, -0.5, -0.5; 0, sqrt(3)/2, -sqrt(3)/2]*[Ua;Ub;Uc];
phi = 2*%pi*fHz*t;
Udq = [cos(phi), sin(phi); -sin(phi), cos(phi)]*Uab;
Usd = Udq(1);
Usq = Udq(2);
Urd = 0;
Urq = 0;
isd = (Fsd-Xml*(Fsd/Xls + Frd/Xlr))/Xls;
isq = (Fsq-Xml*(Fsq/Xls + Frq/Xlr))/Xls;
ird = (Frd-Xml*(Fsd/Xls + Frd/Xlr))/Xlr;
irq = (Frq-Xml*(Fsq/Xls + Frq/Xlr))/Xlr;
isdq = [isd; isq];
isalphabeta = [cos(phi), -sin(phi); sin(phi), cos(phi)]*isdq;
isabc = [1, 0; -0.5, sqrt(3)/2; -0.5, -sqrt(3)/2]*isalphabeta;
irdq = [ird; irq];
iralphabeta = [cos(phi), -sin(phi); sin(phi), cos(phi)]*irdq;
irabc = [1, 0; -0.5, sqrt(3)/2; -0.5, -sqrt(3)/2]*iralphabeta;
//TORQUE
Me = (3/2)*p*(Fsd*isq - Fsq*isd)/wb
Fmq = Xml*(Fsq/Xls + Frq /Xlr);
Fmd = Xml*(Fsd/Xls + Frd /Xlr);
//Differential equations
xdot(1) = wb*(Usq - we/wb*Fsd + Rs/Xls*(Fmq - Fsq));
xdot(2) = wb*(Usd + we/wb*Fsq + Rs/Xls*(Fmd - Fsd));
xdot(3) = wb*(Urq - (we - wr)/wb*Frd + Rr/Xlr *(Fmq - Frq));
xdot(4) = wb*(Urd + (we - wr)/wb*Frq + Rr/Xlr *(Fmd - Frd));
xdot(5) = p*(Me - D*wr - Mt)/J;
xdot(6) = isabc(1);
xdot(7) = isabc(2);
xdot(8) = isabc(3);
xdot(9) = irabc(1);
xdot(10) = irabc(2);
xdot(11) = irabc(3);
xdot(12) = Me;
if t <= 5 then
disp(Me);
end
endfunction
//Simulation parameter
t = 0:0.001:5;
t0 = 0;
//Starting parameters
y0 = [0;0;0;0;0;0;0;0;0;0;0;0]
y = ode(y0,t0,t,list(AszinkronGep,Um,fHz));
//Graphs
figure(1)
plot(t,y(5,:), "linewidth", 3);
xlabel("time [s]", "fontsize", 3, "color", "blue");
ylabel("rpm [rpm]", "fontsize", 3, "color", "blue");
figure(4)
plot(t,y(12,:), "linewidth", 3);
xlabel("time [s]", "fontsize", 3, "color", "blue");
ylabel("torque [Nm]", "fontsize", 3, "color", "blue");
「Me」を時間の関数として表示するグラフが必要です。ですから、私は次のように書いています:xdot(12)=私は、それをプロットしますが、どうやってどうしたらいいのでしょうか。チェックするだけで、関数の最後に 'disp(Me)'を追加して、計算が正しいかどうかを確認しました。そして、そうです、それらは正しい値です。私はそれをプロットするとき、なぜ私に異なる値を与えますか?
'Y(12)は' Me' 'での積分であるから、と私自身ではない? – LutzL
ええと、私はそれを正しくする必要がありますか?私がプロット(t、私)を試してみると、 '未定義変数'と表示されます。私はそれが 'Me'が関数の内部で定義されているからだと思います。 – Fifmut
また、解の計算された状態についてODE関数 'xdot = AszinkronGep(t、x、Um、fHz)'を評価し、 'xdot(12)'から 'Me'値を抽出することもできます。 – LutzL