Project 2 - Rankine cycle Simulator
AIM:
To Create a Rankine Cycle Simulator using MATLAB.
OBJECTIVES:
- To write code to calculate the state points of the Rankine Cycle (any type of your choice) based on user inputs.
- To plot the corresponding T-s and h-s plots for the given set of inputs. Title and axes labels are a must, while legends could be used if necessary.
- The presentation of code and Labelling sections of your code using comments
THEORY:
- Four components of the Rankine cycle:
- Pump
- Boiler
- Turbine
- Condenser
Required Inputs:
Turbine Inlet temperature = 400° C
Turbine Inlet Pressure = 30 bars
Turbine Outlet Pressure = 0.05 bars = Condenser Inlet Pressure
The Rankine cycle closely describes the process by which steam-operated heat engines commonly found in thermal power generation plants generate power.
- Process 1–2: The working fluid is pumped from low to high pressure. As the fluid is a liquid at this stage, the pump requires little input energy.
Process 1-2 is [Isentropic compression]
- Process 2–3: The high-pressure liquid enters a boiler, where it is heated at constant pressure by an external heat source to become a dry saturated vapour. The input energy required can be easily calculated graphically
Process 2-3 is [Constant pressure heat addition in boiler]
- Process 3–4: The dry saturated vapour expands through a turbine, generating power. This decreases the temperature and pressure of the vapour, and some condensation may occur. The output in this process can be easily calculated using the chart or tables noted above.
Process 3-4 is [Isentropic expansion]
- Process 4–1: The wet vapour then enters a condenser, where it is condensed at a constant pressure to become a saturated liquid.
Process 4-1 is [Constant pressure heat rejection in condenser]
PROGRAM:
%Rankine Cycle Simulator
close all
clear all
clc
disp('RANKINE CYCLE SIMULATOR')
disp('1-2 is isentropic expansion in turbine')
disp('2-3 is constant pressure heat rejection in condenser')
disp('3-4 is isentropic compression in pump')
disp('4-1 is constant pressure heat addition in boiler')
p1=input('enter the pressure at the inlet of turbine (in bar)= ');
t1=input('enter the temp at the inlet of turbine (in degree C)= ');
p2=input('enter the pressure at the inlet of condenser (in bar)= ');
%steam condition at the inlet of turbine
h1=XSteam('h_pt',p1,t1);
s1=XSteam('s_pt',p1,t1);
%steam condition at the outlet of turbine
sg2=XSteam('sV_p',p2);
sf2=XSteam('sL_p',p2);
sfg2=sg2-sf2;
x2=(s1-sf2)/sfg2;
s2=sf2+x2*sfg2;
hf2=XSteam('hL_p',p2);
hg2=XSteam('hV_p',p2);
hfg2=hg2-hf2;
h2=hf2+x2*hfg2;
t2=XSteam('Tsat_p',p2);
%workdone by the turbine
W_t=h1-h2;
%steam condition at the outlet of condenser
p3=p2;
t3=XSteam('Tsat_p',p2);
h3=XSteam('hL_p',p2);
s3=XSteam('sL_p',p2);
vf=XSteam('vL_p',p2);
t22=t3;
%calculation of pump work
W_p=vf*(p1-p2)*100;
%steam Condition at state 4
p4=p1;
h4=W_p+h3;
s4=s3;
t4=XSteam('T_ph',p4,h4);
%work net
W_net=W_t-W_p;
%heat supplied
Q_s=h1-h4;
%heat rejected
Q_r=h2-h3;
%efficiency
efficiency=(W_net/Q_s);
%specific steam consumption
SSC=3600/W_net;
tf_sat=XSteam('Tsat_p',p1);
sf_sat=XSteam('sL_p',p1);
hf_sat=XSteam('hL_p',p1);
sg_sat=XSteam('sV_p',p1);
hg_sat=XSteam('hV_p',p1);
%plotting T-S diagram
hold on
%for plottin saturation curve
tsat1=linspace(0,374,1000);
for i=1:length(tsat1)
ss1(i)=XSteam('sL_T',tsat1(i));
end
for j=1:length(tsat1)
ss2(j)=XSteam('sV_T',tsat1(j));
end
plot(ss1,tsat1,'b')
plot(ss2,tsat1,'r')
%for saturation temp at p1
temp=XSteam('Tsat_p',p1);
t=linspace(t4,temp,30);
for i=1:length(t)
S(i)=XSteam('s_pt',p1,t(i));
hold on
end
t0=linspace(temp,t1,300);
for i=1:length(t0)
S0(i)=XSteam('s_pt',p1,t0(i));
end
%for plotting turbine work
plot([s1 s2],[t1 t2],'g')
%for heat rejection in condenser
plot([s2 s3],[t2 t3],'b')
%for pump work
plot([s3 s4],[t3 t4],'r')
%plotting curved line(constant pressure line in wet region) from outlet of
%the pump to the point from where phase change starts
plot(S,t,'y')
%plotting the phase change region
plot([sf_sat sg_sat],[tf_sat tf_sat],'y')
%plotting the curved constant pressure line from where the phase change
%ends to the superheated point
plot(S0,t0,'y')
legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('T-S Diagram')
xlabel('Entropy')
ylabel('Temperature')
%plotting H-S diagram
figure(2)
hold on
%for plotting the saturation curve
tsat1=linspace(0,374,1000);
for i=1:length(tsat1)
hh1(i)=XSteam('hL_T',tsat1(i));
end
for j=1:length(tsat1)
hh2(j)=XSteam('hV_T',tsat1(j));
end
plot(ss1,hh1,'b')
plot(ss2,hh2,'r')
%for plotting tubine
plot([s1 s2],[h1 h2],'g')
%for condenser
plot([s2 s3],[h2 h3],'b')
%for plotting pump
plot([s3 s4],[h3 h4],'r')
s=linspace(s3,s1,1000);
for i=1:length(s)
h(i)=XSteam('h_ps',p1,s(i));
end
%for plotting boiler
% plot([s4 s1],[h4 h1],'y')
plot(s,h,'y')
legend('Saturation Curve L','Saturation Curve V','Turbine','condenser','pump','boiler','location','northwest')
title('H-S Diagram')
xlabel('Entropy')
ylabel('Enthalpy')
%outputs
%at state 1
fprintf('At State Point 1:\r\n')
fprintf('P1 is : %f Bar\r\n',p1)
fprintf('T1 is : %f Deg Celcius\r\n',t1)
fprintf('H1 is : %f KJ/Kg\r\n',h1)
fprintf('S1 is : %f KJ/KgK\r\n',s1)
%at state 2
fprintf('At State Point 2:\r\n')
fprintf('P2 is : %f Bar\r\n',p2)
fprintf('T2 is : %f Deg Celcius\r\n',t2)
fprintf('H2 is : %f KJ/Kg\r\n',h2)
fprintf('S2 is : %f KJ/KgK\r\n',s2)
fprintf('X is : %f \r\n',x2)
%at state 3
fprintf('At State Point 3:\r\n')
fprintf('P3 is : %f Bar\r\n',p3)
fprintf('T3 is : %f Deg Celcius\r\n',t3)
fprintf('H3 is : %f KJ/Kg\r\n',h3)
fprintf('S3 is : %f KJ/KgK\r\n',s3)
%state 4
fprintf('At State Point 4:\r\n')
fprintf('P4 is : %f Bar\r\n',p4)
fprintf('T4 is : %f Deg Celcius\r\n',t4)
fprintf('H4 is : %f KJ/Kg\r\n',h4)
fprintf('S4 is : %f KJ/KgK\r\n',s4)
%calculations
fprintf('Work Done By Turbine : %f kJ/kg\r\n',W_t)
fprintf('Work Done By Pump : %f kJ/kg\r\n',W_p)
fprintf('Heat Added in The Boiler: %f KJ/kg\r\n',Q_s)
fprintf('Heat Rejected in The Condenser: %f KJ/kg\r\n',Q_r)
fprintf('Thermal Efficiency is : %f %%\r\n',efficiency*100)
fprintf('Specific Steam Consumption : %f KJ/kWh\r\n',SSC)
EXPLANATION:
- The Program begins with clear all, close all, clc to erase the workspace and plots..
- Input variables p1,T1,p2 are given by input command whose values are entered in command window while executing the Program.
- @State-1, Values for Enthalpy & Entropy are extracted as a function of Pressure & Temperature.
- h_pT, s_pT, hL_p, sV_p etc.... are the default variables whose value is stored in XSteam file.
- Similarly, all the variables for all states are extracted using a suitable format.[**The Formulae for the State Variables and other depending factors are referred from Power Plant Reference Books.]
- Pressure, Temperature, Enthalpy, Entropy for all the State Variables are Extracted as a function of the dependent variable from the XSteam File.
- @State 2 is a Condenser inlet where the High-Pressure Steam is converted into Low-Pressure Water and hence Dryness Fraction, Enthalpy & Entropy for Saturated Vapour & Saturated Water are considered to Calculate the Specific Enthalpy.
- @State-3 The water is condensed back to its Saturation Temperature and fed to the Pump, This temperature of water at the exit of the Condenser and entry of Pump is the same.
- @State-4 This is Constant Pressure Heat addition, hence pressure is equal to p1, but the temperature increases on heating at Constant Pressure & Constant Volume as our Entropy remains same and hence Cp/Cv=gamma is considered to find temperature T4.
- define two more points 5 and 6 to plot cycle in detail.
- Finally Work done and Heat Evolved & SSC are calculated by basic formulae.
- To plot the Saturation Curve, a Temperature range is defined using linspace command and for the overall length of this Temperature values of Enthalpy and Entropy are calculated at every temperature point. The Break in the Saturation Curve separates the Liquid Phase & Vapour Phase.
- Now all the necessary data is found out, Plotting is done for both T-S & H-S curves using the plot commands. Annotations are assigned using text command.
- Results of the Cycle Simulation is displayed over Comand window using fprintf command.
ERROR FACED
OUTPUT:
The Rankine cycle plots have generated by calculating the state points, efficiency and the output is printed in the command window.