In [1]:
%pylab notebook
%precision 0
Out[1]:
Given a 13.8-kV, 50-MVA, 0.9-power-factor-lagging, 60-Hz, four-pole, Y-connected synchronous machine with:
The OCC of this generator is shown in Figure P4-1 below
In [2]:
Vl = 13.8e3 # [V]
PF = 0.9
Xs = 2.5 # [Ohm]
Ra = 0.2 # [Ohm]
P = 50e6 # [W]
Pf_w = 1.0e6 # [W]
Pcore = 1.5e6 # [W]
Pstray = 0 # [W]
n_m = 1800 # [r/min]
Suppose that this generator is running at rated conditions, and then the load is removed without changing the field current.
In [3]:
ia = P / (sqrt(3) * Vl)
Ia_angle = -arccos(PF)
Ia = ia * (cos(Ia_angle) + sin(Ia_angle)*1j)
print('Ia = {:.0f} A ∠{:.1f}°'.format(abs(Ia), Ia_angle/pi *180))
The phase voltage of this machine is: $$V_\phi = V_T / \sqrt{3}$$
In [4]:
V_phase = Vl / sqrt(3)
print('V_phase = {:.0f} V'.format(V_phase))
The internal generated voltage of the machine is: $$\vec{E}_A = \vec{V}_\phi + R_A\vec{I}_A + jX_S\vec{I}_A$$
In [5]:
Ea = V_phase + Ra*Ia + Xs*1j*Ia
Ea_angle = arctan(Ea.imag/Ea.real)
print('''
Ea = {:.0f} V ∠{:.1f}°
=================='''.format(abs(Ea), Ea_angle/pi*180))
In [6]:
print('''
V_phase = {:.0f} V
================'''.format(V_phase))
In [7]:
Vt_oc = sqrt(3) * abs(Ea)
print('Vt_oc = {:.0f} kV'.format(Vt_oc/1000))
From the OCC, the required field current is $\underline{\underline{I_F = 10\,A}}$.
In [8]:
abs(Ea)
Out[8]:
The corresponding terminal voltage would be $\underline{\underline{V_T = 20\,kV}}$.
In [9]:
Pout = P*PF
print('Pout = {:.0f} MW'.format(Pout/1e6))
In [10]:
Pcu = 3 * abs(Ia)**2 * Ra
print('Pcu = {:.1f} MW'.format(Pcu/1e6))
In [11]:
Pin = Pout +Pcu + Pf_w + Pcore + Pstray
print('Pin = {:.1f} MW'.format(Pin/1e6))
Therefore the prime mover must be capable of supplying $P_{in}$. Since the generator is a four-pole 60 Hz machine, to must be turning at 1800 r/min. The required torque is:
$$\tau_{app} = \frac{P_{in}}{\omega_m}$$
In [12]:
w_m = n_m * (2*pi/60.0)
tau_app = Pin / w_m
print('''
tau_app = {:.0f} Nm
==================='''.format(tau_app))
In [13]:
Q = - (3 * V_phase**2) / Xs
print('Q = {:.2f} Mvar'.format(Q/1e6))
The radius of the rotor current limit is:
$$D_E = \frac{3V_\phi E_A}{X_S}$$
In [14]:
De = (3 * V_phase * abs(Ea)) / Xs
print('De = {:.0f} Mvar'.format(De/1e6))
The stator current limit is a circle at the origin of radius:
$$S = 3V_\phi I_A$$
In [15]:
S = 3 * V_phase * abs(Ia)
print('S = {:.0f} Mvar'.format(S/1e6))
Get points for stator current limit:
In [16]:
theta = arange(-95,95) # angle in degrees
rad = theta * pi/180 # angle in radians
s_curve = S * ( cos(rad) + sin(rad)*1j)
Get points for rotor current limit:
In [17]:
orig = Q*1j
theta = arange(65,115) # angle in degrees
rad = theta * pi / 180 # angle in radians
r_curve = orig + De * ( cos(rad) + sin(rad)*1j )
Plot the capability diagram:
In [18]:
fig= figure()
ax=fig.add_subplot(1, 1, 1)
ax.plot(real(s_curve/1e6),imag(s_curve/1e6),'b')
ax.plot(real(r_curve/1e6),imag(r_curve/1e6),'r--')
ax.set_title('Synchronous Generator Capability Diagram')
ax.set_xlabel('Power (MW)')
ax.set_ylabel('Reactive Power (Mvar)')
ax.set_aspect('equal', 'datalim')
ax.legend(('stator current limit', 'rotor current limit'), loc=3);
ax.grid()