im trying to model the drive train model of wind turbine, i need to get oscillation and the steady state waveform

4 次查看(过去 30 天)
dwt/dt=1/2Ht(Tt-Tsh)
dwr/dt=1/2Hg(Tsh-Te)
Tsh=k*thetatw+c*dtheta_tw/dt
dtheta_tw/dt=welb(wt-wr)
thetatw=3.35
wt=1
wr=1

采纳的回答

VBBV
VBBV 2023-3-25
Provide all inputs to the equations used for modeling the drive train,
clc
clear all
close all
a=3.2; %input('Enter the a = ');
b=1.5; %input('Enter the b = ');
c=.1;%input('Enter the c = ');
%initial condition
theta_0=[a,b,c];
t_span=linspace(0,100,100);
[t,results]=ode45(@(t,theta)ode_fun(t,theta),t_span,theta_0);
subplot(211)
plot(t,results(:,2));
subplot(212)
plot(t,results(:,3));
xlabel('t')
ylabel('wt&wg')
function [dtheta_dt]= ode_fun(t,theta)
Tt=1;
Te=0.78;
f=50;
welb=2*pi*f;
Ksh=0.3;
Csh=0.01;
Ht=4;
Hg=0.1*Ht;
wt=theta(1);
wg=theta(2);
thetatw=theta(3);
dthetatw_dt=welb*(wt-wg);
thetatw=3.35;
wt=0.1;
wr=0.01;
c = 0.1; % give damping constant factor
k = 2.6e8; % give flexural stiffness of gear train , e.g. shown
dtheta_tw_dt=welb*(wt-wr);
Tsh=k*thetatw+c*dtheta_tw_dt;
dwt_dt=(1/2)*Ht*(Tt-Tsh); % what are these for ? another model ?
dwr_dt=(1/2)*Hg*(Tsh-Te); % this one too
Dwt_dt=((Tt/(2*Ht))-((Ksh/(2*Ht))*thetatw)+((Csh/(2*Ht))*(welb*(wt-wg)))); % check these equations
Dwg_dt=(((Ksh/(2*Hg))*thetatw)-((Csh/(2*Hg))*(welb*(wt-wg)))+(Te/(2*Hg))); % check these
dtheta_dt=[dthetatw_dt;Dwt_dt;Dwg_dt];
end

更多回答(1 个)

Sam Chak
Sam Chak 2023-3-25
In the absence of the effects of the constants and in the original math model, then the system is stable.
If oscillations are desired, then you need to inject some manipulated variables so that the system behavior can be changed. I'm unfamiliar with your system. In physical systems, the manipulated variables can forces, torques, voltage sources, etc.
theta_0 = [0.1, -0.2, 1];
t_span = linspace(0, 10, 10001);
options = odeset('AbsTol', 1e-16, 'RelTol', 1e-12);
[t, theta] = ode45(@(t,theta) ode_fun(t, theta), t_span, theta_0, options);
subplot(311)
plot(t, theta(:,1)), grid on, ylabel('\omega_{t}')
subplot(312)
plot(t, theta(:,2)), grid on, ylabel('\omega_{g}')
subplot(313)
plot(t, theta(:,3)), grid on, ylabel('\theta_{tw}'), xlabel('t')
function [dtheta_dt]= ode_fun(t, theta)
% Parameters
Tt = 1;
Te = 0.78;
f = 50;
welb = 2*pi*f;
Ksh = 0.3;
Csh = 0.01;
Ht = 4;
Hg = 0.1*Ht;
wt = theta(1);
wg = theta(2);
thetatw = theta(3);
% Test 1: without manipulated variables, without constant disturbances
% dwt_dt = 0*Tt/(2*Ht) - Ksh/(2*Ht)*thetatw - Csh/(2*Ht)*welb*(wt - wg);
% dwg_dt = Ksh/(2*Hg)*thetatw + Csh/(2*Hg)*welb*(wt - wg) - 0*Te/(2*Hg);
% dthetatw_dt = welb*(wt - wg);
% Test 2: with manipulated variables
A = [ -pi/8 pi/8 -3/80;
5*pi/4 -5*pi/4 3/8;
100*pi -100*pi 0];
B = eye(3);
p = [-1, -2i, +2i]; % desired eigenvalues
K = place(A, B, p);
% Manipulated variables
u1 = - K(1,:)*theta - Tt/(2*Ht); % also cancel out effect of Tt/(2*Ht)
u2 = - K(2,:)*theta + Te/(2*Hg); % also cancel out effect of Te/(2*Hg)
u3 = - K(3,:)*theta;
dwt_dt = Tt/(2*Ht) - Ksh/(2*Ht)*thetatw - Csh/(2*Ht)*welb*(wt - wg) + u1;
dwg_dt = Ksh/(2*Hg)*thetatw + Csh/(2*Hg)*welb*(wt - wg) - Te/(2*Hg) + u2;
dthetatw_dt = welb*(wt - wg) + u3;
% Reorder the sequence because thetatw = theta(3)
dtheta_dt = [dwt_dt;
dwg_dt;
dthetatw_dt];
end

类别

Help CenterFile Exchange 中查找有关 Electromechanical 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by