0% found this document useful (0 votes)
41 views

Mgplt////ok: % Excitation Frequency % Enter Vrms and Irms of Open-Circuit Curve

The document contains code for plotting various curves related to modeling the behavior of a synchronous machine. It includes code for: 1) Plotting the open circuit voltage versus current curve in a subplot. 2) Plotting the instantaneous flux versus current curve in a second subplot. 3) Plotting the current error versus time curve in a third subplot. 4) Plotting another current error versus time curve in a fourth subplot.

Uploaded by

Herless Flores
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Mgplt////ok: % Excitation Frequency % Enter Vrms and Irms of Open-Circuit Curve

The document contains code for plotting various curves related to modeling the behavior of a synchronous machine. It includes code for: 1) Plotting the open circuit voltage versus current curve in a subplot. 2) Plotting the instantaneous flux versus current curve in a second subplot. 3) Plotting the current error versus time curve in a third subplot. 4) Plotting another current error versus time curve in a fourth subplot.

Uploaded by

Herless Flores
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Mgplt////ok

subplot(2,2,1)
plot(I,V,'-')
grid
ylabel('V rms in V')
xlabel('I rms in A')
axis square
title('Open circuit curve in rms')
subplot(2,2,2)
plot(i,psi,'-')
ylabel('psi in V')
xlabel('i in A')
axis square
title('Instantaneous flux versus current')
subplot(2,2,3)
plot(yin(:,1),yout(:,2),'-');
ylabel('Current error in rms amps')
xlabel('time in sec')
axis square
axis([-inf inf -0.1 0.1]);
title('Error from rms value curve')
subplot(2,2,4)
plot(yin(:,1),yout(:,1),'-');
ylabel('Current error in rms amps')
xlabel('time in sec')
axis square
axis([-inf inf -0.1 0.1]);
title('Error from instantaneous value curve')

/////////////////

Mginit
clear all
we = 377; % excitation frequency
% Enter Vrms and Irms of open-circuit curve
V = [ 0.00 7.40 20.50 37.30 47.31 57.12 68.85 72.80 81.19 87.82 95.46
100.7 107.04 112.37 116.04 119.75 121.92 125.61 127.92 130.25 132.53
134.85 136.1 137.5 ];
I = [ 0 0.0112 0.0310 0.0585 0.0740 0.0895 0.1084 0.1153 0.1308 0.1437
0.1583 0.1686 0.1841 0.2004 0.2142 0.2331 0.2477 0.2753 0.2933 0.3131
0.3381 0.3639 0.3828 0.4000];
psi = sqrt(2).*V; % peak psi array
npts = length(V);
K(1) = I(2)*sqrt(2)/psi(2);
i(1) = 0.;
theta(1) = 0;
for k = 2:1:npts
for j = 2:k
theta(j) = asin(psi(j)/psi(k));
theta(j-1) = asin(psi(j-1)/psi(k));
t(j) = theta(j) - theta(j-1);
s(j) = (sin(2*theta(j)) - sin(2*theta(j-1)))/2;
g(j) = cos(theta(j)) - cos(theta(j-1));
d(j) = t(j)*i(j-1)^2;
B(j) = -2*i(j-1)*(psi(k)*g(j) + psi(j-1)*t(j));
A(j) = (psi(k)^2)*(t(j) - s(j))/2 + 2*psi(k)*psi(j-1)*g(j) + psi(j-
1)^2*t(j);
end;
C(k) = d(k) - pi*I(k)^2/2;
for j = 1:(k-1);
C(k) = C(k) + K(j)^2*A(j) + K(j)*B(j) + d(j);
end;
K(k) = (- B(k) + sqrt(B(k)^2 - 4*A(k)*C(k)))/(2*A(k));
i(k) = 0;
for j = 2:k;
i(k) = i(k) + K(j)*(psi(j) - psi(j-1));
end;
end;

% set up the full saturation curve

Vud = flipud(V'); % flip the column array of V's upside down


nV = length(Vud); % get length
Vud(nV) = []; % collapse array by one to eliminate
% duplicate value at origin
Vfull = sqrt(2).*[-1.*Vud' V]; % full negative to full positive
Iud = flipud(I'); % flip the column array of I's upside down
nI = length(Iud); % get length
Iud(nI) = []; % collapse array by one to eliminate
% duplicate value at origin
Ifull = sqrt(2).*[-1.*Iud' I]; % full negative to full positive
psiud = flipud(psi'); % flip the column array of psi's upside down
npsi = length(psiud); % get length
psiud(npsi) = []; % collapse array by one to eliminate
% duplicate value at origin
psifull = [-1.*psiud' psi]; % full negative to full positive
iud = flipud(i'); % flip the column array of i's uide down
ni = length(iud); % get length
iud(ni) = []; % collapse array by one to eliminate
% duplicate value at origin
ifull = [-1.*iud' i]; % full negative to full positive

% set up variable amplitude sinusoidal voltage source

Vmaxrms = V(nV-1); % set maximum rms of run below max value


tstop = 3.5;%run period same as period of amplitude variation
disp('ready for simulation of smg.m')

/////////////////////

You might also like