{
"metadata": {
"name": "",
"signature": "sha256:69d143b4ecc3002f2af855f2e658d198ebb02b8724d63ebaafa2d3852719f95d"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Chapter7, Electric Traction"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex1 : Page 352"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"from sympy import symbols, solve\n",
"from numpy import array\n",
"#To determine the Acceleration and Coasting Period\n",
"\n",
"D=1.92\n",
"Ts=20 #Duration of stops\n",
"Vsch=40 \n",
"V1=60.8 \n",
"#Retardation\n",
"B=3.2 \n",
"Bc=0.16 \n",
"\n",
"SchTime=D*3600/Vsch # Schedule time in seconds\n",
"\n",
"T=SchTime-Ts #Time of Travel\n",
"\n",
"a=symbols('a') # Acceleration Unknown Value\n",
"\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"\n",
"X=((V1+V2)*T-(V1*V2*((1/B)+(1/a))))-(7200*D) #Polynomial Equation to find a\n",
"a=solve(X, a) #Roots of the Characteristic Equation\n",
"#To Determine the positive roots\n",
"Y=array([abs(a[0])+a[0], abs(a[1])+a[1] ])\n",
"if Y[0]==0:\n",
" a=a[1] \n",
"else:\n",
" a=a[0] \n",
"\n",
"\n",
"Ta=V1/a #Duration of acceleration\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"Tcs=(V1-V2)/Bc #Coasting Time Period\n",
"\n",
"print 'The Acceleration of the Train is %0.2f Kmphp '%a \n",
"print 'The Coasting Period is %0.2f seconds'%Tcs "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Acceleration of the Train is 2.13 Kmphp \n",
"The Coasting Period is 110.80 seconds\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex2 page 353"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the duration of acceleration and others\n",
"D=1.6 \n",
"Vav=40 \n",
"Bc=0.16 \n",
"B=3.2 \n",
"a=2 #Acceleration\n",
"\n",
"T=D*3600/Vav #Time of travel\n",
"\n",
"V1=symbols('V1') #Variable Value\n",
"\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"\n",
"#Formula #7200*D = (V1+V2)*T-V1*V2(1/B+1/alfa)\n",
"X=((V1+V2)*T-(V1*V2*((1/B)+(1/a))))-(7200*D) #Polynomial Equation to find V1\n",
"V1=solve(X, V1) #Numerical Values for V1\n",
"V1=V1[0] #Train Considered have speed close to this value\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"Ta=V1/a #Acceleration Time\n",
"Tc=(V1-V2)/Bc #Coasting Time\n",
"Tb=V2/B #Braking time\n",
"#Distance are calculated according to the area under their respective curves\n",
"Da=(Ta*V1/2)/3600 #Distance during acceleration\n",
"Dc=(((V1-V2)*Tc/2)+(V2*Tc))/3600 #Distance during coasting\n",
"Db=(Tb*V2/2)/3600 #Distance during braking\n",
"\n",
"print 'The Time periods and the distance covered for:' \n",
"print 'Acceleration : %.2f seconds and %0.3f km '%(Ta,Da)\n",
"print 'Coasting : %0.2f seconds and %0.3f km '%(Tc,Dc)\n",
"print 'Braking : %0.2f seconds and %0.3f km '%(Tb,Db)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Time periods and the distance covered for:\n",
"Acceleration : 27.06 seconds and 0.203 km \n",
"Coasting : 105.30 seconds and 1.336 km \n",
"Braking : 11.65 seconds and 0.060 km \n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex3: page 354"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the acceleration required to run the service\n",
"\n",
"\n",
"D=1 \n",
"Ts=20 #Stopping Time\n",
"B=3 \n",
"Vsh=30 \n",
"ShT=D*3600/Vsh #Schedule time\n",
"T=ShT-Ts #Actual Run Time\n",
"Vav=D*3600/T #Average Speed\n",
"Vm=1.25*Vav \n",
"a=symbols('a') #Acceleration Variable\n",
"\n",
"X=((2*Vm*T)-((Vm**2)*((1/a)+(1/B))))-(7200*D) #Polynomial Equation to find 'a'\n",
"\n",
"a=solve(X, a)[0] #Numerical Value of the Acceleration\n",
"\n",
"print 'The Accleration required to run the service is %g Kmphps'%a "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Accleration required to run the service is 1.8 Kmphps\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex4 : Page 356"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the time taken by the train to attain a particular speed\n",
"\n",
"M=200 #Mass of train\n",
"g=9.81 #Acceleration due to gravity\n",
"W=M*g \n",
"RI=10/100 #Rotational Inertia\n",
"We=W*(1+RI) \n",
"motor=4 #Number of Motors\n",
"Tm=5000 #Torque per motor\n",
"T=Tm*motor \n",
"V=40 #Speed to be Attained\n",
"N=0.9 #Gear Efficiency\n",
"Y=3.6/1 #Gear Ratio\n",
"R=91.5*(10**-2)/2 \n",
"Ft=N*T*Y/R \n",
"r=40 \n",
"G=(1/200)*100 #Gradient in Percentage\n",
"a=symbols('a') #Acceleration\n",
"\n",
"X=((28.3*We*a)+(10*W*G)+(M*r))-Ft #Polynomial Equation to find acceleration\n",
"\n",
"a=solve(X)[0] #Numerical Value of Acceleration\n",
"Time=V/a #Time Taken to attain the required the necessary speed\n",
"\n",
"print 'The Time Taken by the Train to attain 40 Kmphs is %0.2f seconds'%Time "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Time Taken by the Train to attain 40 Kmphs is 19.73 seconds\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex7.5 :Page 363"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"#To determine the Factors affeting the mechanics of the Train\n",
"\n",
"D=1.92\n",
"Ts=20 #Duration of stops\n",
"Vsch=40 \n",
"V1=60.8 \n",
"#Retardation\n",
"B=3.2 \n",
"Bc=0.16 \n",
"SchTime=D*3600/Vsch # Schedule time in seconds\n",
"T=SchTime-Ts #Time of Travel\n",
"a=symbols('a') # Acceleration Unknown Value\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"X=((V1+V2)*T-(V1*V2*((1/B)+(1/a))))-(7200*D) #Polynomial Equation to find a\n",
"a=solve(X,a)[1] #taking +ve root\n",
"\n",
"Ta=V1/a #Duration of acceleration\n",
"V2=(V1-Bc*(T-(V1/a)))/(1-(Bc/B)) # From the Speed Time Curve\n",
"Tc=(V1-V2)/Bc #Coasting Time\n",
"Tb=V2/B #Braking time\n",
"#Distance are calculated according to the area under their respective curves\n",
"Da=(Ta*V1/2)/3600 #Distance during acceleration\n",
"Dc=(((V1-V2)*Tc/2)+(V2*Tc))/3600 #Distance during coasting\n",
"Db=(Tb*V2/2)/3600 #Distance during braking\n",
"\n",
"r=4.53*9.81 #Train Resistance in N per tonne\n",
"M=200 #Mass of Train\n",
"AWF=1.1 #Accelerating Weight Factor\n",
"SEOA=0.010726*(V1**2)*(AWF)/D #Specific Energy Output during acceleration\n",
"SEOAr=0.2778*r*Da/D #Specific Energy Output during acceleration against train resistance\n",
"SEO=SEOA+SEOAr #Specific Energy for the run\n",
"SEOB=0.010726*(V2**2)*(AWF)/D #Specific Energy Output during braking\n",
"SEOC=SEOA-SEOB #energy utilized during coasting\n",
"rc=SEOC*D/(0.2778*Dc)#Mean Train Resistance during coasting\n",
"\n",
"print '\\ni)The Specific Energy Output for the Run is %0.3f Whr/Tonne-km\\n'%SEO\n",
"print 'ii) The Energy Dissipated by the brakes is %0.3f Whr/Tonne-km\\n'%SEOB\n",
"print 'iii)The Energy Utilized during coasting is %0.3f Whr/Tonne-km\\n'%SEOC\n",
"print 'iv) The Mean Train Resistance during coasting is %0.2f N/tonne\\n'%rc\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"i)The Specific Energy Output for the Run is 24.266 Whr/Tonne-km\n",
"\n",
"ii) The Energy Dissipated by the brakes is 11.400 Whr/Tonne-km\n",
"\n",
"iii)The Energy Utilized during coasting is 11.316 Whr/Tonne-km\n",
"\n",
"iv) The Mean Train Resistance during coasting is 48.93 N/tonne\n",
"\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex6 : Page 364"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"#To determine the Specific Energy Output Runs for Both the Cases\n",
"from sympy import symbols, solve\n",
"G=(1/80)*100 \n",
"W=210 \n",
"We=1.1*W \n",
"Vm=symbols('Vm') #Variable Value of The Max Velocity \n",
"D=1.6 #Distance between Stations\n",
"Ftg=10*W*G #Tractive Effort due to Gradient\n",
"Fta=13050 #Total Tractive Effort for Acceleration\n",
"Ftb=20445 #Total Tractive Effort for Retardation\n",
"ron=5.43 #Train Resistance when power on\n",
"rc=6.525 #Train Resistance when coasting\n",
"#Level Track\n",
"al=2 \n",
"Bl=3.2 \n",
"\n",
"#Up Gradient\n",
"Vavu=40 #Average Speed\n",
"Tu=D*3600/Vavu #Total Time Taken \n",
"au=(Fta-Ftg)/(28.3*We) #Acceleration\n",
"Bu=(Ftb+Ftg)/(28.3*We) #Retardation\n",
"Xu=((2*Vm*Tu)-((Vm**2)*((1/au)+(1/Bu))))-(7200*D) #Polynomial Equation to Find Vm\n",
"Vmu=solve(Xu, Vm)[0] #Numerical Value of Vm\n",
"Tua=Vmu/au #Accelerating Period\n",
"Tub=Vmu/Bu #Braking Period\n",
"Tucs=Tu-Tua-Tub #Constant Speed Duration\n",
"Dua=Vmu*Tua/(2*3600) #Distance Travelled During Accleration in km\n",
"Dub=Vmu*Tub/(2*3600) #Distance Travelled During Braking in km\n",
"Duon=D-Dub #Distance run with power on\n",
"SEOua=0.010726*(Vmu**2)*(We/W)/D #Specific Energy Output during Acceleration\n",
"SEOug=27.25*G*Duon/D #Specific Energy Output for Gradient\n",
"SEOur=0.2778*ron*9.81*Duon/D #Specific Energy Output for resitance\n",
"TSEOu=SEOua+SEOug+SEOur #Total Specific Output\n",
"\n",
"#Down Gradient\n",
"Vavd=44 #Average Speed\n",
"Td=D*3600/Vavd #Total Time Taken \n",
"ad=(Fta+Ftg)/(28.3*We) #Acceleration\n",
"Bd=(Ftb-Ftg)/(28.3*We) #Retardation\n",
"Xd=((2*Vm*Td)-((Vm**2)*((1/ad)+(1/Bd))))-(7200*D) #Polynomial Equation to Find Vm\n",
"Vmd=solve(Xd, Vm)[0] #Numerical Value of Vm\n",
"Tda=Vmd/ad #Accelerating Period\n",
"Tdb=Vmd/Bd #Braking Period\n",
"Tdcs=Td-Tda-Tdb #Constant Speed Duration\n",
"Dda=Vmd*Tda/(2*3600) #Distance Travelled During Accleration in km\n",
"Ddb=Vmd*Tdb/(2*3600) #Distance Travelled During Braking in km\n",
"Ddon=D-Ddb #Distance run with power on\n",
"SEOda=0.010726*(Vmd**2)*(We/W)/D #Specific Energy Output during Acceleration\n",
"#Net Force Acting Downward due to gradient and resistance\n",
"Fnet=W*((10*G)-rc) \n",
"#Since Fnet is Postive, To run the train at constant speed brakes will have to applied therefore they cannot supply electric energy\n",
"TSEOd=SEOda #Total Sepcific Enegy Consumption\n",
"\n",
"print 'The Total Specific Energy:' \n",
"print 'Up Gradient : %0.2f Whr/Tonne km'%TSEOu\n",
"print 'Down Gradient : %0.2f Whr/Tonne km '%TSEOd"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Total Specific Energy:\n",
"Up Gradient : 62.48 Whr/Tonne km\n",
"Down Gradient : 20.05 Whr/Tonne km \n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex 7: Page 366"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the specific energy consumption\n",
"from __future__ import division\n",
"W=400 \n",
"G=1 \n",
"a=1.5 #Acceleration\n",
"Ta=30 #Acceleration Time\n",
"Tf=36 #Free running Period\n",
"Tc=25 #Coasting Period\n",
"B=2.6 \n",
"r=45 \n",
"RI=10/100 #Rotational Inertia Effect\n",
"Eff=75/100 # Overall Efficieny\n",
"g=9.81 #Accleration due to gravity\n",
"\n",
"Vm=Ta*a \n",
"We=W*(1+RI) \n",
"\n",
"#Distance Covered is equal to the area under the speed time curve\n",
"Da=Vm*Ta/(2*3600) #Acceleration\n",
"Df=Vm*Tf/3600 #Free Run\n",
"\n",
"Ftf=W*(r+(10*g*G)) #Tractive effort during free run period\n",
"\n",
"Fta=We*277.8 #Tractive effort due to acceleration\n",
"\n",
"#During Coasting, The Accelrating force is equal to Tractive effort during free run\n",
"#Retardation due to coasting is \n",
"Bc=Ftf/Fta \n",
"\n",
"V2=Vm-(Bc*Tc) #Speed of train after the coasting period\n",
"Tb=V2/B # Braking period\n",
"\n",
"Dc=((((Vm-V2)*Tc)/2)+(V2*Tc))/3600 #Distance covered during coasting\n",
"Db=V2*Tb/(2*3600) #Distance covered during braking\n",
"\n",
"D=Da+Df+Dc+Db #Total Distance\n",
"\n",
"D1=Da+Df #Distance for which the energy is being spent\n",
"\n",
"SEO=(0.010726*(Vm**2)*We/(W*D))+(27.25*G*D1/D)+(0.2778*r*D1/D) #Specific Energy Output\n",
"#Note the Calculated Specific Energy Output during accleration is wrong.\n",
"\n",
"SEOa=SEO/Eff #Actual Specific Energy Output with 75% efficieny\n",
"\n",
"print 'The Specific Energy Consumption is %0.2f Whr/Tonne Km'%SEOa "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Specific Energy Consumption is 67.78 Whr/Tonne Km\n"
]
}
],
"prompt_number": 7
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex 8 : Page 368"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"#To determine the weight of the locomotive\n",
"from math import ceil\n",
"Wg=300 #Weight of the train to be hauled\n",
"RI=10/100 #Rotation inertia\n",
"Ma=20/100 #Co-Efficient of adhesion\n",
"Wa=20 #Permissible Weight of axle load\n",
"r=45 \n",
"G=2 \n",
"a=1 #Acceleration\n",
"Wl=symbols('Wl') #Variable Weight of locmotive\n",
"W=Wg+Wl #Total Weight of the train\n",
"We=W*(1+RI) \n",
"Ft=((277.8*a*We/W)+(98.1*G)+r)*W \n",
"\n",
"Fmax=(9.81*1000*Ma*Wl) \n",
"\n",
"X=Ft-Fmax #Polynomial Equation to find Wl\n",
"\n",
"Wl=solve(X, Wl)[0] #Numerical Value of the Weight of the locomotive\n",
"\n",
"NoA=Wl/Wa #Number of axles\n",
"\n",
"print 'The weight of the locomotive and the number of axles is %0.1f tonnes and %g axles respectively\\n'%(Wl,ceil(NoA))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The weight of the locomotive and the number of axles is 115.9 tonnes and 6 axles respectively\n",
"\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex 9 : Page 370"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To deduce the speed current characteristic of the motor\n",
"from numpy import array\n",
"Ia=array([10,20,30,40,50,60,70] ) #Current\n",
"T=array([45,130,230,350,470,610,765]) #Torque\n",
"V=440 #operating voltage\n",
"r=0.5 #Armature Circuit Resistance\n",
"\n",
"\n",
"N=9.55*(V-(Ia*r))/(T/Ia) #Speed\n",
"\n",
"print 'For the Given Current: ' \n",
"for ia in Ia:\n",
" print \"%0.f \"%ia, \n",
"print '\\nThe Speeds tabulated are:'\n",
"for n in N:\n",
" print \"%0.f \"%n,\n",
"# Answer in the textbook are not accurate."
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"For the Given Current: \n",
"10 20 30 40 50 60 70 \n",
"The Speeds tabulated are:\n",
"923 632 529 458 422 385 354 \n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex10: Page371"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"#To determine the speed torque curve for the series motor\n",
"from numpy import linalg\n",
"I=array([50,100,150,200,250,300]) #Field Current\n",
"Eb1=array([230,360,440,500,530,580]) #Armature Volts\n",
"Ra=0.07 #Armature Winding Resistance\n",
"Rf=0.05 #Field Resistance\n",
"Rt=Rf+Ra #Total Resistance\n",
"P=4 #Poles of the machine\n",
"N1=600 #Series Motor Speed\n",
"Vc=600 #Constant Operating Voltage\n",
"\n",
"# Note that the Suffix 1 and 2 have given according the question 1 stands for the case where the magnetisation curve has been given and 2 stands for the case where we have to find the speed torque curve\n",
"\n",
"Eb2=Vc-(I*(Rt)) \n",
"N2=N1*Eb2/Eb1 #Speed\n",
"\n",
"T=9.55*Eb2*I/N2 #Torque\n",
"\n",
"print 'The Tabulated Speeds for 600V are:\\n'\n",
"for n2 in N2:\n",
" print \"%0.f \"%n2,\n",
"print '\\n\\nAnd their corresponding torques are:\\n'\n",
"for t in T:\n",
" print \"%0.f \"%t,\n",
"# Answer in the textbook are not accurate."
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Tabulated Speeds for 600V are:\n",
"\n",
"1550 980 794 691 645 583 \n",
"\n",
"And their corresponding torques are:\n",
"\n",
"183 573 1050 1592 2109 2770 \n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex11 : Page 378"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the horse power delivered by the locomotive\n",
"from math import sqrt\n",
"\n",
"Ftl=35000 #Tractive Effort on a level surface\n",
"Ftg=55000 #Tractive Effort on a gradient\n",
"V=50 #Speed of the train\n",
"HP=735.5 #One Horse Power\n",
"Pl=Ftl*V*1000/(3600*HP) #Power Output(in HP) of the Locomotive on the level track\n",
"\n",
"#CASE 1:\n",
"#D.C Series Motor, Power is directly proportional to the root of the Trative Effort \n",
"HP1=Pl*sqrt(Ftg/Ftl) \n",
"\n",
"#CASE 2:\n",
"#3 Phase Induction Motor, Power is directly proportional to the Trative Effort\n",
"HP2=Pl*(Ftg/Ftl) \n",
"\n",
"print 'The Horse Power delivered by the locmotive when the motors used are:' \n",
"print 'i) D.C Series Motor is %0.1f H.P '%HP1 \n",
"print 'ii) 3 Phase Induction Motor is %0.1f H.P '%HP2\n",
"#Note the Calculation Mistake in TextBook for case 2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Horse Power delivered by the locmotive when the motors used are:\n",
"i) D.C Series Motor is 828.5 H.P \n",
"ii) 3 Phase Induction Motor is 1038.6 H.P \n"
]
}
],
"prompt_number": 11
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex12 : Page 378"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To Determine the tractive effort shared by the two locomotives\n",
"\n",
"\n",
"Da=1.27 #Loco A wheel diameter\n",
"Db=1.244 #Loco B wheel diameter\n",
"S=5 #Slip of both the Locomotives in Case 1\n",
"Sa=S #Slip of Loco A in Case 2\n",
"Sb=4 #Slip of Loco B in Case 2\n",
"Ftta=11325 #Total Tractive Effort in Case 1\n",
"Fttb=1309 #Total Tractive Effort in Case 2\n",
"Ft=5227 #Full Load Tractive Effort of Loco\n",
"\n",
"x=symbols('x') #Variable for Tractive Effort Exerted by Loco A\n",
"\n",
"#Slips are same\n",
"#For 11325 kg\n",
"#% Speed\n",
"NA=100-(S*x/Ft) \n",
"NB=100-(S*(Ftta-x)/Ft) \n",
"Rna=NB/NA #Speed Ratio\n",
"\n",
"Y1=Rna-(Da/Db) #Polynomial to find out 'x'\n",
"x=solve(Y1, x)[0] #Numerical Value of Tractive Effort shared by A\n",
"\n",
"#Tractive Efforts Shared by A Loco and B Loco\n",
"FtAas=x \n",
"FtBas=Ftta-x \n",
"\n",
"#For 1309 kg\n",
"#% Speed\n",
"x=symbols('x') #Variable for Tractive Effort Exerted by Loco A\n",
"NA=100-(S*x/Ft) \n",
"NB=100-(S*(Fttb-x)/Ft) \n",
"Rn1=NB/NA #Speed Ratio\n",
"\n",
"Y2=Rn1-(Da/Db) #Polynomial to find out 'x'\n",
"x=solve(Y2, x)[0] #Numerical Value of Tractive Effort shared by A\n",
"\n",
"#Tractive Efforts Shared by A Loco and B Loco\n",
"FtAbs=x \n",
"FtBbs=Fttb-x \n",
"\n",
"#Different Slips\n",
"#For 11325 kg\n",
"#% Speed\n",
"x=symbols('x') #Variable for Tractive Effort Exerted by Loco A\n",
"NA=100-(Sa*x/Ft) \n",
"NB=100-(Sb*(Ftta-x)/Ft) \n",
"Rna=NB/NA #Speed Ratio\n",
"\n",
"Y3=Rna-(Da/Db) #Polynomial to find out 'x'\n",
"x=solve(Y3,x)[0] #Numerical Value of Tractive Effort shared by A\n",
"\n",
"#Tractive Efforts Shared by A Loco and B Loco\n",
"FtAad=x \n",
"FtBad=Ftta-x \n",
"\n",
"#For 1309 kg\n",
"#% Speed\n",
"x=symbols('x') #Variable for Tractive Effort Exerted by Loco A\n",
"NA=100-(Sa*x/Ft) \n",
"NB=100-(Sb*(Fttb-x)/Ft) \n",
"Rn2=NB/NA #Speed Ratio\n",
"\n",
"Y4=Rn2-(Da/Db) #Polynomial to find out 'x'\n",
"x=solve(Y4, x)[0] #Numerical Value of Tractive Effort shared by A\n",
"\n",
"#Tractive Efforts Shared by A Loco and B Loco\n",
"FtAbd=x \n",
"FtBbd=Fttb-x \n",
"\n",
"print 'The Tractive Effort shared A and B for:'\n",
"print 'i) Slips are %d percent for both the Locomotives for a Tractive effort of:'%S \n",
"print 'a) %d kg : %d kg by A and %d kg by B respectively'%(Ftta,FtAas,FtBas)\n",
"print 'b) %d kg : %d kg by A and %d kg by B respectively'%(Fttb,FtAbs,FtBbs)\n",
"print 'i) Slips are %d percent for A and %d percent for B for a Tractive effort of:'%(Sa,Sb)\n",
"print 'a) %d kg : %d kg by A and %d kg by B respectively'%(Ftta,FtAad,FtBad)\n",
"print 'b) %d kg : %d kg by A and %d kg by B respectively'%(Fttb,FtAbd,FtBbd)\n",
"\n",
"#Please Note there is caluculation mistake calculation in the TextBook for the First Case"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Tractive Effort shared A and B for:\n",
"i) Slips are 5 percent for both the Locomotives for a Tractive effort of:\n",
"a) 11325 kg : 6685 kg by A and 4639 kg by B respectively\n",
"b) 1309 kg : 1728 kg by A and -419 kg by B respectively\n",
"i) Slips are 5 percent for A and 4 percent for B for a Tractive effort of:\n",
"a) 11325 kg : 6175 kg by A and 5149 kg by B respectively\n",
"b) 1309 kg : 1775 kg by A and -466 kg by B respectively\n"
]
}
],
"prompt_number": 12
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex13 : Page 386"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the traction control of 2 motors rated at 1500V\n",
"\n",
"\n",
"NoM=2 #Number of motors\n",
"V=1500 #Rated Voltage\n",
"I=500 #Starting Current\n",
"R=0.15 #Armature Resistance\n",
"r=50 #Specific Resistance\n",
"W=120 \n",
"We=140 \n",
"Ft=38000 # Tractive Effort Per motor\n",
"\n",
"Vs=40 #Speed at the end of starting period\n",
"#Note the question is asked for 50 Kmph, But the answer is calculated for 40Kmph\n",
"#Therefore it is calculated for 40 Kmph\n",
"#By Changing the value of Vs to 50 Kmph, The Specific Parameters can also be obtained\n",
"\n",
"a=symbols('a') #Accleration Variable\n",
"\n",
"X=(2*Ft)-((277.8*We*a)+(W*r)) #Polynomial To find 'a'\n",
"\n",
"a=solve(X)[0] #To find the Numerical Value of the Acceleration\n",
"\n",
"t=Vs/a #Starting Time\n",
"\n",
"Vd=I*R #Resistance drop per motor\n",
"\n",
"ts=t*(V-(2*Vd))/(2*(V-Vd)) #Starting Series Time Period\n",
"tp=t-ts #Starting Parallel Time Period\n",
"\n",
"Vt=a*ts #Speed at Transition\n",
"#Loss can be found out by the computing the area under the of the given figure in the text book for different period\n",
"#In series, the Voltage reduces, Hence 675 \n",
"Rhel=((((V/2)-Vd)*I*ts)+((V/2)*I*tp))/(2*3600*1000) #Loss per motor in kWhr\n",
"Rhe=NoM*Rhel #Total Rheostatic Loss\n",
"\n",
"print 'i) The Duration of starting period is %0.1f seconds'%t \n",
"print 'ii)The Speed of Train at Transition is %0.2f Kmph'%Vt\n",
"print 'iii) The Rheostatic Loss is %0.3f kWhr'%Rhe "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"i) The Duration of starting period is 22.2 seconds\n",
"ii)The Speed of Train at Transition is 18.95 Kmph\n",
"iii) The Rheostatic Loss is 2.205 kWhr\n"
]
}
],
"prompt_number": 13
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex14 : Page 387"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the speed of motors when connected in series\n",
"\n",
"V=650 #Rating of motor and Supply Voltage when connected in parallel\n",
"IR=10*650/100 #Armature Drop\n",
"N1p=1000 #Speed of the first motor in parallel operation\n",
"D1=88 #Motor 1 wheels diameter\n",
"D2=86 #Motor 2 wheels diameter\n",
"\n",
"#Current Remains Constant during the start\n",
"\n",
"r=D1/D2 #Ratio of the first motor wheel diameter to the second motor wheel diameter\n",
"\n",
"#N1/N2 = 1/r\n",
"\n",
"V1=((V-IR)/(1+(r)))+((IR)/(1+(1/r))) #Voltage of Motor 1 in series operation\n",
"V2=V-V1 #Voltage of Motor 2 in series operation\n",
"\n",
"N1=N1p*(V1-IR)/(V-IR) #Speed of motor 1 in series configuration\n",
"N2=N1*r #Speed of motor 2 in series configuration\n",
"\n",
"print 'The Speed of Motor 1 in series Configuration is %d rpm'%N1\n",
"print 'The Speed of Motor 2 in series Configuration is %d rpm'%N2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Speed of Motor 1 in series Configuration is 439 rpm\n",
"The Speed of Motor 2 in series Configuration is 449 rpm\n"
]
}
],
"prompt_number": 14
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex15 : Page 387"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"from numpy import array, nditer\n",
"#To determine the characteristics gear ratio and wheels are replaced\n",
"\n",
"\n",
"D1=86 #Diameter of wheels in Case 1\n",
"Y1=71/21 #Gear Ratio in Case 1\n",
"D2=88 # Diameter of wheels in Case 2\n",
"Y2=74/19 #Gear Ratio in case 2\n",
"I=array([50,100,150,200,250,300] ) #Current\n",
"L1=array([80,50,45,40,36,32] ) #Speed in Kmph\n",
"Ft1=array([2000,6000,12000,16000,18000,22000]) #Tractive Effort\n",
"\n",
"# V = pi*D*N*60/(100*100*Y)\n",
"#According to the above equation, V is directly proportional to D*N/Y\n",
"\n",
"#Angular Frequency And Torque remains the same irrespective of the gear ratio or change in diameter\n",
"\n",
"#Hence the V is directly proportional to D/Y\n",
"\n",
"#V id directly proportional to N\n",
"# N directly proportional to Linear speed\n",
"#Hence relating the above terms\n",
"#We get linear speed directly proportional to D/Y\n",
"\n",
"def fun1(L1):\n",
" it = nditer([L1, None])\n",
" for x,y in it:\n",
" y[...] = x*D2*Y1/(D1*Y2)\n",
" return it.operands[1]\n",
"\n",
"L2 = fun1(L1) #Linear Speed in Case two\n",
"\n",
"#Similarly T = Ft * D/(200)\n",
"#Dividing by Y (T/Y) = Ft*D/(200*Y)\n",
"#Taking two cases where we find Torque per gear ratio of one case\n",
"# And multiply the Torque to Gear ratio to the other gear ratio to get Torque\n",
"# From this process we T1*Y2/Y1 =T2\n",
"# We Get Ft is directly proportional to Y/D\n",
"\n",
"def fun2(Ft1):\n",
" it = nditer([Ft1, None])\n",
" for x,y in it:\n",
" y[...] = x*D1*Y2/(D2*Y1)\n",
" return it.operands[1]\n",
"\n",
"Ft2=fun2(Ft1) #Tractive Effort in Second Case\n",
"\n",
"print 'The New Characteristics are - \\nCurrent in Amperes'\n",
"for i in I:\n",
" print \"%d \"%i,\n",
"print '\\n\\nSpeed in Kmph' \n",
"for l2 in L2:\n",
" print \"%0.2f \"%l2, \n",
"print '\\n\\nTractive Effort in N' \n",
"for ft2 in Ft2:\n",
" print \"%0.f \"%ft2,\n",
" \n",
"# Answers are not accurate in the textbook."
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The New Characteristics are - \n",
"Current in Amperes\n",
"50 100 150 200 250 300 \n",
"\n",
"Speed in Kmph\n",
"71.00 44.00 39.00 35.00 31.00 28.00 \n",
"\n",
"Tractive Effort in N\n",
"2251 6754 13509 18012 20264 24767 \n"
]
}
],
"prompt_number": 15
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex16 : Page 388"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"#To Determine the Resistance of the Various Steps in a Series Motor\n",
"\n",
"P=20*735.5 #Watt # Power Rating\n",
"V=500 #Rated Voltage\n",
"Eff=80/100 #Efficiency\n",
"Raw=1 #Resistance of Armature and Windings\n",
"Iflux=10/100 #Increase in Flux\n",
"\n",
"I=P/(V*Eff) #Full load Current\n",
"\n",
"\n",
"#VAriation in Current\n",
"Imin=1.5*I \n",
"Imax=2*I \n",
"\n",
"fi_maxBYfi_min = 1+Iflux\n",
"FluxRatio=1+(Iflux) #Flux raises by 10% for every step\n",
"# eqn : fimax/fi_min = (V-Imax*R2)/(V-*Imin*R1)\n",
"from sympy import symbols, solve\n",
"Is=V/Raw \n",
"M=Imax-Is \n",
"for i in range(1,5):\n",
" \n",
" if((abs(M)+M)==0):\n",
" c=i #Number of steps + 1\n",
" R=symbols('R') #Variable Resitance\n",
" X=((V-(Imax*Raw))/(V-(Imin*R)))-FluxRatio #Polynomial To Find The Next Resistance\n",
" Rs =solve(X, R)[0] #Total Next Resistance\n",
" Rg=Rs-Raw #Resistance of the ith Step\n",
" print \"Resistance of %d step = %0.2f ohm\"%(i,Rg)\n",
" Raw=Rs \n",
" Is=V/Raw \n",
" M=Imax-Is \n",
"print \"Reqired steps = %d\" %i"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Resistance of 1 step = 1.04 ohm\n",
"Resistance of 2 step = 1.26 ohm"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Resistance of 3 step = 1.52 ohm"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Resistance of 4 step = 1.85 ohm"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Reqired steps = 4\n"
]
}
],
"prompt_number": 16
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex17 : Page 390"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy import array\n",
"#To detemine the characteristics for tapping of 30 percent of the turns\n",
"\n",
"I=array([50,100,150,200,250]) #Current\n",
"N1=array([73.5,48,41,37,35]) #Speed\n",
"Ft1=array([131,457,810,1163,1525]) #Tractive Effort in Kg\n",
"Fl=70/100 #Effective Tapping of the Turns (30% reduction)\n",
"\n",
"#Consider flux corresponding to 250A as 100%, that is for 35 Kmph\n",
"\n",
"Flux=(35*100)/N1 #Flux Percent for Current Value\n",
"\n",
"#Reduction by 30% of turns is same as reducing the Ampere Turns by 30% which is same as reducing the Current by 30%\n",
"\n",
"RI=Fl*I #Reduced Current\n",
"RFlux=array([32,57,74,83,90]) #Reduced flux determined From the Graph of %Flux and Current in the TextBook\n",
"\n",
"N2=(N1*Flux)/RFlux #Speed for the new case\n",
"\n",
"#Tractive Effort is directly proportional to the product of flux and current\n",
"\n",
"Ft2=RFlux*Ft1/Flux #Tractive Effort of the Second Case\n",
"\n",
"print 'The Current in Amperes:' \n",
"for i in I:\n",
" print i,'\\t',\n",
"print ''\n",
"print '\\nThe Speed in Kmph:' \n",
"for n2 in N2:\n",
" print '%0.2f'%n2,'\\t',\n",
"print ''\n",
"print '\\nThe Tractive Effort in Kg :'\n",
"for ft2 in Ft2:\n",
" print '%0.1f'%ft2,'\\t',"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Current in Amperes:\n",
"50 \t100 \t150 \t200 \t250 \t\n",
"\n",
"The Speed in Kmph:\n",
"109.38 \t61.40 \t47.30 \t42.17 \t38.89 \t\n",
"\n",
"The Tractive Effort in Kg :\n",
"88.0 \t357.2 \t702.2 \t1020.4 \t1372.5 \t"
]
}
],
"prompt_number": 17
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex18 : Page 400"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#To determine the power fed into the supply system\n",
"\n",
"W=200 \n",
"RI=10/100 #Rotational Intertia\n",
"Eff=75/100 #Effeciency of Conversion\n",
"G=2 \n",
"V1=60 \n",
"V2=20 \n",
"D=4000 #Distance covered during the speed change in m\n",
"r=40 \n",
"We=(1+RI)*W \n",
"\n",
"Ftb=W*((98.1*G)-r) #Tractive Effort during Retardation\n",
"\n",
"KE=0.01072*(We/W)*200*((V1**2)-(V2**2))/1000 #K.E(in kWhr) Available due to change in speed\n",
"\n",
"EquiEE=Ftb*D/(3600*1000) #Equivalent Electrical Energy\n",
"\n",
"TE=KE+EquiEE #Total Energy Regenarated\n",
"\n",
"ERS=Eff*TE #Energy Returned to the Supply\n",
"\n",
"B=((V1**2)-(V2**2))/(2*D*3600) #Retardation\n",
"Tb=V1-V2/B #time taken during retardation\n",
"\n",
"PRS=ERS*3600/Tb #Power Returned due to Retardation\n",
"\n",
"#If there is no change in speed, Net Reactive force is Tractive Effort due to retardation\n",
"\n",
"Vm=V1 #Maximum Speed \n",
"\n",
"#Power that Can be fed into the system\n",
"PFS=0.278*Ftb*Vm/1000 #In Kilowatts\n",
"\n",
"APFS=Eff*PFS #Actual Power Fed Back into the supply system\n",
"\n",
"print 'The Power Fed Back into the supply system is %0.1f kW'%APFS "
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"The Power Fed Back into the supply system is 390.8 kW\n"
]
}
],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Ex19 : Page 401"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from __future__ import division\n",
"from math import pi\n",
"from numpy import array, arange\n",
"#To determine the value of resistance to be connected in the motor circuit\n",
"#Page 411\n",
"N1=600; #Intial Speed\n",
"E1=array([252,522,750,900,951]); # Voltages At 600 RPM\n",
"Ia=array([20,40,60,80,100]); # Field Current\n",
"N2=400; #Changed Speed\n",
"E2=E1*(N2/N1); # Voltages at 400 RPM\n",
"T=350;\n",
"Raw = 0.05; #Armature and Winding Resistance\n",
"print 'Field Current in A:\\n'\n",
"for ia in Ia:\n",
" print ia,'\\t',\n",
"print '\\n'\n",
"print 'The Respective Voltages at 400 rpm (V):\\n'\n",
"\n",
"for e2 in E2:\n",
" print e2,'\\t',\n",
"print ''\n",
"\n",
"P=E2*Ia #To find the value of E and Ia for the Required Speed\n",
"\n",
"PI=2*pi*N2*T/60 #Power Input\n",
"i=0\n",
"for p in P:\n",
" i+=1\n",
" X = p-PI\n",
" \n",
" if (X)<0:\n",
" L = i-1\n",
" H = i \n",
" else:\n",
" continue\n",
"\n",
"Ip=Ia[H]-Ia[L] #To find the Current Period\n",
"Im=Ia[L] #Starting Value of Current in the Particular Portion of the Curve\n",
"\n",
"I=Im+(((PI-P[L])/(P[H]-P[L]))*Ip) #Current Required for 400 rpm\n",
"R=PI/(I**2) #Total Resistance required in the circuit\n",
"Re=R-Raw #External Resistance\n",
"\n",
"print '\\n\\nThe External Circuit that needs to connected in the motor circuit to limit the speed to 400 rpm is %0.1f Ohm\\n'%Re"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Field Current in A:\n",
"\n",
"20 \t40 \t60 \t80 \t100 \t\n",
"\n",
"The Respective Voltages at 400 rpm (V):\n",
"\n",
"168.0 \t348.0 \t500.0 \t600.0 \t634.0 \t\n",
"\n",
"\n",
"The External Circuit that needs to connected in the motor circuit to limit the speed to 400 rpm is 8.7 Ohm\n",
"\n"
]
}
],
"prompt_number": 19
}
],
"metadata": {}
}
]
}