summaryrefslogtreecommitdiff
path: root/Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb')
-rw-r--r--Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb426
1 files changed, 426 insertions, 0 deletions
diff --git a/Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb b/Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb
new file mode 100644
index 0000000..19d9555
--- /dev/null
+++ b/Electrical_Power_Systems_by_C_L_Wadhwa/17-POWER_SYSTEM_SYNCHRONOUS_STABILITY.ipynb
@@ -0,0 +1,426 @@
+{
+"cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Chapter 17: POWER SYSTEM SYNCHRONOUS STABILITY"
+ ]
+ },
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.10: EX17_10.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To Determine the rotor angle and angular frequency using runga kutta and euler`s modified method\n",
+"\n",
+"clc\n",
+"clear\n",
+"Pm=3;\n",
+"r1Pm=1.2;\n",
+"r2Pm=2;\n",
+"H=3;\n",
+"f=60;\n",
+"Dt=.02;\n",
+"Pe=1.5;\n",
+"Do=asind(1.5/3);\n",
+"do=Do/57.33;\n",
+"wo=0;\n",
+"d=0;\n",
+"K10=0;\n",
+"l10=62.83*(1.5-1.2*sin(do))*.02;\n",
+"K20=(377.5574-376.992)*.02;\n",
+"l20=62.83*(1.5-1.2*sin(do))*.02;\n",
+"K30=(377.5574-376.992)*.02;\n",
+"l30=62.83*(1.5-1.2*sin(.5296547))*.02;\n",
+"K40=l30*0.02;\n",
+"l40=62.83*(1.5-1.2*sin(.5353094))*.02;\n",
+"d1=.53528;\n",
+"Dwo=(3*1.13094+2*1.123045+1.115699)/6;\n",
+"w1=wo+Dwo;\n",
+"d1=.53528;\n",
+"mprintf('Runga-Kutta method-\n')\n",
+"mprintf('w1=%.6f \nd1=%.5f\n',w1,d1);\n",
+"d7=1.026;\n",
+"w7=6.501;\n",
+"wp=376.992+6.501;\n",
+"K17=(wp-376.992)*0.02;\n",
+"l17=62.83*(1.5-1.2*sin(1.026))*.02;\n",
+"K27=(6.501+.297638)*0.02;\n",
+"l27=62.83*(1.5-1.2*sin(1.09101))*.02;\n",
+"K37=(6.501+.2736169)*0.02;\n",
+"l37=62.83*(1.5-1.2*sin(1.0939863))*.02;\n",
+"K47=(6.501+.545168)*0.02;\n",
+"l47=62.83*(1.5-1.2*sin(1.16149))*.02;\n",
+"Dd7=(K17+2*K27+2*K37+K47)/6;\n",
+"d8=d7+Dd7;\n",
+"Dw7=(l17+2*l27+2*l37+l47)/6;\n",
+"w8=w7+Dw7;\n",
+"mprintf('d8=%.5f rad.\nw8=%.4frad/sec\n\n',d8,w8)\n",
+"mprintf('using Euler`s Modified Method-\n');\n",
+"d0=0;\n",
+"d10=.524;\n",
+"w=62.83*(1.5-1.2*sin(.524));\n",
+"d11=d10+0;\n",
+"w11=w*.02;\n",
+"d=1.13094;\n",
+"dav=(0+d)/2;\n",
+"wav=(56.547+56.547)/2;\n",
+"d01=.524+.56547*.02;\n",
+"w11=0+56.547*0.02;\n",
+"mprintf('d01=%.4f\nw11=%.5f',d01,w11);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.1: EX17_1.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To determine the acceleration . Also determine the change in torque angle and r.p.mat the end of 15 cycles\n",
+"clear\n",
+"clc;\n",
+"H=9;\n",
+"G=20;// machine Rating(MVA)\n",
+"KE=H*G;\n",
+"mprintf('(a)K.E stored in the rotor =%.0f MJ\n',KE);\n",
+"Pi=25000*.735;\n",
+"PG=15000;\n",
+"Pa=(Pi-PG)/(1000);\n",
+"f=50;\n",
+"M=G*H/(%pi*f);\n",
+"a=Pa/M;\n",
+"mprintf('(b) The accelerating power =%.3f MW\n',Pa);\n",
+"mprintf('Acceleration =%.3f rad/sec_2\n',a);\n",
+"t=15/50;\n",
+"del=sqrt(5.89)*t/2;\n",
+"Del=del^2;\n",
+"k=2.425*sqrt(Del)*60/4*%pi;\n",
+"speed=1504.2;\n",
+"mprintf('(c)Rotor speed at the end of 15 cycles =%.1f r.p.m',speed);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.2: EX17_2.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To determine the frequency of natural oscillations if the genrator is loaded to (i)60% and (ii)75% of its maximum power transfer capacity\n",
+"clear \n",
+"clc;\n",
+"V1=1.1;\n",
+"V2=1;\n",
+"X=.5;\n",
+"cosdo=.8;\n",
+"G=1;\n",
+"H=3;\n",
+"f=50;\n",
+"M=G*H/(%pi*f);\n",
+"dPe=V1*V2*cosdo/X;\n",
+"fn=(((dPe)/M)^.5)/6.28;\n",
+"sind0=.75;\n",
+"d0=asind(sind0);\n",
+"dPe2=V1*V2*cosd(d0)/X;\n",
+"fn2=(((dPe2)/M)^.5)/6.28;\n",
+"mprintf('(i)fn=%.2f Hz\n',fn);\n",
+"mprintf('(i)fn(Hz)=%.2f Hz',fn2);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.3: EX17_3.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//To calculate the maximum value of d during the swinging of the rotor around its new equilibrium position\n",
+"clc\n",
+"clear\n",
+"a=.25;//sindo=.25\n",
+"do=asind(a);//\n",
+"b=.5//sindc=.5\n",
+"dc=asind(b);\n",
+"c=cosd(do)+.5*do*%pi/180;\n",
+"dm=dc;\n",
+"e=1;\n",
+"while(e>.0001)\n",
+" dm=dm+.1;\n",
+" e=abs(c-(((.5*dm*%pi)/180)+cosd(dm)));\n",
+"end\n",
+"printf('dm approximately found to be %d degree',dm);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.4: To_calculate_the_critical_clearing_angle_for_the_condition_described.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To calculate the critical clearing angle for the condition described.\n",
+"clear \n",
+"clc;\n",
+"sindo=.5;\n",
+"d0=asind(sindo)*%pi/180;\n",
+"r1=.2;\n",
+"r2=.75;\n",
+"sindm=.5/.75;\n",
+"d=asind(sindm);\n",
+"cosdm=cosd(d);\n",
+"dm=%pi*(180-(asind(sindm)))/180;\n",
+"Dc=((.5*(dm-d0))-(r2*cosdm)-(r1*cosd(d0)))/(r2-r1);\n",
+"dc=acosd(Dc);// critical angle\n",
+"mprintf('The critical clearing angle is given by=%.2f degrees',dc);//Answers don't match due to difference in rounding off of digits"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.5: To_calculate_the_critical_clearing_angle_for_the_generator_for_a_3phase_fault.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To calculate the critical clearing angle for the generator for a 3-phase fault\n",
+"clear \n",
+"clc;\n",
+"ZA=.375;\n",
+"ZB=.35;\n",
+"ZC=.0545;\n",
+"ZAB=((ZA*ZB)+(ZB*ZC)+(ZC*ZA))/ZC;//Reactance between the generator and infinite bus during the fault(p.u)\n",
+"Zgbf=%i*.3+ %i*(.55/2) +%i*.15;//Reactance between the generator and infinite bus before the fault(p.u)\n",
+"Zgb=%i*.3+ %i*(.55) +%i*.15;//Reactance between the generator and infinite bus after the fault is cleared (p.u)\n",
+"Pmaxo=1.2*1/abs(Zgbf);// Maximum power output Before the fault(p.u)\n",
+"Pmax1=1.2*1/abs(ZAB);// Maximum power output during the fault(p.u)\n",
+"Pmax2=1.2*1/abs(Zgb);// Maximum power output after the fault(p.u)\n",
+"r1=Pmax1/Pmaxo;\n",
+"r2=Pmax2/Pmaxo;\n",
+"Ps=1;\n",
+"sindo=Ps/Pmaxo;\n",
+"do=asind(sindo);\n",
+"d0=asind(sindo)*%pi/180;\n",
+"sindm=1/Pmax2;\n",
+"cosdm=cosd(asind(sindm));\n",
+"Dm=%pi*(180-(asind(sindm)))/180;\n",
+"Dc=(((sindo*(Dm-d0))-(r2*cosdm))-(r1*cosd(do)))/(r2-r1);\n",
+"dc=acosd(Dc);// critical angle\n",
+"mprintf('The critical clearing angle is given by= %.1f ',dc);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.6: determine_the_critical_clearing_angle.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//(A) determine the critical clearing angle \n",
+"clear \n",
+"clc;\n",
+"Pm=%i*.12 + %i*.035 + ((%i*.25*%i*.3)/%i*.55);\n",
+"Pm1=0;\n",
+"Pm2=1.1*1/.405;\n",
+"r1=0;\n",
+"r2=2.716/3.775;\n",
+"d0=(asind(1/3.775));\n",
+"dM=(180-asind(1/2.716));\n",
+"do=d0*%pi/180;\n",
+"dm=dM*%pi/180;\n",
+"dc=acosd((((dm-do)*sind(d0))-(r1*cosd(d0))+(r2*cosd(dM)))/(r2-r1));\n",
+"mprintf('dc=%.2f',dc);\n",
+""
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.7: EX17_7.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// To determine the centre and radius for the pull out curve ans also minimum output vars when the output powers are (i)0 (ii).25p.u (iii) .5p.u\n",
+"clear \n",
+"clc;\n",
+"Pc=0;\n",
+"V=.98;\n",
+"Qc=V^2*((1/.4)-(1/1.1))/2;\n",
+"R=V^2*((1/.4)+(1/1.1))/2;\n",
+"Q=-(.98^2*((1.1-.4)/.44)/2) + (.98^2)*1.5/(2*.44);\n",
+"mprintf('(i)Q=%.2f MVAr\n',abs(Q)*100);\n",
+"P=.25;\n",
+"Q2=-((1.637^2)-(.25^2))^.5 + .7639;\n",
+"mprintf('(ii)Q=%.4f p.u\n',Q2);\n",
+"Q3=-((1.637^2)-(.5^2))^.5 + .7639;\n",
+"mprintf('(iii)Q=%.4f p.u',Q3);"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.8: Compute_the_prefault_faulted_and_post_fault_reduced_Y_matrices.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"// Compute the prefault, faulted and post fault reduced Y matrices\n",
+"clear \n",
+"clc;\n",
+"y=[-%i*5 0 %i*5 ; 0 -%i*5 %i*5;%i*5 %i*5 -%i*10 ];\n",
+"YAA=[-%i*5 0;0 -%i*5];\n",
+"YAB=[%i*5;%i*5];\n",
+"YBA=[%i*5 %i*5];\n",
+"YBB=[%i*10];\n",
+"Y=YAA-YAB*(inv(YBB))*YBA;\n",
+"Yfull=[-%i*5 0 %i*5;0 -%i*7.5 %i*2.5;%i*5 %i*2.5 -%i*12.5];\n",
+"disp(Yfull,'(i)faulted case, full matrix(admittance)=');\n",
+"Y=[-%i*3 %i*1;%i*1 -%i*7];\n",
+"disp(Y,'(ii)Pre-fault case, reduced admittance matrix=');\n",
+"Y=[-%i*5 0 %i*5;0 -%i*2.5 %i*2.5;%i*5 %i*2.5 -%i*7.5];\n",
+"disp(Y,'(iii)Post-fault case, full matrix(admittance)=');\n",
+"Y=[-%i*1.667 %i*1.667;%i*1.667 -%i*1.667];\n",
+"disp(Y,' reduced admittance matrix=');"
+ ]
+ }
+,
+{
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Example 17.9: EX17_9.sce"
+ ]
+ },
+ {
+"cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+"source": [
+"//Determine the reduced admittance matrices for prefault, fault and post fault conditions and determine the power angle characterstics for three conditions.\n",
+"clear \n",
+"clc;\n",
+"Y=[-%i*8.33 0 %i*8.33 0;0 -%i*28.57 0 %i*28.75;%i*8.33 0 -%i*15.67 %i*7.33;0 %i*28.57 %i*7.33 -%i*35.9];\n",
+"YBB=[-%i*15.67 %i*7.33;%i*7.33 -%i*35.9];\n",
+"YAA=[-%i*8.33 0;0 -%i*28.57];\n",
+"YAB=[%i*8.33 0;0 %i*28.57];\n",
+"YBA=YAB;\n",
+"Y=YAA-(YAB*(inv(YBB))*YBA);\n",
+"Y1=([-%i*8.33 0;0 -%i*28.57])-(([0;(%i*28.57/-%i*35.9)]*[0 %i*28.57]));\n",
+"disp(Y1,'Reduced admittance matrix during fault=');\n",
+"Yfull=[-%i*8.33 0 %i*8.33 0;0 -%i*28.57 0 %i*28.75;%i*8.33 0 -%i*12.33 %i*4;0 %i*28.57 %i*4 -%i*32.57];\n",
+"YBB=[-%i*12.33 %i*4;%i*4 -%i*32.57];\n",
+"Y=YAA-(YAB*(inv(YBB))*YBA);\n",
+"disp(Y,'(i) Post fault condition ,reduced matrix=');\n",
+"Y12=Y(1,2);\n",
+"E1=1.1;\n",
+"E2=1;\n",
+"printf('\n Power angle characterstics , Pe= %fsind',abs(Y12)*E1*E2);"
+ ]
+ }
+],
+"metadata": {
+ "kernelspec": {
+ "display_name": "Scilab",
+ "language": "scilab",
+ "name": "scilab"
+ },
+ "language_info": {
+ "file_extension": ".sce",
+ "help_links": [
+ {
+ "text": "MetaKernel Magics",
+ "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
+ }
+ ],
+ "mimetype": "text/x-octave",
+ "name": "scilab",
+ "version": "0.7.1"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}