diff options
Diffstat (limited to 'Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb')
-rw-r--r-- | Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb | 601 |
1 files changed, 601 insertions, 0 deletions
diff --git a/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb b/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb new file mode 100644 index 0000000..f34542d --- /dev/null +++ b/Linear_Control_Systems_by_B_S_Manke/3-BLOCK_DIAGRAMS.ipynb @@ -0,0 +1,601 @@ +{ +"cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapter 3: BLOCK DIAGRAMS" + ] + }, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_10: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.10\n", +"//page 43\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 G5 H1 H2 H3;\n", +"a=parallel(G3,G4);\n", +"//shift off the take off point before block 'a' to after block 'a'\n", +"b=1/a;\n", +"d=1;\n", +"c=G2/(1+G2*d);\n", +"e=parallel(H1,b);\n", +"f=series(c,a);\n", +"g=series(H2,e);\n", +"h=f/(1+f*g);\n", +"h=simple(h);\n", +"i=series(h,G1);\n", +"y=i/(1+i*H3);\n", +"y=simple(y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_11: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.11\n", +"//page 45\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 H1 H2 H3;\n", +"a=G4/.H1;\n", +"//shift the summing point after block G3 towards left of block G3\n", +"b=G2/G3;\n", +"c=series(a,G3);\n", +"d=c/(1+c*H2);\n", +"d=simple(d)\n", +"//shift the summing point before block G1 towards right of block G1\n", +"e=G1*H3;\n", +"f=d/(1+d*e);\n", +"f=simple(f)\n", +"g=parallel(G1,b);\n", +"g=simple(g);\n", +"y=series(g,f)\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_12: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.12\n", +"//page 47\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 H1 H2 H3;\n", +"//shift the summing point before block G1 towards right of block G1\n", +"//shift the summing point after block G3 towards left of block G3\n", +"a=G2/G1\n", +"b=H3/G3;\n", +"c=G1/.H1\n", +"d=G3/.H2\n", +"e=series(G4,d)\n", +"//shift the summing point after block e towards left of block e\n", +"g=1/e\n", +"f=series(a,g);\n", +"f=simple(f)\n", +"h=parallel(f,1);\n", +"h=simple(h)\n", +"i=e/(1+e*b);\n", +"i=simple(i)\n", +"j=series(c,h);\n", +"y=series(j,i);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_13: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.13\n", +"//page 49\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 H1 H2;\n", +"//shift the summing point after block H2 towards right of block H2\n", +"//shift the summing point after block H1 towards right of block H2\n", +"a=H1*H2\n", +"b=parallel(G1,G2)\n", +"c=G4/.a\n", +"d=series(G3,c)\n", +"e=d/(1+d*H2);\n", +"e=simple(e)\n", +"f=series(b,e)\n", +"y=f/(1+f*a);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=');\n", +"\n", +"" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_14: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.14\n", +"//page 50\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 H1 H2 R D;\n", +"a=parallel(G1,G2)\n", +"b=G3/.H2\n", +"c=series(a,b)\n", +"//inorder to determine C(s)/R(s) consider D=0\n", +"d=series(c,G4);\n", +"y=d/(1+d*H1);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')\n", +"// now consider R=0 for calculating C(s)/D(s)\n", +"e=series(c,H1)\n", +"z=G4/(1+G4*e);\n", +"z=simple(z);\n", +"disp(z,'C(s)/D(s)=');\n", +"x=(y*R)+(z*D);\n", +"x=simple(x);\n", +"printf('total output');\n", +"disp(x,'C(s)')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_15: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.15\n", +"//page 52\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 H1 H2 H3 D1 D2 R;\n", +"a=G2/.H2\n", +"b=a/(1+a*H3);\n", +"b=simple(b)\n", +"//inorder to determine C(s)/R(s) consider D1=0,D2=0\n", +"c=series(b,G1)\n", +"y=c/(1+c*H1);\n", +"y=simple(y)\n", +"disp(y,'C(s)/R(s)');\n", +"// now consider R=0,D2=0 for calculating C(s)/D1(s)\n", +"d=series(G1,H1);\n", +"z=b/(1+b*d);\n", +"z=simple(z)\n", +"disp(z,'D1(s)/R(s)');\n", +"// now consider R=0,D1=0 for calculating C(s)/D2(s)\n", +"e=G1*(-H1);\n", +"f=series(b,e);\n", +"x=f/(1+f);\n", +"x=simple(x);\n", +"disp(x,'D2(s)/R(s)');\n", +"out=(y*R)+(z*D1)+(x*D2);\n", +"out=simple(out);\n", +"disp(out,'C(s)');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_1: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.1\n", +"//page 32\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1;\n", +"// shifting take off point after block G2 to a position before block G2\n", +"a= G2*H1;\n", +"b=parallel(G2,G3);\n", +"//shifting take off point before (G2+G3) to After (G2+G3)\n", +"c=a/b;\n", +"m=1;\n", +"d=b/(1+m*b);\n", +"e=series(G1,d);\n", +"y=(e/(1+c*e));\n", +"y=simple (y);\n", +"disp (y,'C(s)/R(s)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_2: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.2\n", +"//page 34\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1;\n", +"// shifting take off point before block G1 to a position after block G1\n", +"a=G1*H1;\n", +"b=parallel(G1,G2);\n", +"c=G3/.a\n", +"y=series(b,c);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_3: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.3\n", +"//page 35\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 G5 G6 H1 H2;\n", +"//shift the takeof point placed before G2 towards right side of block G2\n", +"a= G5/G2;\n", +"b=parallel(G3,G4);\n", +"c=series(b,G6);\n", +"d=parallel(a,c);\n", +"e=series(G1,G2);\n", +"l=series(H1,d);\n", +"g=e/.H2\n", +"y=g/(1+g*l)\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_4: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.4\n", +"//page 36\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1 H2;\n", +"//shift the take off point placed before G1 to after block G1\n", +"a=G3/G1;\n", +"b=parallel(a,G2);\n", +"//shift the take off point before block b towards right side of same block\n", +"c=1/b;\n", +"d=series(H1,c);\n", +"e=series(G1,b);\n", +"g=parallel(H2,d);\n", +"y=e/(1+e*g);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_5: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.5\n", +"//page 37\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1 H2 H3;\n", +"//shift the take off point placed before G3 to after block G3\n", +"a=H3/G3;\n", +"b=G3/.H2;\n", +"c=series(G2,b);\n", +"//shift the summing point after block G1 to before block G1\n", +"d=a/G1;\n", +"e=G1/.H1;\n", +"f=series(e,c);\n", +"y=f/(1+f*d);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_6: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.6\n", +"//page 38\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1;\n", +"a=parallel(G1,G3);\n", +"b=G2/.H1;\n", +"y=series(a,b);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_7: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.7\n", +"//page 39\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 H1 H2;\n", +"//shift the take off point placed before G2 to after block G2\n", +"a=G2*H1;\n", +"//shift the take off point placed before G2 to after block G1 and shift the summing point before block G2 to before block G2\n", +"//interchange consecutive summing point and shift the take off point placed before H2 to after block H2\n", +"b=G2*H2;\n", +"c=b*H1;\n", +"d=parallel(G3,G2);\n", +"e=1/.b\n", +"f=series(d,e);\n", +"g=G1/.a\n", +"h=series(g,f);\n", +"y=h/(1-h*c);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=')" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_8: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.8\n", +"//page 41\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 G5 H1 H2;\n", +"//shift the summing point before block G5 towards left of block G5\n", +"a=G2*G5;\n", +"b=G4/.H1;\n", +"c=series(G5,H2);\n", +"d=series(b,G3);\n", +"e=d/(1+d*c);\n", +"e=simple(e)\n", +"f=parallel(G1,a);\n", +"y=series(f,e);\n", +"y=simple (y);\n", +"disp(y,'C(s)/R(s)=');" + ] + } +, +{ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3.2_9: Transfer_Function.sce" + ] + }, + { +"cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], +"source": [ +"//Caption:transfer_function\n", +"// example 3.2.9\n", +"//page 42\n", +"// we have defined parallel and series function which we are going to use here\n", +"//exec parallel.sce;\n", +"//exec series.sce;\n", +"syms G1 G2 G3 G4 G5 H1 H2 H3;\n", +"//shift the take off point placed before G3 to after block G3\n", +"a=G5/G3;\n", +"b=G1/.H1;\n", +"c=series(b,G2);\n", +"d=G3/.H2;\n", +"e=parallel(G4,a);\n", +"e=simple(e);\n", +"f=series(c,d);\n", +"g=series(f,e);\n", +"g=simple(g);\n", +"y=g/(1+g*H3);\n", +"y=simple(y);\n", +"disp (y,'C(s)/R(s)=');" + ] + } +], +"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 +} |