Project 2 - Rankine cycle Simulator
Theory
Rankine cycle is process, used in power plant to produce mechanical energy from heat. It usually uses water as working fluid. In this cycle a fuel is used externally to convert water into steam which expands through turbine and produces work.
In ideal rankine cycle pump and turbine would be isentropic, they would maximize the net work output by generating no entropy and also, we are assuming that water to steam and steam to water conversion is taking place at constant pressure.
Actual rankine cycle differs from ideal rankine cycle because of fluid friction causes irreversibility and heat loss to surrounding causes loss of work output. pressure drops in boiler and condenser it causes, steam to leave boiler at a lower pressure.
Rankine cycle can be modified with reheat and regenerative process. Reheating cycle removes moisture carried by steam at the final stage of expansion process.it increases thermal efficiency of the cycle.in Regenerative cycle heat is exchanged between working fluid and compressed fluid before heat addition. Regenerative cycle reduces heat supplied to boiler and increases thermal efficiency.
There are four process in rankine cycle –
- Isentropic expansion – steam enters into turbine where it is expanded by turbine so pressure and temperature will decrease. Turbine generates electricity.
- constant pressure heat rejection – the wet steam rejects heat into condenser where its phase changes again and it becomes saturated liquid.
- Isentropic compression – water is pumped from low pressure to high pressure isentropically. Pump requires some input for it.
- Constant pressure heat addition – water enters into boiler, where it is heated till its phase change which is dry saturated vapour. the process takes place on constant pressure and heat is added to water that’s why is called as constant pressure heat addition.
Formulas related to rankine cycle
heat addition(qa) = h1 - h4
heat rejection(qr) = h2 - h3
work done by turbine(wt) = h1 - h2
work taken by pump(wp) = h4 - h3
thermal efficiency = w1 - wp/qa
net work output(wn) = wt - wp
back work ratio(BWR) = wp/wt
specific steam consumption(SSC) = 3600/wn
h1 = enthalpy at turbine inlet
h2 = enthalpy at turbine outlet
h3 = enthalpy at pump inlet
h4 = enthalpy at pump outlet
wt = work done by turbine
wp = work taken by pump
(pi,ti,hi,si) = pressure, temperature, enthalpy, entropy at ith state respectively.
CODE
%clear all is clear all variables in the current workspace
%close all is for closing figures which are open
%clc is for clearing text in command window
close all
clear all
clc
%Displaying rankine cycle simulator and its processess
%disp command displays the value given
disp(" Rankine cycle simulator")
%fprintf command applies all process to rankine cycle
fprintf('\n 1-2 is the isentropic expansion process')
fprintf('\n 2-3 is the constant pressure heat rejection process')
fprintf('\n 3-4 is the isentropic compression process')
fprintf('\n 4-1 is the constant pressure heat addition process')
%Variables for stage1
%Turbine inlet pressure
p1 = 30;
%Turbine inlet temperature
t1 = 400;
h1 = XSteam('h_pT',30,400);
s1 = XSteam('s_ph',30,h1);
%Use fprintf command to print values of variables we found
fprintf('\n\n Results')
fprintf('\n\n At state point 1')
fprintf('\n P1 is:%f bar',p1)
fprintf('\n T1 is:%f deg celcius',t1)
fprintf('\n H1 is:%f KJ/Kg',h1)
fprintf('\n S1 is:%f KJ/KgK',s1)
%Variables for stage2
%Turbine outlet pressure
p2 = 0.05;
s2 = s1;
t2 = XSteam('T_ps',0.05,6.1858);
sf2 = XSteam('sL_p',p2);
sg2 = XSteam('sV_p',p2);
hf2 = XSteam('hL_p',p2);
hg2 = XSteam('hV_p',p2);
x = ((s2 - sf2)/(sg2 - sf2));
h2 = hf2 + (x*(hg2 - hf2));
v2 = XSteam('v_ph',p2,h2);
fprintf('\n\n At state point 2')
fprintf('\n P2 is:%f bar',p2)
fprintf('\n T2 is:%f deg celcius',t2)
fprintf('\n H2 is:%f KJ/Kg',h2)
fprintf('\n S2 is:%f KJ/KgK',s2)
%Variables for stage3
t3 = t2;
p3 = p2;
s3 = XSteam('sL_p',p3);
h3 = XSteam('hL_T',32.875);
v3 = XSteam('v_ph',p3,h3);
fprintf('\n\n At state point 3')
fprintf('\n P3 is:%f bar',p3)
fprintf('\n T3 is:%f deg celcius',t3)
fprintf('\n H3 is:%f KJ/Kg',h3)
fprintf('\n S3 is:%f KJ/KgK',s3)
%Variables for stage4
s4 = s3;
v4 = v3;
p4 = p1;
h4 = XSteam('h_ps',p4,s4);
t4 = XSteam('T_hs',h4,s4);
fprintf('\n\n At state point 4')
fprintf('\n P4 is:%f bar',p4)
fprintf('\n T4 is:%f deg celcius',t4)
fprintf('\n H4 is:%f KJ/Kg',h4)
fprintf('\n S4 is:%f KJ/KgK',s4)
%Variables for stage6
p5 = p4;
t5 = XSteam('Tsat_p',p5);
h5 = XSteam('hL_T',t5);
s5 = XSteam('sL_p',p5);
fprintf('\n\n At state point 5')
fprintf('\n P5 is:%f bar',p5)
fprintf('\n T5 is:%f deg celcius',t5)
fprintf('\n H5 is:%f KJ/Kg',h5)
fprintf('\n S5 is:%f KJ/KgK',s5)
%Variables for stage6
t6 = t5;
p6 = XSteam('psat_T',t5);
s6 = XSteam('sV_T',t6);
h6 = XSteam('hV_T',t6);
fprintf('\n\n At state point 6')
fprintf('\n P6 is:%f bar',p6)
fprintf('\n T6 is:%f deg celcius',t6)
fprintf('\n H6 is:%f KJ/Kg',h6)
fprintf('\n S6 is:%f KJ/KgK',s6)
%Loop to find variables on saturation lines
t = linspace(0,400,1000);
for i=1:length(t)
s_line1(i)=XSteam('sL_T',t(i));
end
for j=1:length(t)
s_line2(j)=XSteam('sV_T',t(j));
end
for i=1:length(t)
h_line1(i)=XSteam('hL_T',t(i));
end
for j=1:length(t)
h_line2(j)=XSteam('hV_T',t(j));
end
%Net work output calculation
%Work done by turbine
w_turbine = h1 - h2;
%Work taken by pump
w_pump = h4 - h3;
%Net work output
work = w_turbine - w_pump;
%Heat addition
q_in = h1 - h4;
%Heat rejection
q_out = h2 -h3;
%Thermal efficiency
n = work/q_in;
%Back work ratio
BWR = w_pump/w_turbine;
%Specific steam consumption
ssc = 3600/work;
%Plotting T-s graph
%figure( n ) finds a figure in which the Number property is equal to n
figure(1)
%hold on command retains current plot
hold on
%plot command creates a 2-D line plot
plot([s_line1 s_line2],[t t])
plot([s1 s2 s3 s4 s5 s6 s1],[t1 t2 t3 t4 t5 t6 t1])
%text command adds a text description to one or more data points in the current axes
text(s1,t1,'1')
text(s2,t2,'2')
text(s3,t3,'3')
text(s4,t4,'4')
text(s5,t5,'5')
text(s6,t6,'6')
title("Rankine cycle T-S Diagram")
%xlabel is x axis title
xlabel('Entropy(KJ/KgK)')
%ylabel is y axis title
ylabel('Temperature(K)')
axis([0,8,0,450])
%plotting h-s graph
%figure( n ) finds a figure in which the Number property is equal to n
figure(2)
%hold on command retains current plot
hold on
%%plot command creates a 2-D line plot
plot([s_line1 s_line2],[h_line1 h_line2])
plot([s1 s2 s3 s4 s5 s6 s1],[h1 h2 h3 h4 h5 h6 h1])
%%text command adds a text description to one or more data points in the current axes
text(s1,h1,'1')
text(s2,h2,'2')
text(s3,h3,'3')
text(s4,h4,'4')
text(s5,h5,'5')
text(s6,h6,'6')
title("Rankine cycle H-S Diagram")
%xlabel is x axis title
xlabel('Entropy(KJ/KgK)')
%y label is y axis title
ylabel('Enthalpy(KJ/Kg)')
axis([0,8,0,3500])
PLOT FOR T-S DIAGRAM

PLOT FOR H-S DIAGRAM

OUTPUT


REFERENCE