Project

Rankine cycle Simulator

Aim

1) To Develop a basic program that calculates the state points

2) To add the thermodynamic relation to get the points inbetween the state variables.

3) To plot rankine cycle on T-s and H-s curve.

Theory

The Rankine cycle is the fundamental operating cycle of all power plants where an operating fluid is continuously evaporated and condensed. The selection of operating fluid depends mainly on the available temperature range. Figure 1 shows the idealized Rankine cycle. The Rankine cycle operates in the following steps:

1-2 Isentropic Expansion. The vapor is expanded in the turbine, thus producing work which may be converted to electricity. In practice, the expansion is limited by the temperature of the cooling medium and by the erosion of the turbine blades by liquid entrainment in the vapor stream as the process moves further into the two-phase region. Exit vapor qualities should be greater than 90% to increase the life of turbine blade.

2-3 Isobaric Heat Rejection. The vapor-liquid mixture leaving the turbine (2) is condensed at low pressure, usually in a surface condenser using cooling water. In well designed and maintained condensers, the pressure of the vapor is well below atmospheric pressure, approaching the saturation pressure of the operating fluid at the cooling water temperature.

3-4 Isentropic Compression. The pressure of the condensate is raised in the feed pump. Because of the low specific volume of liquids, the pump work is relatively small and often neglected in thermodynamic calculations.

4-1 Isobaric Heat Transfer. High pressure liquid enters the boiler from the feed pump (4) and is heated to the saturation temperature . Further addition of energy causes evaporation of the liquid until it is fully converted to saturated steam (1).

Figure1 Idealized Rankine cycle

The efficiency of power cycles is defined as

Code:-

Xsteam is function to get steam data

Main code

clear all
close all
clc

fprintf('       SIMULATOR OF RANKINE CYCLE  \n\n')                    
fprintf('1-2  Isentropic Expansion in the Turbine\n')
fprintf('2-3  Constant Pressure Heat Rejection by the Condenser\n')
fprintf('3-2  Isentropic Compression in the Pump\n')
fprintf('4-1  Constant Pressure Heat Addition by the Boiler\n\n')


%inputs
P1 = input('Enter the Pressure at the Turbine Inlet (in bar): ');
T1 = input('Enter the Temperature at the Turbine inlet (in Degree celsius): ');
P2 = input('Enter the Pressure at the Condenser (in bar): ');
disp('   RESULTS')
%getting Cp and cv values from Xsteam 
%Cp and Cv assumed to  not change with temperature to make problem simple
% for vapur
high_cpV= XSteam('CpV_p', P1);
low_cpV=XSteam('CpV_p', P2);
high_cvV=XSteam('CvV_p', P1);
low_cvV=XSteam('CvV_p', P2);


% for liquid
high_cpL= XSteam('CpL_p', P1);
low_cpL=XSteam('CpL_p', P2);
high_cvL=XSteam('CvL_p', P1);
low_cvL=XSteam('CvL_p', P2);


%Getting important parameters from Xsteam 
%for high pressure
T1s = XSteam('Tsat_p', P1);
S1g = XSteam('sV_p', P1);
S1f = XSteam('SL_p', P1);
S1fg = S1g - S1f;
H1f = XSteam('hL_p', P1);
H1g = XSteam('hV_p', P1);
H1fg = H1g - H1f;
%for low pressure
S2g = XSteam('sV_p', P2);
S2f = XSteam('SL_p', P2);
S2fg = S2g - S2f;
T2s = XSteam('Tsat_p', P2);
H2f = XSteam('hL_p', P2);
H2g = XSteam('hV_p', P2);
H2fg = H2g - H2f;



%% State point 1

disp('At state point 1:')

fprintf('P1 is : %f Bar\n', P1)

fprintf('T1 is : %f Deg celsius\n', T1)

H1 = XSteam('h_pt', P1, T1);
fprintf('H1 is : %f kJ/kg\n', H1)

S1 = XSteam('s_pt', P1, T1);
fprintf('S1 is : %f kJ/kgK\n\n', S1)

%% State point 2

disp('At state point 2:')

fprintf('P2 is : %f Bar\n', P2)    %P2 input already taken 

S2 = S1;
fprintf('S2 is : %f kJ/kgK\n', S2)
%predicting location of point 2 in T-s 
if(S2<=S2g)
    X2 = (S2 - S2f) / (S2fg);   % Dryness Fraction at state point 2
else
    X2=1;    
end
fprintf('X2 is :%f \n', X2)
%calculating T2 for superheat or wet or dry wherever it lies
if(X2<1)
    T2=T2s;
else 
    %t2 cal by s2=s2g+low_cpV*(log(T2/T2s))
    T2=(T2s+273.15)*exp((S2-S2g)/low_cpV) ; %2 in superheated region
    T2=T2-273.15;
end    
fprintf('T2 is : %f Deg celsius \n', T2)

if(X2<1)
   H2 = H2f + X2 * H2fg;
else
   H2=H2g+ low_cpV*(T2-T2s); 
end   
fprintf('H2 is : %f kJ/kg\n', H2)

%% State point 3
%Assuming no subcooling in condensor
disp('At state point 3:')

P3 = P2;
fprintf('P3 is : %f Bar\n', P3)

V3 = XSteam('vL_p', P3);

T3 = T2s;    %no subcooling assumed
fprintf('T3 is : %f Deg celsius\n', T3)

H3 =H2f;
fprintf('H3 is : %f kJ/kg\n', H3)

S3 =S2f;
fprintf('S3 is : %f kJ/kgK\n\n', S3)

%% State point 4
disp('At state point 4:')

P4 = P1;
fprintf('P4 is : %f Bar\n', P4)

S4 = S3;
fprintf('S4 is : %f kJ/kgK\n', S4)

Wp = V3 * (P4 - P3) * 100;
H4 = Wp + H3;
fprintf('H4 is : %f kJ/kg\n', H4)


% to cal T4 s4=s3=sf1-high_cpL*ln(t1s/t4)
term=exp((S1f-S4)/high_cpL);  %Use exp instead of Exp to take input as double
T4= T1s/term;
fprintf('T4 is : %f Deg celsius \n\n', T4)

%% Work done, heat, SSC and efficiency calculations
Wt = H1 - H2;
fprintf('Work by turbine is : %f kJ/kg\n', Wt)
fprintf('Work by compressor is : %f kJ/kg\n', Wp)
Wnet = Wt - Wp;
fprintf('Net Wok done is : %f kJ/kg\n', Wnet)
Qin = H1 - H4;
eff_thermal = Wnet / Qin ;    % Effieciency
fprintf('Thermal efficiency is : %f', eff_thermal); disp('%')
SSC = 3600 / Wt;    % Specific steam consuption
fprintf('S.S.C is : %f kg/kWh ', SSC)

%% Calculation for plotting Liquid and Vapour lines 
% 
% <<FILENAME.PNG>>
% 
temp = linspace(1, 373, 500);
for i = 1 : length(temp)
     H_L(i) = XSteam('hL_T', temp(i));
     H_V(i) = XSteam('hV_T', temp(i));
     S_L(i) = XSteam('sL_T', temp(i));
     S_V(i) = XSteam('sV_T', temp(i));
end

%% Ploting T - S and H - S Diagrams 

figure(1) % T-S
hold on
plot([S1 S2], [T1 T2], 'r', 'linewidth', 1)
text(S1,T1,' 1')
text(S2,T2,' 2')
plot([S2 S2g], [T2 T2s], 'r', 'linewidth', 1)
text(S2g,T2s,' 2s')
plot([S2g S3], [T2s T3], 'r', 'linewidth', 1)
text(S3,T3,' 3')
plot([S3 S4], [T3 T4], 'r', 'linewidth', 1)
text(S4,T4,' 4')
plot([S4 S1f], [T4 T1s], 'r', 'linewidth', 1)
text(S1f,T1s,' 4s')
plot([S1f S1g], [T1s T1s], 'r', 'linewidth', 1)
text(S1g,T1s,' 1s')
plot([S1g S1], [T1s T1], 'r', 'linewidth', 1)
plot(S_L, temp, 'b', 'linestyle','--','linewidth', 1)
plot(S_V, temp, 'b', 'linestyle','--','linewidth', 1)
%marking direction
text(S1,(T1+T2)/2,'\vee','HorizontalAlignment','center','color','r')
text((S2g+S2f)/2,T3,'\langle','color','r')
text(S3,(T3+T4)/2,'\wedge','HorizontalAlignment','center','color','r')
text((S1f+S1g)/2,T1s,'\rangle','color','r')
title('T-S Diagram of Ideal Rankine Cylce')
ylabel('Temprature (degC)')
xlabel('Specific Entropy (kJ/kgK)')

figure(2) % H-S
hold on
plot([S1 S2], [H1 H2], 'r', 'linewidth', 1);
text(S1,H1,' 1')
plot([S2 S3], [H2 H3], 'r', 'linewidth', 1);
text(S2,H2,' 2')
plot([S3 S4], [H3 H4], 'r', 'linewidth', 1);
text(S3,H3,' 3')
plot([S4 S1], [H4 H1], 'r', 'linewidth', 1);
text(S4,H4,' 4')
plot(S_L, H_L, 'b','linestyle','--', 'linewidth', 1.5)
plot(S_V, H_V, 'b','linestyle','--', 'linewidth', 1.5)      
title('H-S Diagram', 'FontSize', 15)
ylabel('Specific Enthalpy (kJ/kg)')
xlabel('Specific Entropy (kJ/kgK)')

Results

Plots

Figure2 Temperature vs Entropy curve for rankine cylce for above inputs

Figure3 Enthalpy vs Entropy curve for rankine cylce for above inputs

Conclusion

1)Rankine cycle is a power generating cycle.

2)Superheating increase the thermal efficiency of cycle.

3)It is the most practical cycle.

References

1)http://www.thermopedia.com/content/1072/

2)https://in.mathworks.com/help/matlab/ref/if.html

3)https://in.mathworks.com/help/matlab/ref/text.html

4) Refer challenges for xsteam

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.