Challenge

Project 2 - Rankine cycle Simulator

Aim – Create a rankine cycle simulator and plot T-s and h-s diagram.

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 –

  1. Isentropic expansion – steam enters into turbine where it is expanded by turbine so pressure and temperature will decrease. Turbine generates electricity.
  2. constant pressure heat rejection – the wet steam rejects heat into condenser where its phase changes again and it becomes saturated liquid.
  3. Isentropic compression – water is pumped from low pressure to high pressure isentropically. Pump requires some input for it.
  4. 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(`q_a`) = `h1 - h4`

heat rejection(`q_r`) = `h2 - h3`

work done by turbine(`w_t`) = `h1 - h2`

work taken by pump (`w_p`) = `h4 - h3`

thermal efficiency = `(w_t – w_p)/q_a`

net work output(`w_n`) = `w_t – w_p`

back work ratio(BWR) = `w_p/w_t`

specific steam consumption(SSC) = `3600/w_n`

h1 = enthalpy at turbine inlet

h2 = enthalpy at turbine outlet

h3 = enthalpy at pump inlet

h4 = enthalpy at pump outlet

`w_t` = work done by turbine

`w_p` = work taken by pump

`(p_i,t_i,h_i,s_i)` = Pressure, temperature, enthalpy, entropy at i_th state respectively

code -

close all 
clear all
clc
% displaying rankine cycle simulator and its processess
disp("         Rankine cycle simulator")
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 
p1 = 30;
t1 = 400;
h1 = XSteam('h_pT',30,400);
s1 = XSteam('s_ph',30,h1);
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 
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
w_turbine = h1 - h2;                          % work done by turbine
w_pump = h4 - h3;                             % work taken by pump
work = w_turbine - w_pump;                    % net work output
q_in = h1 - h4;                               % heat addition
q_out = h2 -h3;                               % heat rejection

% 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(1)
hold on
plot([s_line1 s_line2],[t t])
plot([s1 s2 s3 s4 s5 s6 s1],[t1 t2 t3 t4 t5 t6 t1])
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('Entropy(KJ/KgK)')
ylabel('Temperature(K)')
axis([0,8,0,450])
%plotting h-s graph
figure(2)
hold on
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(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('Entropy(KJ/KgK)')
ylabel('Enthalpy(KJ/Kg)')
axis([0,8,0,3500])

Code explanation –

  1. first of all display – Rankine cycle simulator, using disp command.
  2. Now write rankine cycle’s all process using fprintf command.
  3. Assign the values of given parameters ,Turbine inlet pressure(p_1) = 30 bar, Turbine inlet temperature(t_1) = 400 deg celsius ,Turbine outlet pressure(p_2) = 0.05 bar.
  4. Put XSteam. m file in same directory and call the XSteam function with suitable arguments to find the values of enthalpy, entropy for state 1.
  5. Use fprintf command to print values of variables we found. Repeat the procedure for all other states to find unknows.
  6. Now apply a for loop to find values of enthalpy and entropy at saturated temperature and store them into variables.
  7. Find net work output and back work ratio with suitable formulas.
  8. Plot the T-s and h-s diagram using all the value we have found in different states and give proper x and y label and add state number by text command.
  9. Plot saturation line using the values we have found by for loop.

Output -

we got T-s and h-s diagram as following -

we got state variables as following -

references -

en.wikipedia.org/wiki/Rankine_cycle

energyeducation.ca › encyclopedia › Rankine_cycle
Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.