Challenge

Project 2 - Rankine cycle Simulator

Rankine Cycle Simulator

Aim:

Creation of Rankine cycle simulator from a given input and reading the data from a standard thermodynamic library of steam table.

Objective:

  1. To create a Rankine Cycle simulator in MATLAB.
  2. To calculate the state point using function XStream.
  3. To plot the T-S and H-S curve for a given input in Rankine Cycle.
  4. To get output in the command window for each state point in the cycle.

Description:

The Rankine cycle is one of the vapor-powered cycles. This cycle is somewhat different than the gas-powered cycle in which working fluid remained gas throughout the entire cycle. In vapor powered cycle the working fluid is steam because of its many desirable characteristics such as low cost of production, availability, and high enthalpy of vaporization. There are many impracticalities associated with the Carnot cycle which can be eliminated by superheating the steam and condensing in a condenser which makes it best for nuclear power plants and other steam-related power generation sources.

The process in the Rankine cycle is given as:

  1. Isentropic Compression in Pump.
  2. Constant pressure heat addition in the boiler.
  3. Isentropic expansion in a turbine.
  4. Constant pressure heat rejection in a condenser.

Water enters the pump at state 1 as saturated liquid and is compressed isentropically to the operating pressure of the boiler. The water temperature increases somewhat during this isentropic compression process due to a slight decrease in the specific volume of water. The vertical distance between states 1 and 2 on the T-s diagram is greatly exaggerated for clarity.

Water enters the boiler as a compressed liquid at state 2 and leaves as superheated vapor at state 3. The boiler is basically a large heat exchanger where the heat originating from combustion gases, nuclear reactors, or other sources is transferred to the water essentially at constant pressure. The
boiler, together with the section where the steam is superheated (the superheater), is often called the steam generator.

The superheated vapor at state 3 enters the turbine, where it expands isentropically and produces work by rotating the shaft connected to an electric generator. The pressure and the temperature of steam drop during this process to the values at state 4, where steam enters the condenser. At this
state, steam is usually a saturated liquid–vapor mixture with high quality. Steam is condensed at constant pressure in the condenser, which is basically a large heat exchanger, by rejecting heat to a cooling medium such as a lake, a river, or the atmosphere. Steam leaves the condenser as saturated liquid and enters the pump, completing the cycle. In areas where water is precious, the power plants are cooled by air instead of water. This method of cooling, which is also used in car engines, is called dry cooling.

Remembering that the area under the process curve on a T-s diagram represents the heat transfer for internally reversible processes, we see that the area under process curves 2-3 represents the heat transferred to the water in the boiler, and the area under the process curve 4-1 represents the heat rejected in the condenser. The difference between these two is the net work produced during the cycle.

All four components of the Rankine cycle are steady flow devices hence the process regarding this device can be evaluated as a steady state process. The steady-state flow energy equation per unit mass of steam reduces to:

`( q_(In) − q _(o u t) ) + ( W_( I n) − W_( o u t) ) = h_e − h_i`

The boiler and condenser are not involved in any mechanical work whereas pump and turbine are assumed to isentropic in nature while working throughout the cycle, then conservation of energy relation for each device can be expressed as:

`W _(p u m p) = h_2 − h_1`

Where,

`h_1 = h_f a t P_ 1 and v_ 1 = v_ f a t P_1`

The heat added in a boiler can be given as:

`q _(In) = h _3 − h _2`

The work which can be taken out of the cycle from a turbine is given as:

`W_(out)= h_ 3 −h_4`

The heat removed from the condenser is given as:

`q _(o u t) = h _4 − h_1`

The thermal efficiency of Rankine cycle is given as:

`η_(t h) = W_( N e t)/ (q_(I n)) = 1 − q_(o u t)/ q_(I n)`

Where,

`W _(N e t) = q _(I n) − q_(o u t) = W_(t u r b) −W_(p u m p)`

MATLAB PROGRAM FOR RANKINE CYCLE SIMULATOR:

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);

Code Explanation:

  1. The creation of Rankine cycle simulator starts with some input values that are required to calculate the other state point in the cycle eventually.
  2. The Rankine cycle process is displayed in the command window and then inputs are entered which are inlet pressure for the turbine, the temperature at the turbine inlet, and pressure at the condenser.
  3. Then we are using XSteam function file for reading the state point. First, we get the value of enthalpy and entropy at state point 1 from the XSteam function file.
  4. As process from 1-2 is isentropic compression the entropy at point 1 is equal to point 2. The term ‘(s_pT, p1, T1)’ refers to entropy at pressure and temperature point 1.
  5. The term ‘sg’ and ‘sf’ are referred to saturated liquid and saturated vapor entropy respectively. This value is used to calculate other functions according to mathematical relations.
  6. Similarly, other points are taken from XSteam function file which are necessary to calculate other parameters. After that work done in the turbine and pump are calculated for further getting the net work done Rankine cycle.
  7. After calculating the net work done the efficiency of the Rankine cycle is calculated along with specific steam consumption which is steam consumed by a locomotive cylinder per unit of output of work done.
  8. The temperature at each point of the cycle is calculated using input taken from start of the program and data taken from XSteam file. For given temperature range from lower to higher entropy points are calculated to create the T-S plot. Similarly, another for loop is used to create the saturation curve in each plot.
  9. Then plotting is done respectively for T-s and H-s graph in Rankine cycle and each state point value has been put in a command window.
  10. 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.
  11. The plot changes as the user input changes for the above-mentioned inputs.
  12. Results are displayed in the command window by using the sprint command.

Inference of Plot:

To make the graph more deliberate we are changing some values in the inputs by increasing the inlet pressure and temperature along with condenser pressure also which results in the following graphs.

From the above diagram as we can see along the saturation curve point 1 start with turbine from which heat rejection is started which is again isentropic process. The steam is get cooled in condenser and in form of saturated liquid as it is under the curve. Then it was pumped to enter in boiler where its temperature is increased to change it from saturated liquid to saturated vapor form.

As we can see from above plot the steam entropy changes during the process with respect to enthalpy. As the heat added in the system the entropy has been increased and similarly as the heat removed from the system the entropy drops with similar rates.

For the parameters given in the challenge the graph will look like this:

The values for the state point in command windows are given as:

For Inlet pressure in Turbine as = 50 bar

Inlet temperature in Turbine = 500 deg.cel

Pressure in condenser = 5 bar

For Input given in challeng:

For Inlet pressure in Turbine as = 30 bar

Inlet temperature in Turbine = 400 deg.cel

Pressure in condenser = 0.05 bar

From the two different input value it is seen that increasing the pressure and temperature in turbine result in lowering the efficiency of Rankine cycle.

Errors:

This error is mostly coming because of entering wrong keywords for saturated entropy and enthalpy from XSteam function file.

Conclusion:

So, we have created the Rankine cycle simulator for the given input, in which we have taken the data from XSteam function file.

References:

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.