Challenge

Project 2 - Rankine cycle Simulator

Aim- 

  1. To Simulate a Rankine cycle using MATLAB.
  2. Extracting Steam and water properties from the Xsteam file.
  3. Calculating all the state points of the cycle based on User inputs.
  4. Plotting the T vs S and  H vs S plots for the given input. 

Theory-  A Rankine cycle is an idealized Thermodynamic cycle that governs the working of a Heat Engine. In the Rankine cycle, the friction losses of a heat engine are neglected. It is a cycle that converts heat into mechanical energy which usually is converted into electrical energy. There are four components in this cycle that work on four different processes. The four components are the turbine, Condensor, Pump, and Boiler. The Rankine cycle is nothing but a modification of the Carnot cycle. The ideal Rankine cycle is very useful in steam power plants and gas power plants. To improve the efficiency of the Rankine cycle in the steam power plant, there are some changes in the Rankine cycle that differ from the Carnot cycle. Firstly, a pump is used in place of a condenser to handle only liquid, not a mixture of liquid and vapor. Secondly, exhaust steam from the turbine is completely condensed in the condenser, see the following diagram:

Processes and Working : 

There are four processes in the Rankine cycle : 

  1. Process 1-2: Isentropic Expansion in the turbine 
  2. Process 2-3: Constant pressure Heat rejection in the condenser
  3. Process 3-4: Isentropic compression in the pump 
  4. Process 4-1:  Constant pressure heat addition in the boiler 

Rankine cycle efficiency ηR is -

Back Work Ratio:

The fraction of the work produced by the turbine that is consumed by the compressor.

BW ratio=Wp/Wt

MATLAB CODE:

clear all
close all
clc

disp(' RANKINE CYCLE ');                                   
disp('1-2 is Constant pressure heat addition in the boiler');
disp('2-3 is Isentropic Expansion in the Turbine');
disp('3-4 is Constant pressure heat removal in the Condenser');
disp('4-1 is Isentropic compression in the pump');

p1 = input('nValue of pressure at turbine inlet, p1(in bar) = ');
T1 = input('nValue of temperature at turbine inlet, T1(in degree.C) = ');
p2 = input('nValue of pressure at condenser inlet, p2(in bar) = ');
 

% At State 1
h1 = XSteam('h_pT', p1, T1);        % Extracting Enthalpy at state pt 1
s1 = XSteam('s_pT', p1, T1);        % Similarly

% At State 2
s2 = s1;                            % Isentropic Expansion                
sf2= XSteam('sL_p', p2);            % Saturated Liquid Entropy
sg2 = XSteam('sV_p', p2);           % Saturated Vapour Entropy
x2 = (s2-sf2)/(sg2-sf2);
hf2 = XSteam('hL_p', p2);           
hg2 = XSteam('hV_p', p2);
h2 = hf2 + (x2*(hg2-hf2));

% At State 3
p3 = p2;                            % Constant pressure Heat rejection in Condenser
s3= XSteam('sL_p', p3);
h3 = XSteam('hL_p', p3);

% At State 4
s4 = s3;
p4 = p1;

% Work done by turbine
Wt = h1 - h2;

% Work done to run pump
v3 = XSteam('vL_p', p3);
Wp = v3*(p4 - p3)*100;
h4 = h3 + Wp;

%Net work
Wnet = Wt - Wp;

%Heat into the system
Qin = h1 - h4;

%Heat out of the system
Qout = h2 - h3;

%Thermal efficiency
thermal_eff = (Wnet/Qin)*100;

%Specific Steam Consumption
%SSC = mass flow rate/power
SSC = (3600/Wnet);

% Back Work ratio
BW = (Wp/Wt)


% Calculation of Temperatures at the state points
T3 = XSteam('Tsat_p', p3);
T2 = T3;
Cp4 = XSteam('Cp_ps', p4, s4);
Cv4 = XSteam('Cv_ps', p4, s4);
k = Cp4/Cv4;
T4 = T3/((p3/p4)^((k-1)/k));

%Calculating Temperature, Entropy and Enthalpy at the vapour and liquid line for plotting
T6 = XSteam('Tsat_p', p1);
s5 = XSteam('sL_p', p1);
s6 = XSteam('sV_p', p1);
h5 = XSteam('hL_p', p1);
h6 = XSteam('hV_p', p1);
T5 = T6;


%Plotting the saturation curve
T = linspace(1,375,1000);
for i = 1:length(T)

sf(i) = XSteam('sL_T', T(i));
sg(i) = XSteam('sV_T', T(i));
hf(i) = XSteam('hL_T', T(i));
hg(i) = XSteam('hV_T', T(i));
end

%Plotting T-s diagram
figure(1)
hold on
plot(sf, T, 'r','linewidth',1)
plot(sg, T, 'r','linewidth',1)
plot([s1 s2], [T1 T2], 'b', 'linewidth', 2)
plot([s2 s3], [T2 T3] ,'b', 'linewidth', 2)
plot([s3 s4], [T3 T4], 'b', 'linewidth', 2)
plot([s4 s5], [T4 T5], 'b', 'linewidth', 2)
plot([s5 s6], [T5 T6], 'b', 'linewidth', 2)
sc1 = linspace(s6, s1, 1000);
for l = 1:length(sc1)
 Tc1(l) = XSteam('T_ps', p1, sc1(l));
end
plot(sc1, Tc1, 'b', 'linewidth', 2)
text(s1+0.1, T1, '1')
text(s2+0.1, T2, '2')
text(s3, T3-20, '3')
text(s4, T4+20, '4')
title('Temp vs Entropy plot')
xlabel('Entropy ,S (Kj/kgk')
ylabel('Temperature (degree C) ')
legend('Saturation curve')


%Plotting h-s diagram
figure(2)
hold on
plot(sf, hf, 'k', 'linewidth', 1)
plot(sg, hg, 'k',  'linewidth', 1)
plot([s1 s2], [h1 h2], 'r', 'linewidth', 2)
plot([s2 s3], [h2 h3], 'r', 'linewidth', 2)
plot([s3 s4], [h3 h4], 'r', 'linewidth', 2)
hc = linspace(h4, h5, 100);
for r = 1:length(hc)
sch(r) = XSteam('s_ph', p1, hc(r));
end
plot(sch,hc, 'r', 'linewidth', 2)
plot([s5 s6], [h5 h6], 'r', 'linewidth', 2)
for m = 1:length(sc1)
hc1(m) = XSteam('h_ps', p1, sc1(m));
end
plot(sc1, hc1, 'r', 'linewidth', 2)
text(s1+0.1, h1, '1')
text(s2+0.1, h2, '2')
text(s3, h3-100, '3')
text(s4, h4 +200, '4')
title('Enthalpy vs Entropy plot')
xlabel('Entropy , S (KJ/kgk) ')
ylabel('Enthalpy , H (KJ/kg)')
legend('Saturation curve','location','northwest')



% Displaying the Results in the Command Window:
disp('Results');
p1 = p1;
T1 = T1;
p2 = p2;
disp('At stage point 1');
n1 = sprintf('P1 is %.3f bar',p1);
disp(n1);
n2 = sprintf('T1 is %.3f C',T1);
disp(n2);
n3 = sprintf('h1 is %.3f kJ/kg',h1);
disp(n3);
n4 = sprintf('s1 is %.3f kJ/kgK',s1);
disp(n4);
disp('At stage point 2');
n11 = sprintf('P2 is %.3f bar',p2);
disp(n11);
n21 = sprintf('T2 is %.3f C',T2);
disp(n21);
n31 = sprintf('h2 is %.3f kJ/kg',h2);
disp(n31);
n41 = sprintf('s2 is %.3f kJ/kgK',s2);
disp(n41);
disp('At stage point 3');
n12 = sprintf('P3 is %.3f bar',p3);
disp(n12);
n22 = sprintf('T3 is %.3f C',T3);
disp(n22);
n32 = sprintf('h3 is %.3f kJ/kg',h3);
disp(n32);
n42 = sprintf('s3 is %.3f kJ/kgK',s3);
disp(n42);
disp('At stage point 4');
n13 = sprintf('P4 is %.3f bar',p4);
disp(n13);
n23 = sprintf('T4 is %.3f C',T4);
disp(n23);
n33 = sprintf('h4 is %.3f kJ/kg',h4);
disp(n33);
n43 = sprintf('s4 is %.3f kJ/kgK',s4);
disp(n43);
n14 = sprintf('Wt is %.3f kJ/kg',Wt);
disp(n14);
n15 = sprintf('Wp is %.3f kJ/kg',Wp);
disp(n15);
n16 = sprintf('Wnet is %.3f kJ/kg',Wnet);
disp(n16);
n17 = sprintf('Thermal_efficiency is %.2f Percent',thermal_eff);
disp(n17);
n18 = sprintf('SSC is %.2f kg/kWh',SSC);
disp(n18);
n19 = sprintf('Back work ratio is %.3f ',BW);
disp(n19);

Explanation of Program

  1. Xsteam data is used to extract steam and water properties of enthalpy, entropy at a specific pressure, and temperatures for sat liquid sat vapor conditions, etc.
  2. The program requires the input of Pressure ( in the bar) at state point 1 ( turbine inlet), Temperature at the same point (degree Celcius), and pressure at the condenser inlet (point 2). 
  3. With the help of these inlets &  from Xsteam data, the program calculates all the state points of the Rankine cycle.
  4. The Xsteam data works as,   h1 = XSteam('h_pT', p1, T1) it returns the enthalpy of water at given pressure and temperature in bar and degC respectively.
  5. As we extract the data, we use thermodynamic relation to further find state points and extract their data from XSteam which are mentioned after studying the Rankine cycle. 
  6. Sf and sg, hf, and hg, where f and g stand for saturated liquid and saturated vapor respectively are calculated after studying the plots of Rankine cycles and extracting data from Xsteam file. 
  7. The network, work done by the turbine, work done to run the pump, Heat in and heat out are calculated using standard thermodynamic relation 
  8. Efficiency and Specific steam consumption (s.s.c) of the Rankine cycle are calculated from thermodynamic relations and mentioning them in the program using relations.
  9.  T, s, and h are extracted at vapor and liquid lines for plotting purpose, after the 4th point for the variation you observe in the plot. 
  10. The saturation curve is plotted in red for saturated liquid and saturated gas in T-S and in H-S it is black.
  11. The plot of T vs s and h vs s is created from all the points obtained from the program using the plot command and mentioning all the labels, linewidth, color, and title.
  12. The plot changes as the user input changes for the above-mentioned inputs. 
  13. Results are displayed in the command window by using the sprint command. 

Result - The input, output screen and the various state points with various parameters generated in the command window are shown below

GRAPHS/PLOTS/OUTPUTS

The performance of the Heat Engine was calculated and the following Observations were made:

  1. Net Work = 1120.863kJ/kg
  2. Thermal Efficiency = 36.17%
  3. Back Work Ratio = 0.003
    The T-S and H-S performance curves of the Rankine Cycle were plotted.

     

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.