<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="0"/><View-Properties><Hide name="Section Range"/><Hide name="Group Range"/><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 3" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Author" rightmargin="0.0" spaceabove="8.0" spacebelow="8.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 2" rightmargin="0.0" spaceabove="8.0" spacebelow="2.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal258" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal257" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Title" rightmargin="0.0" spaceabove="12.0" spacebelow="12.0"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" name="Heading 3" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Heading 2" readonly="false" size="14" underline="false"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle368"/><Font background="[0,0,0]" italic="true" name="_cstyle367"/><Font background="[0,0,0]" italic="true" name="_cstyle366"/><Font background="[0,0,0]" italic="true" name="_cstyle365"/><Font background="[0,0,0]" italic="true" name="_cstyle364"/><Font background="[0,0,0]" italic="true" name="_cstyle363"/><Font background="[0,0,0]" italic="true" name="_cstyle362"/><Font background="[0,0,0]" italic="true" name="_cstyle361"/><Font background="[0,0,0]" italic="true" name="_cstyle360"/><Font background="[0,0,0]" family="Times New Roman" name="2D Comment" underline="false"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" underline="false"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input"/><Font background="[0,0,0]" italic="true" name="_cstyle358"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle357"/><Font background="[0,0,0]" italic="true" name="_cstyle356"/><Font background="[0,0,0]" italic="true" name="_cstyle355"/><Font background="[0,0,0]" italic="true" name="_cstyle354"/><Font background="[0,0,0]" italic="true" name="_cstyle353"/><Font background="[0,0,0]" italic="true" name="_cstyle352"/><Font background="[0,0,0]" italic="true" name="_cstyle348"/><Font background="[0,0,0]" italic="true" name="_cstyle347"/><Font background="[0,0,0]" italic="true" name="_cstyle346"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle345"/><Font background="[0,0,0]" italic="true" name="_cstyle344"/><Font background="[0,0,0]" italic="true" name="_cstyle343"/><Font background="[0,0,0]" italic="true" name="_cstyle342"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle341"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle340"/><Font background="[0,0,0]" italic="true" name="_cstyle339"/><Font background="[0,0,0]" italic="true" name="_cstyle338"/><Font background="[0,0,0]" italic="true" name="_cstyle337"/><Font background="[0,0,0]" italic="true" name="_cstyle336"/><Font background="[0,0,0]" italic="true" name="_cstyle335"/><Font background="[0,0,0]" italic="true" name="_cstyle334"/><Font background="[0,0,0]" italic="true" name="_cstyle333"/><Font background="[0,0,0]" italic="true" name="_cstyle332"/><Font background="[0,0,0]" italic="true" name="_cstyle331"/><Font background="[0,0,0]" italic="true" name="_cstyle330"/><Font background="[0,0,0]" italic="true" name="_cstyle299"/><Font background="[0,0,0]" italic="true" name="_cstyle298"/><Font background="[0,0,0]" italic="true" name="_cstyle297"/><Font background="[0,0,0]" name="_cstyle293"/><Font background="[0,0,0]" italic="true" name="_cstyle292"/><Font background="[0,0,0]" name="_cstyle291"/><Font background="[0,0,0]" italic="true" name="_cstyle290"/><Font background="[0,0,0]" italic="true" name="_cstyle329"/><Font background="[0,0,0]" italic="true" name="_cstyle328"/><Font background="[0,0,0]" italic="true" name="_cstyle327"/><Font background="[0,0,0]" italic="true" name="_cstyle326"/><Font background="[0,0,0]" italic="true" name="_cstyle325"/><Font background="[0,0,0]" italic="true" name="_cstyle324"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle323"/><Font background="[0,0,0]" italic="true" name="_cstyle322"/><Font background="[0,0,0]" italic="true" name="_cstyle321"/><Font background="[0,0,0]" italic="true" name="_cstyle320"/><Font background="[0,0,0]" italic="true" name="_cstyle288"/><Font background="[0,0,0]" italic="true" name="_cstyle287"/><Font background="[0,0,0]" italic="true" name="_cstyle286"/><Font background="[0,0,0]" italic="true" name="_cstyle283"/><Font background="[0,0,0]" bold="false" name="_cstyle282" underline="true"/><Font background="[0,0,0]" bold="false" name="_cstyle280"/><Font background="[0,0,0]" italic="true" name="_cstyle319"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle318"/><Font background="[0,0,0]" italic="true" name="_cstyle317"/><Font background="[0,0,0]" italic="true" name="_cstyle316"/><Font background="[0,0,0]" italic="true" name="_cstyle315"/><Font background="[0,0,0]" italic="true" name="_cstyle314"/><Font background="[0,0,0]" italic="true" name="_cstyle313"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle312"/><Font background="[0,0,0]" italic="true" name="_cstyle311"/><Font background="[0,0,0]" italic="true" name="_cstyle310"/><Font background="[0,0,0]" italic="true" name="_cstyle279"/><Font background="[0,0,0]" name="_cstyle275"/><Font background="[0,0,0]" italic="true" name="_cstyle273"/><Font background="[0,0,0]" italic="true" name="_cstyle271"/><Font background="[0,0,0]" italic="true" name="_cstyle270"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Title" readonly="false" size="18" underline="true"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle309"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle308"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle307"/><Font background="[0,0,0]" family="SymbolPi" name="_cstyle306"/><Font background="[0,0,0]" italic="true" name="_cstyle305"/><Font background="[0,0,0]" italic="true" name="_cstyle303"/><Font background="[0,0,0]" italic="true" name="_cstyle302"/><Font background="[0,0,0]" name="_cstyle269"/><Font background="[0,0,0]" italic="true" name="_cstyle268"/><Font background="[0,0,0]" bold="false" name="_cstyle264"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal258" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" italic="true" name="_cstyle262"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal257" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle377"/><Font background="[0,0,0]" bold="false" name="_cstyle376"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle374" size="10"/><Font background="[0,0,0]" italic="true" name="_cstyle373"/><Font background="[0,0,0]" italic="true" name="_cstyle372"/><Font background="[0,0,0]" italic="true" name="_cstyle371"/><Font background="[0,0,0]" italic="true" name="_cstyle370"/></Styles><Page-Numbers enabled="false" first-number="1" first-numbered-page="1" horizontal-location="right" style="Page Number" vertical-location="bottom"/><Group><Input><Text-field layout="Title" style="Title">M.I.T. SERVO</Text-field><Text-field layout="Author" style="_cstyle262"><Font encoding="ISO8859-1" family="Times New Roman" foreground="[0,0,0]" size="12" underline="false">\251 2001  J.M. Redwood.</Font></Text-field><Text-field layout="Normal257" style="_cstyle264"><Font family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" underline="false">Revised 4 December 2004.</Font></Text-field></Input></Group><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Synopsis</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This worksheet derives the loop transfer function of a tacho feedback compensated servo.  It then plots the servo's Nyquist diagram, Bode diagrams, and closed loop responses to sinusoidal and unit step inputs with servo constants chosen to minimize noise in the input.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Licence</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This worksheet and the package of procedures entitled "Bode2", may be used, adapted, or copied, provided that copyright is acknowledged and the whole of this Licence section is included in any copies, or adaptations, of the worksheet, or of the package.</Text-field><Text-field layout="Normal" style="Normal">  This worksheet and the "Bode2" package may be used for educational purposes free of charge.</Text-field><Text-field layout="Normal" style="Normal">  Commercial users are not required to pay a licence fee for this worksheet, or for the "Bode2" package.  Instead, they are requested to make a donation to Cancer Research UK, National Office, 61 Lincoln's Inn Fields, LONDON, WC2A 3PX, UK.  The donations line telephone number is +44 (0)20 7009 8820; the Fax number is  +44 (0)20 7269 3100; and the E-mail address is<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle348" underline="false"> </Font>"customerservices@cancer.org.uk".  The size of donation is left to the user's discretion.</Text-field><Text-field layout="Normal" style="Normal">  This worksheet and associated  "Bode2" package of procedures are offered without warranty of any kind whatsoever.   </Text-field></Input></Group><Text-field layout="Normal" style="Normal">  </Text-field></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Resources</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This worksheet uses significant computer resources.  If necessary, the user should separate the worksheet into manageable portions, comprising the section on the Loop Transfer Function plus one, or two, other sections, e.g. Loop Transfer Function and Bode Diagrams.  Copying the block diagram to a different file, and then deleting it from the worksheet may also help to free resources.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Historical</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  C.H. Dowker used R.S. Phillips' "RMS-Error Criterion" to carry out this classic design while they were at the M.I.T. during World War II.  The design minimised the effect of noise while obtaining the best response to the signal from an aircraft-tracking radar.  The details are described in Chapter 8 of the reference.  Based on this design, and on another also described in Chapter 8, C.H Dowker suggested a simple design rule that produced the optimum performance, without needing to repeat the detailed calculations for minimising the RMS error.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Introduction</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The servo described in this worksheet formed part of an automatic aircraft-tracking radar in World War II that was used by C.H. Dowker in his work on minimizing the effect of noise.  The servo's input was a signal proportional to the angular error between the centre of the radar beam and the aircraft.  Naturally, the signal contained a great deal of noise generated by changes in the radar signal caused by random changes in radar propagation and reflection from the aircraft's surfaces.  By appropriate choice of the servo's constants, Dowker found that it was possible to minimize the effect of noise on the servo while obtaining good performance from it.  Chapter 6 of the reference gives the method used by Dowker for obtaining the best choice of servo constants.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This worksheet obtains the loop transfer function of the proportional control servo with tacho feedback compensation, as shown in the block diagram.  The servo's constants, derived by C.H. Dowker at equations 87, 89 and 90 in Chapter 8 of the reference, are then inserted in the loop transfer function.  These are the constants needed to minimize the effect of noise while producing the best response from the servo.   The loop transfer function is then plotted in Nyquist diagrams and in Bode attenuation and phase margin diagrams, which yield parameters describing the servo's closed loop stability and performance.  Plots showing the servo's frequency response, peak magnification, damped natural frequency and bandwidth are produced, together with transient responses to unit step functions of input position and of velocity.  Important operational parameters are obtained from these plots.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The nomenclature used in the reference has been preserved in this worksheet as far as possible, so that the reader can move easily from one to the other. </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The block diagram shown at Figure 8.4 of the reference, in slightly different form, has been inserted into this worksheet as an OLE2 object (or as an image in the Standard interface).</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Block diagram</Text-field></Title><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal257" style="Normal257"/><Group><Input><Text-field alignment="centred"><Image height="414" width="560">TUZOV3RLVWI8b2I8Uj1NRExDZE5OWmpqOnRzOkg6PHVaYXRRSj08T2BMb1xcanl5eXlRdGZ5c2hjO2VVTENUSmNEWG9YdXNWTVNFcUNEPzt2a1doQ3FXXT9kUk9nPEVxQEFYRDxoUV5uQmdjU3diZElvQVBrPXZpQV5uXl5sTWdaXFxeXUpPWk5OYWVGTmlicEFiPklCO1VGTkNGPklHTz9EXFxBVGJXVHQ9Z2RbUnVVRjxPVGc9RkFfRDtLeHBTY15pdXJ1dEZ3WVBZd2t5c3JdeU1FdFl3SENvSHVveF5ZeG1ZZXFzV1hZWVhfUmpDVEtjUz49YjtbQ1o9Qj07bTtcXEtab1pqPko6alZJdFJUb05AeWdgVEJgUGlpdG1ZUz1ITDxRdEdddEdJb1VsdGVgdVp0dENgbHBveEVXaGhpeEtHeFNodHlebEp3YHN3aD5gbVh4XVdIYmJnd2thXkZ3cnJvaXhQaW5Bc21HdmhnY25Oak9edGRWW0JGY0xPdkdnW0R3bUVXXFxBWF50aGxuVndvcHNhWG1IaF5UQFxcV0l5bHlueVFbaU5eTmdvXFxBb21oXmRfblBPdmlwaHdveE95Y0BIbHNPXVd4dlNGb2VHYFxceHRpPl1JV21BSWxzeHh1Z15LT21ZdnFlYGNWbl10X3hhQF1LUHFsRlxcUmdhTkBrU3BtQE9nbmdnVz9kZ3BrdE50R19tQWF5Pl5gd2hucGdjTlF0SHlva0FmYFFua3ZdV09dWWFpcz92YnFzPVhwYW9vPm9lQG5dSmI7WFFSVFJzaG9AaHFwPUtXQVZhaFNTUHlSZVRTcWs8dW9ScXFsXFxOW3BSaWRTZFBKXWR4eUBWVGhyWk11P0FWbmBZPmh3XFxdWE1hWGtUVVZoeVVEbDt3Pj1DQEFYeXN5WD9ic3d2ZW1maE1ZbUN0Qk1EQXVjdktZaztmVV9Sb0NXa0FYa2tyYV1yZEVGTmFjOm9XTG9XRGFUU09pU3N0VkNZaU90S0tVUmlIY1tTaXl0RU9pQU1kaE1TYFV3QGlDXXVmTD9IS0lTQ1lWRFdjW3NJcXFiSHFSXmtDTz9TRmF3RHVZXm95Q2Nldz1GXj90V1dWWV1EW3lXQHFJdWViQ0d4VVlybFNDbk9zQEFWVVVZdHdIWWVHVUtYPmFWUk9TSVFGPkdJZkFWYEFjcGNTP3FoXFxVeFdxSXdVR3BdY1dBY3V3bFFdVVdBc3BNeFxcZXFvZHJ4dW1wPVdGeFVqeVJ0UUpwSXVNQHdUXFxSUU14amlxeFRtW0hQeFltRD1NTnRtd0RraEhSUmRMQXR1Ynl4U3VyZkl3ZFR5ZklTanV0YVF4b014bWBvcUVLcVh2eHF3Q1BtcVxcdFR4bkRISmxEamVFcmZsbmRQdVtASkNESm5Ncj5ZU09US111ajxcXFJpPW12RU1fQHlKPW5IXXJreHNNeFVRZHVTaVRMaXdebXVNeUtTRFdlVG9uPFlWeWtoUXdAQHNmTFdwZWpcXHhueFVLc0RMZXlgVHFubnZcXE13cEZAc2t4bltwaUtZZkJweFVoYEVnbldRYU9Ha2phckxmZWhGeENveEdeXVlxeEZfaFlmYUlvaV1mcU5xbj5nbFFfYWtgZ09OZll4XWJPZHhHZUNeZXZfbldGYGNYbkZWbkxWZ2BOZlRAcl5uY2N4XktOZz95X1ledXhxamJHb1VRYT5pX0dBZHZYXlBOc2FHcWtWeV15ZkpAZTo/dHBhXFw8V2pTP2A7ZmVdb25DV3FScGpWYF5HSW1XXnFFYGxXV2pDSF1FX19NaXRBcWt3P2NWR2NkWW10QV5aUWlreW9EX3FTZ3Jdb1xcPXZtT3hqXVlmVmBcXEVpbTxBW0FuZ3g/cFlObV14YVFJYW1YYXBXYWo/WmxJXzplQ3VUa0NXZ0ljaD9lbmt3X3FnUj9WVkt4Y2lkXkVHRk9UW3NIP1d3bmtiT1dYa19VXFw9RF1zVjxBc2RjY2NxYk1nZnk/WUxJREZVVkY/aHhzV2o9VkRJQnVHdD1xdW5VZD1TSFZIbDxBbW9dbUtheWJhWVN0VWZMVmw8S0JFSkFFSlI8cjpsOkE6R1Zvb1NjRWJIS0NfP1RHR2JBU0hqX0hBZVlYY2dBb2VdP1hXYVRjW1RjT2Rtd1Q/W2lgQ0NTYVRmd2lvUXRRX2Rsb3VidUhtO1ZIbUN4R2k+ZXJ0Z3RxV3VTO0hpR2ZnZ0REVURyaXlAbUJGZUZKZUNmQXY8XXNJYXNkZXJpYUJMT0l2a2Q7UWNJdVl2X3dxO3JwSXJzeVZRd1c/YWRPW3VQO1Y6U2REaWZVX3hPbUJGc3U7TWduY1REVXZaX0N5SVJPa1JEO0hxVXRWT1hmdVlyRVRyc2ZgcXJCc3VGYWVnb0RqVVRgRUh0R3dcXGNSU2VzSUdodllyTm1ZRnFSbG9Dcz1ITT9ja2FZVXdFXUVTbHdHeWtGcldHYFNGQD1XX2tUPklZZj95QllGWWVkYU94VUV4SG9Vc09VPmF0dllIYz1mckFIcWlCWD9FcW9FZFtyS11Dd1FkRFN0UUdmeUdEO1V4Z3NlVE1VRnFZVFNmYU9yblFpc2ljYG93Vj9JPz9HVV9WXFxNWVdxd3FpRW1ndVphZW1NU19Zcj49WUh1VkFRc0RnaT9Pc3F5RkxbQ21ZV2dJUm9TRHNVVU8/U3ZTdFNbWHdHZj5NVFlpeFNzR1xcSVZgPUheQXVDQ0ZSd2dST0JzcUhVZURHTVRPS3hYV0c9R1RcXGtWQGdZb09kQEdkeVVCUlNFXXNyWld1ST1mb0t5bFtTRld4PmNzbndndGVzQW9HWW11Yld0UUdEU0lFaWdjU11oUHNiU0tDd0N3dXVzQ0dYWG9kcHFFdEVTW0NXc1VXTjtJc0N3Rm1lW3F2bldoSW1UQz9DZ1V0Wj1zV0FXeTtzQmN2PUFVXFxdVEhrQlBtYmthdFJTV3JnZnZRaWtvaEhxU2B5cm5FRG1VYmBzaER3R1ZNaWxHRlxcZ0hvc0VgPUJ5Q2l3P2JKUVJYaUJAXUN0QWdmPUU7cXhDcUZEaWNDbXdCaWhWaWNOO0hhP1NVb2JOWUJqc2hrbVhhW1JOXVNWWWJjS0dgQ2R5dUlTY1hKa1JkcUc7YUJxW1VfXVdERUhSP3ZAV2dGZ0dyR3ZkU1Zlc0RdT3ZbPUh5SEpGYjs8cjpidWtDPVdDO0FlP0NWREdpY29XaztlPnl5Tzt2X19nb09VUEdERGN0TEllR3VHXklUSE1YcztVZmtydD95aktSOz1FdlVHR21CanlQPTw9Pjo6WlJYdTxWeFlueEBBcGZmXUVhcV5AOjtCOk1US1dES1dnSjtlWjE6</Image></Text-field></Input></Group><Text-field layout="Normal" style="Normal">                                                         </Text-field><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Definitions</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle306" underline="false">q </Font>i  is the angular input to the servo (also known as<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle305" underline="false"> R</Font>, the reference input).</Text-field><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle307" underline="false">q</Font> o  is the angular output from the servo (also known as <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle303" underline="false">C</Font>, the controlled output). </Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="epsilon;" style="2D Comment">NiMlKGVwc2lsb25H</Equation> is the error between the input and output = <Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle308" underline="false">q</Font> i - <Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle309" underline="false">q</Font> o (= <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle310" underline="false">R - C</Font>). </Text-field></Input></Group><Text-field layout="Normal" style="Normal"/></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Loop Transfer Function</Text-field></Title><Text-field layout="Normal" style="Normal"/><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Initialisation</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">   The "Bode2" package will be required for plotting the Bode attenuation and phase margin diagrams.  It is also necessary to call the "plots" package and to change the imaginary unit to <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle312" underline="false">j</Font>, instead of <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle313" underline="false">I</Font>.  It is also convenient to define some settings that will be used in the various plots.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">restart:</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">with(plots):  with(inttrans): with(Bode2): interface(imaginaryunit=j):</Font></Text-field></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Loop Transfer Function</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  By inspection, the inner loop transfer function (from amplifier output to the servo's output) is</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal257" style="Normal257"> <Equation input-equation="Yi(s) = Yf(s)/(1+Yf(s)*Yfb(s));" style="2D Comment">NiMvLSUjWWlHNiMlInNHKiYtJSNZZkdGJiIiIiwmRitGKyomRilGKy0lJFlmYkdGJkYrRishIiI=</Equation>  </Text-field><Text-field layout="Normal" style="Normal">where Yf(s) is the forward loop transfer function = <Equation input-equation="Km/(s*(T[m]*s+1))" style="2D Comment">NiMqJiUjS21HIiIiKiYlInNHRiUsJiomJiUiVEc2IyUibUdGJUYnRiVGJUYlRiVGJSEiIg==</Equation>, and </Text-field><Text-field layout="Normal" style="Normal">Yfb(s) is the feedback loop transfer function = <Equation input-equation="Kt*s*Kf*T[a]*s/(T[a]*s+1);" style="2D Comment">NiMqLiUjS3RHIiIiJSJzR0YlJSNLZkdGJSYlIlRHNiMlImFHRiVGJkYlLCYqJkYoRiVGJkYlRiVGJUYlISIi</Equation> (also referred to as <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle311" underline="false">H</Font>).</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  By definition, the loop transfer function for the servo is, <Equation input-equation="Y(s)=theta o(s)/epsilon(s)" style="2D Comment">NiMvLSUiWUc2IyUic0cqKCUmdGhldGFHIiIiLSUib0dGJkYqLSUoZXBzaWxvbkdGJiEiIg==</Equation>   =  <Equation input-equation="Ga*(Yi(s))" style="2D Comment">NiMqJiUjR2FHIiIiLSUjWWlHNiMlInNHRiU=</Equation> </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  It is convenient to abbreviate <Equation input-equation="Y(s)" style="2D Comment">NiMtJSJZRzYjJSJzRw==</Equation> to Y, and similarly for the other loop transfer functions.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Yi := Yf/(1 + Yf*Yfb);</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Yf := Km/(s*(Tm*s + 1));</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Yfb := (Kt*s)*(Kf*Ta*s/(Ta*s + 1));</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Y := Ga*Yi;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal"> From the block diagram, the gain of the tacho loop is seen to be <Equation input-equation="Kt*Kf = A" style="2D Comment">NiMvKiYlI0t0RyIiIiUjS2ZHRiYlIkFH</Equation>.  Substituting this in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle290" underline="false">Y</Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle291" underline="false">, and collecting terms in </Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle292" underline="false">s</Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle293" underline="false">,</Font>  </Text-field><Text-field layout="Normal" style="Normal"> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Y := collect(algsubs(Kt*Kf=A,Y),s);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">This is the final symbolic form of the loop transfer function, before substituting values for the gains and time constants.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Steady State Error</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  At this point, it is convenient to determine the steady state error in response to a constant velocity input, <Equation input-equation="Omega;" style="2D Comment">NiMlJk9tZWdhRw==</Equation>.  From the block diagram,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">epsilon(s) := 'theta[i](s)/(1+Y)';</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">   The Laplace transform of <Equation input-equation="theta[i](t) = Omega*t;" style="2D Comment">NiMvLSYlJnRoZXRhRzYjJSJpRzYjJSJ0RyomJSZPbWVnYUciIiJGKkYt</Equation> is <Equation input-equation="theta[i](s) = Omega/(s^2);" style="2D Comment">NiMvLSYlJnRoZXRhRzYjJSJpRzYjJSJzRyomJSZPbWVnYUciIiIqJEYqIiIjISIi</Equation>.  Hence,</Text-field><Text-field layout="Normal" style="Normal">     </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">epsilon(s) := eval(subs(theta[i](s)= Omega/s^2,epsilon(s)));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The steady state error is obtained by using the final value theorem of the Laplace transformation,</Text-field><Text-field layout="Normal" style="Normal">                  </Text-field><Text-field layout="Normal" style="Normal">                                                                                        ss error =<Equation input-equation="Limit(epsilon(t),t = infinity);" style="2D Comment">NiMtJSZMaW1pdEc2JC0lKGVwc2lsb25HNiMlInRHL0YpJSlpbmZpbml0eUc=</Equation> =<Equation input-equation="limit(s*epsilon(s),s = 0);" style="2D Comment">NiMtJSZsaW1pdEc2JComJSJzRyIiIi0lKGVwc2lsb25HNiNGJ0YoL0YnIiIh</Equation>.      </Text-field><Text-field layout="Normal" style="Normal">                  </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`ss error` := limit(s*epsilon(s),s=0);</Font></Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">System Constants &amp; Loop Transfer Function</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The system constants were chosen as follows (see equations 87, 89 and 90 in Chapter 8 of the reference)</Text-field><Text-field layout="Normal" style="Normal">               <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle320" underline="false">A</Font>  =  Tacho loop gain   =  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle321" underline="false">Kt</Font> <Font bold="false" encoding="ISO8859-1" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle323" underline="false">\264</Font> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle322" underline="false">Kf</Font>  =  14,</Text-field><Text-field layout="Normal" style="Normal">                            where   <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle324" underline="false">Kt</Font>  =  Tacho Gain  and  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle325" underline="false">Kf</Font>  =  Filter Gain (Attenuation),         </Text-field><Text-field layout="Normal" style="Normal">              <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle326" underline="false">Ta</Font>  =  Tacho filter time constant  =  0.252 second,</Text-field><Text-field layout="Normal" style="Normal">             <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle327" underline="false">Tm</Font>  =  Motor (including load) time constant  =  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle328" underline="false">Jm</Font>/<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle329" underline="false">fm</Font>  =  0.316 second,</Text-field><Text-field layout="Normal" style="Normal">                            where  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle330" underline="false">Jm</Font>  =  motor and load inertias and   <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle331" underline="false">fm</Font>  =  viscous friction and back e.m.f.</Text-field><Text-field layout="Normal" style="Normal">             <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle332" underline="false">Ga</Font>  =  Amplifier Gain  <Font bold="false" encoding="ISO8859-1" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle340" underline="false">\264</Font>  Error Measuring Device Gain  =  158 volts/radian,</Text-field><Text-field layout="Normal" style="Normal">            <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle333" underline="false">Km</Font>  =  Motor Gain  =  radian/sec/volt,</Text-field><Text-field layout="Normal" style="Normal">             <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle334" underline="false">Kv</Font>  =  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle335" underline="false">Ga</Font> x <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle336" underline="false">Km</Font>  =  Velocity error coefficient for the servo  =  158/second.</Text-field><Text-field layout="Normal" style="Normal"> (Note.    In this case the motor gain <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle337" underline="false">Km</Font> is unity, so <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle338" underline="false">Kv</Font> is numerically equal to <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle339" underline="false">Ga</Font>, the amplifier gain.)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  Assigning these values,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">A := 14: Ga := 158: Km := 1: Ta := 0.252: Tm := 0.316: Kv := Ga*Km:</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Y := Y;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">  </Text-field><Text-field layout="Normal" style="Normal">  The loop transfer function in the frequency domain, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle286" underline="false">Y(f)</Font>,  is</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`Y(f)` := subs(s=j*omega,Y);</Font></Text-field></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Nyquist Diagram</Text-field></Title><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Nyquist Diagram</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The loop transfer function <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle287" underline="false">Y(f)</Font> is plotted on the Nyquist diagram as follows,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p1 := complexplot(`Y(f)`,omega=3..1000,color=BLUE):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p2 := plot([[-1,0]],style=POINT,symbol=circle,symbolsize=14,color=BLACK):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p3 := coordplot(polar,[0..1,Pi/2..3*Pi/2],grid=[5,13],color=[RED,RED],linestyle=[1,2]):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display([p1,p2,p3],title="Nyquist Diagram");</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The Nyquist point, <Equation input-equation="[-1, j0];" style="2D Comment">NiM3JCwkIiIiISIiJSNqMEc=</Equation>, is shown on the diagram surrounded by a small black circle, for ease of identification.  The loop transfer function shows a phase margin of slightly less than 60 degrees at feedback cutoff (unity magnitude), which indicates a very stable - possibly overdamped - system.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Closed Loop Frequency Magnification</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal">The peak magnification, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle314" underline="false">M</Font>, of the closed loop frequency response is obtained by plotting a circle of radius <Equation input-equation="M/(M^2-1);" style="2D Comment">NiMqJiUiTUciIiIsJiokRiQiIiNGJUYlISIiRik=</Equation>, with its centre at <Equation input-equation="-M^2/(M^2-1);" style="2D Comment">NiMsJComJSJNRyIiIywmKiRGJUYmIiIiRikhIiJGKkYq</Equation> on the real axis of the Nyquist diagram, so that it just touches the loop transfer function.  The loop transfer function's phase margin of nearly 60 degrees suggests that the peak magnification of the closed loop frequency will be in the region of 1.2 - 1.3, so four <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle268" underline="false">M</Font> circles are plotted on the Nyquist diagram thus</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">M := [1.2,1.25,1.3,1.35]:</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">x := seq((-M[i]^2/(M[i]^2-1) + M[i]/(M[i]^2-1)*cos(theta)),i=1..4):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := seq((j*M[i]/(M[i]^2-1)*sin(theta)),i=1..4):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := seq(complexplot(x[i]+y[i],theta=0..2*Pi,color=BLACK),i=1..4):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(p1,p2,p, scaling=constrained, title="Nyquist Diagram with Magnification Circles\nM = 1.2, 1.25, 1.3, 1.35" );</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  As <Equation input-equation="proc (M) options operator, arrow; 1 end;" style="2D Comment">NiNmKjYjJSJNRzciNiQlKW9wZXJhdG9yRyUmYXJyb3dHNiIiIiJGKkYqRio=</Equation>, the radius of the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle302" underline="false">M</Font> circle increases and its centre approaches <Equation input-equation="-infinity;" style="2D Comment">NiMsJCUpaW5maW5pdHlHISIi</Equation>, with the circle becoming a vertical line through the Nyquist point.  Noting that the loop transfer function runs between the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle269" underline="false">second and third largest circles, it will touch a circle with </Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle271" underline="false">M</Font> between 1.25 and 1.3.  Choosing <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle270" underline="false">M</Font> = 1.27, and plotting again,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">M := 1.27:x := -M^2/(M^2-1) + M/(M^2-1)*cos(theta):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">y := j*M/(M^2-1)*sin(theta):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := complexplot(x+y,theta=0..2*Pi,color=BLACK):</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display( [p1,p2,p], scaling=constrained, title="Nyquist Diagram with Magnification Circle M = 1.27");</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The peak magnification, <Equation input-equation="M[peak];" style="2D Comment">NiMmJSJNRzYjJSVwZWFrRw==</Equation>, of the closed loop frequency response is seen to be 1.27.  This agrees with equation 109 in Section 8.8 of the reference.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">unassign('p1','p2','p3','p','x','y','M');</Font></Text-field></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Bode Diagrams</Text-field></Title><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Attenuation &amp; Phase Margin Diagrams</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The Bode diagrams, i.e. the loop gain of the transfer function, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle298" underline="false">Y(f)</Font>, together with the asymptotic straight-line approximations, and the phase margin plotted against normalised frequency, <Equation input-equation="omega*T;" style="2D Comment">NiMqJiUmb21lZ2FHIiIiJSJUR0Yl</Equation>, are produced by procedures in the "Bode2" package.  These procedure accept the loop transfer function expressed as a function of the Laplace operator, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle317" underline="false">s</Font>, or as a function of the complex frequency.  The latter is used in this worksheet for ease of comparison with the transfer functions as shown in the reference.</Text-field><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal">  To obtain the straight-line asymptotic approximations, the denominator of the loop transfer function must be factored, thus </Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`factored Y(f)` := numer(`Y(f)`)/factor(denom(`Y(f)`),complex);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">  </Text-field><Text-field layout="Normal" style="Normal">  The procedure for the straight-line approximation assumes that the loop transfer function is expressed in canonical form with gain <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle297" underline="false">K</Font> in the numerator, <Equation input-equation="(j*omega)^N;" style="2D Comment">NiMpKiYlImpHIiIiJSZvbWVnYUdGJiUiTkc=</Equation> in the denominator, and only terms of the form <Equation input-equation="[j*omega*T[a]+1];" style="2D Comment">NiM3IywmKiglImpHIiIiJSZvbWVnYUdGJyYlIlRHNiMlImFHRidGJ0YnRic=</Equation> in the numerator and denominator.  In this case, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle319" underline="false">N</Font> = 1 and the only time constant in the numerator is 0.252.  To reduce the denominator to the canonical form, it must be divided by the product 0.2453105557 <Font bold="false" encoding="ISO8859-1" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle318" underline="false">\264</Font> 51.19129784, yielding two time constants <Equation input-equation="1/.2453105557;" style="2D Comment">NiMqJiIiIkYkLSUmRmxvYXRHNiQiK2RiNWBDISM1ISIi</Equation>  and <Equation input-equation="1/51.19129784;" style="2D Comment">NiMqJiIiIkYkLSUmRmxvYXRHNiQiKyV5SCI+XiEiKSEiIg==</Equation>.  The numerator must also be divided by this product, which results in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle315" underline="false">K</Font> = 158.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This is the value of <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle352" underline="false">Kv</Font> shown in equations 87, 89 and 90 of the reference.  It is worth noting that for a Type 1 servo, provided its loop transfer function is expressed in canonical form, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle353" underline="false">K</Font> is the velocity error coefficient.  It is normally shown as <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle354" underline="false">Kv</Font> and has the units of 1/sec.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The straight-line approximations (shown in red) can be superimposed on the loop gain (shown in blue) by using the "display" command.</Text-field><Text-field layout="Normal" style="Normal"> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(attensemilog(`Y(f)`,.01,100),
        linesemilog(158,1,[.252],[1/.2453105557,1/51.19129784],.01,100));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The gain <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle316" underline="false">Kv</Font> = 158 is shown by the intercept of the initial -6dB/octave slope of the loop gain with the <Equation input-equation="omega*T = 1;" style="2D Comment">NiMvKiYlJm9tZWdhRyIiIiUiVEdGJkYm</Equation> axis at 42dB = 158.  Feedback cutoff (also known as gain crossover) occurs about 1/3 the way down a -6dB/octave slope, at about <Equation input-equation="omega*T = Kv/A;" style="2D Comment">NiMvKiYlJm9tZWdhRyIiIiUiVEdGJiomJSNLdkdGJiUiQUchIiI=</Equation>  = 10.  (Or, since the normalizing time constant, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle355" underline="false">T</Font>, is 1 second, <Equation input-equation="omega = Kv/(A*T);" style="2D Comment">NiMvJSZvbWVnYUcqJiUjS3ZHIiIiKiYlIkFHRiclIlRHRichIiI=</Equation>  = 10/sec.)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The phase margin is plotted thus,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input">Y(f);</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">   The big increase in phase margin between <Equation input-equation="omega = 1/Ta;" style="2D Comment">NiMvJSZvbWVnYUcqJiIiIkYmJSNUYUchIiI=</Equation> = 4/second and <Equation input-equation="omega = A/Tm;" style="2D Comment">NiMvJSZvbWVnYUcqJiUiQUciIiIlI1RtRyEiIg==</Equation> = 44/second is caused by the tacho feedback loop producing a long -6dB/octave attenuation between these frequencies.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Improved Phase Margin Diagram</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">   The shapes of the Bode diagrams above with semilog scales, particularly that for phase margin, are rather distorted below about <Equation input-equation="omega*T;" style="2D Comment">NiMqJiUmb21lZ2FHIiIiJSJUR0Yl</Equation>  = 0.1.  (This is a known problem with Maple's semilog plots - see Robert Israel's Maple Advisor.)  The diagrams can be improved by using the  "attenlog" and "phaselog" procedures in the Bode2 package, which plot the loop gain and phase margin against <Equation input-equation="log10(omega*T);" style="2D Comment">NiMtJSZsb2cxMEc2IyomJSZvbWVnYUciIiIlIlRHRig=</Equation>.  For example,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">phaselog(`Y(f)`,.01,100);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">unassign('omega');</Font></Text-field></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2"><Font bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="14" style="_cstyle275" underline="false">Closed Loop Response</Font></Text-field></Title><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Closed Loop Transfer Function</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">The closed loop transfer function, or system response, is given by</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">                                                   <Equation input-equation="theta*o(s)/(theta*i)(s) = C(s)/R(s);" style="2D Comment">NiMvKiglJnRoZXRhRyIiIi0lIm9HNiMlInNHRiYtKiZGJUYmJSJpR0YmRikhIiIqJi0lIkNHRilGJi0lIlJHRilGLg==</Equation> = <Equation input-equation="Y(s)/(1+Y(s)" style="2D Comment">NiMqJi0lIllHNiMlInNHIiIiLCZGKEYoRiRGKCEiIg==</Equation>   </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  Again abbreviating <Equation input-equation="Y(s)" style="2D Comment">NiMtJSJZRzYjJSJzRw==</Equation> to Y and similarly for <Equation input-equation="C(s)/R(s)" style="2D Comment">NiMqJi0lIkNHNiMlInNHIiIiLSUiUkdGJiEiIg==</Equation>, </Text-field><Text-field layout="Normal" style="Normal">   </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R` := Y/(1 + Y):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R` := factor(`C/R`);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The closed loop transfer function in the frequency domain, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle288" underline="false">C/R(f)</Font>, is</Text-field><Text-field layout="Normal" style="Normal"> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R(f)` := subs(s=j*omega,`C/R`);</Font></Text-field></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Closed Loop Frequency Response</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The closed loop frequency response is usually plotted as magnitude in dB against <Equation input-equation="log10(omega*T);" style="2D Comment">NiMtJSZsb2cxMEc2IyomJSZvbWVnYUciIiIlIlRHRig=</Equation> thus,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">Freq_resp := 20*log10(simplify(abs(`C/R(f)`))): </Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">omega := 10^w:</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := plot(Freq_resp,w=-1..1.5,-10..3,labels=["log10 (omega T )",""],title="Closed Loop Servo Frequency Response \n Magnitude dB"): </Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := pointplot([[-1,-3],[1.5,-3]],connect=true,colour=black,linestyle=2): </Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(p,q);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">unassign('omega');</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  Using the cursor, the plot shows that the peak magnification is 2.05 dB, or <Equation input-equation="M[peak] = 10^(2.05/20);" style="2D Comment">NiMvJiUiTUc2IyUlcGVha0cpIiM1KiYtJSZGbG9hdEc2JCIkMCMhIiMiIiIiIz8hIiI=</Equation> = 1.27, occurring at the servo's damped angular natural frequency.  This is given by <Equation input-equation="log10(omega[d]*T) = .73;" style="2D Comment">NiMvLSUmbG9nMTBHNiMqJiYlJm9tZWdhRzYjJSJkRyIiIiUiVEdGLC0lJkZsb2F0RzYkIiN0ISIj</Equation>, i.e. <Equation input-equation="omega[d];" style="2D Comment">NiMmJSZvbWVnYUc2IyUiZEc=</Equation> = 5.4/second (the normalizing constant, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle299" underline="false">T</Font>, having been chosen as 1 second).  The plot also shows that feedback cutoff, or gain crossover, frequency is given by <Equation input-equation="log10(omega*T) = 1.02;" style="2D Comment">NiMvLSUmbG9nMTBHNiMqJiUmb21lZ2FHIiIiJSJUR0YpLSUmRmxvYXRHNiQiJC0iISIj</Equation>, i.e. <Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle341" underline="false">w</Font> = 10.5/second.  The peak magnification and feedback cutoff (or gain crossover) frequency agree well with those found from the Nyquist diagram and the Bode attenuation diagram respectively.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The peak magnification and the frequency at which it occurs can be found algebraically as follows.  A function <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle347" underline="false">C/R</Font>(<Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle345" underline="false">a)</Font> is obtained by substituting <Equation input-equation="alpha = omega;" style="2D Comment">NiMvJSZhbHBoYUclJm9tZWdhRw==</Equation> in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle342" underline="false">C/R</Font>(<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle344" underline="false">f</Font>).  From this function, the maximum value of <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle343" underline="false">C/R</Font>(<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle346" underline="false">f</Font>) can then be found thus,</Text-field><Text-field layout="Normal" style="Normal"> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R(alpha)` := map(abs, subs(omega=alpha,`C/R(f)`) ):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R max` = maximize(`C/R(alpha)`,location,alpha=3..10);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal">  This shows that the maximum value of <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle273" underline="false">C/R</Font>(<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle356" underline="false">f</Font>) is 1.262 and is located at <Equation input-equation="omega*T = 5.435;" style="2D Comment">NiMvKiYlJm9tZWdhRyIiIiUiVEdGJi0lJkZsb2F0RzYkIiVOYSEiJA==</Equation>, demonstrating that using the cursor is sufficiently accurate for practical purposes.</Text-field><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal">  As measured with the cursor, the magnitude of the servo's frequency response falls to -3 dB at <Equation input-equation="omega[c];" style="2D Comment">NiMmJSZvbWVnYUc2IyUiY0c=</Equation> = 15.5/sec.  This frequency is known as the servo's cutoff frequency (not to be confused with the feedback cutoff frequency).  In this case, the servo's bandwidth extends from the very lowest input frequency - an input of "zero frequency" - up to the cutoff frequency.  That is, the bandwidth is 15.5/sec.  The precise value can be extracted from <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle358" underline="false">C/R</Font>(<Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle357" underline="false">a)</Font>, thus </Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">omega[c]*T = fsolve( `C/R(alpha)`=10^(-3/20), alpha,0..40);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The greater a servo's bandwidth, the faster its response, but the less the attenuation of any noise in the input.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">unassign('omega','alpha');</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Response to Unit Step Displacement</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal">  The servo's response to a unit step function of displacement is given by Output(s) = <Equation input-equation="theta*o(s) = `C/R`(s)*1/s;" style="2D Comment">NiMvKiYlJnRoZXRhRyIiIi0lIm9HNiMlInNHRiYqKC0lJEMvUkdGKUYmRiZGJkYqISIi</Equation>.  Abbreviating C/R(s) to C/R, the servo's response in the time domain to a unit step function of displacement, <Equation input-equation="theta*o = C;" style="2D Comment">NiMvKiYlJnRoZXRhRyIiIiUib0dGJiUiQ0c=</Equation> = <Equation input-equation="`C/R`*1/s;" style="2D Comment">NiMqKCUkQy9SRyIiIkYlRiUlInNHISIi</Equation>, is obtained using the inverse Laplace transform.  Since the input is 1 radian, the servo's normalized response is obtained by dividing by 1 radian.  The time axis is normalized by dividing by <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle370" underline="false">T</Font> = 1 sec, so that the plot is completely free of dimensions.</Text-field><Text-field layout="Normal" style="Normal">   </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`C/R step disp` := invlaplace(`C/R`/s,s,t):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := plot(`C/R step disp`/1,t=0..1,labels=["t/T","C/R"],
title="Normalized Response to Unit Step Displacement", colour=blue):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := plot([[0.02,0.08],[0.13,1.0]],style=LINE, colour=red):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">r := plot(1,t=0..1,linestyle=DOT, colour=black):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(p,q,r);</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  From the transient response plot above:</Text-field><Text-field layout="Normal" style="Normal">a.  the peak of the transient response is 1.21 (i.e. 21% overshoot), which is roughly the same as the peak magnification of the frequency response (1.27).</Text-field><Text-field layout="Normal" style="Normal">b.  the response time - i.e. time to reach peak of the transient - is 0.3 second.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  These can be obtained analytically</Text-field><Text-field layout="Normal" style="Normal">  </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">zero := diff(`C/R step disp`,t):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`Max overshoot at t/T` := fsolve(zero=0,t,0.1..0.4);</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`Max overshoot` := eval(`C/R step disp`,t=`Max overshoot at t/T`);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This demonstrates that using the cursor is accurate enough for most practical purposes.</Text-field><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal">  The maximum slope of the response, judged by eye, is shown by the red line on the plot.  The reciprocal of its slope gives an indication of the time for the response, i.e. C/R, to reach 1.0, and is known as the build-up, or rise, time.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`build-up time` := evalf((0.13 - 0.02)/(1.0 - 0.09),3);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  This can be obtained analytically,</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">inflect := diff(`C/R step disp`,t,t):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">tim := fsolve(inflect=0,t,0..0.2):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`build-up time` := 1/(eval( diff(`C/R step disp`,t), t=tim));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  Again, using the cursor is accurate enough.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Response to Unit Step of Velocity</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal">The servo's response to a unit step input of velocity is given by Output(s) = <Equation input-equation="theta*o(s) = `C/R`(s)*1/(s^2);" style="2D Comment">NiMvKiYlJnRoZXRhRyIiIi0lIm9HNiMlInNHRiYqKC0lJEMvUkdGKUYmRiZGJiokRioiIiMhIiI=</Equation>.  Abbreviating, <Equation input-equation="theta[o];" style="2D Comment">NiMmJSZ0aGV0YUc2IyUib0c=</Equation> = <Equation input-equation="C = `C/R`*1/(s^2);" style="2D Comment">NiMvJSJDRyooJSRDL1JHIiIiRidGJyokJSJzRyIiIyEiIg==</Equation>.  Whence the servo's response in the time domain is obtained using the inverse Laplace transform.  Again, the time axis is normalized by dividing it by <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle377" underline="false">T</Font> = 1 sec, while the response is normalized by dividing it by the input's (angular) position, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle360" underline="false">R</Font>.  That is, <Equation input-equation="theta[o] = C;" style="2D Comment">NiMvJiUmdGhldGFHNiMlIm9HJSJDRw==</Equation> is divided by <Equation input-equation="theta[i] = R;" style="2D Comment">NiMvJiUmdGhldGFHNiMlImlHJSJSRw==</Equation><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle365" underline="false"> </Font> = <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle361" underline="false">velocity</Font><Font encoding="ISO8859-1"> \327 </Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle362" underline="false">t</Font><Font encoding="ISO8859-1"> = 1 radian/sec \327 </Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle363" underline="false">t</Font> sec = <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle364" underline="false">t</Font> radian, thus,</Text-field><Text-field layout="Normal" style="Normal">  </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`vel step resp` := (invlaplace(`C/R`/s^2,s,t))/ t:</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := plot(`vel step resp`,t=0..3/2,labels=["t/T","C/R"],
title="Normalized Response to Unit Step of Input Velocity" ):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := plot(1,t=0..3/2,linestyle=DOT,colour=black):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(p,q);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The plot shows that the servo's normalized (position) response to a unit step input of velocity approaches unity smoothly and without any overshoot, reaching 0.99 at t/T = 0.8.  This fast, "pursuit" response is ideal for a tracking radar's servo that has to follow targets with rapidly changing velocities.</Text-field><Text-field layout="Normal" style="Normal">  </Text-field><Text-field layout="Normal" style="Normal">  The response, <Equation input-equation="theta[o] = C;" style="2D Comment">NiMvJiUmdGhldGFHNiMlIm9HJSJDRw==</Equation>, to a unit step input of velocity is simply the normalized response shown above, multiplied by the normalizing factor <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle366" underline="false">R</Font><Font encoding="ISO8859-1"> = 1 radian/sec \327 t sec, and is shown below.</Font></Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">p := plot(`vel step resp`*t,t=0..1, colour=blue ):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">q := plot(1*t,t=0..1,colour=red):</Font></Text-field><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">display(p,q,title = "Response (blue) to Unit Step Input (red) of Velocity",labels=["t/T","C &amp; R"]);</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The input = <Equation input-equation="theta[i] = R;" style="2D Comment">NiMvJiUmdGhldGFHNiMlImlHJSJSRw==</Equation><Font encoding="ISO8859-1"> = 1 radian/sec \327 </Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle371" underline="false">t</Font> is shown by the straight line on the plot.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The error when responding to a unit step input of velocity is <Equation input-equation="epsilon = theta[i]-theta[o];" style="2D Comment">NiMvJShlcHNpbG9uRywmJiUmdGhldGFHNiMlImlHIiIiJkYnNiMlIm9HISIi</Equation> = <Equation input-equation="R-C;" style="2D Comment">NiMsJiUiUkciIiIlIkNHISIi</Equation> and is shown below</Text-field><Text-field layout="Normal" style="Normal"> </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font encoding="ISO8859-1" italic="false" size="12" underline="false">plot( 1000*(1 - `vel step resp`)*t, t=0..3/2,title="Error of Response to Unit Step Input of Velocity", labels=["t/T","1000 \327 Error"],labeldirections=[horizontal,vertical] );</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The error falls to a minimum of 5.8 milliradians (mils) between t/T = 0.9 and t/T = 1.1, and then increases slowly to its steady state value.  Earlier this was shown to be<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle367" underline="false"> </Font><Equation input-equation="`ss error` = Omega/Ga/Km;" style="2D Comment">NiMvJSlzc35lcnJvckcqKCUmT21lZ2FHIiIiJSNHYUchIiIlI0ttR0Yp</Equation> = <Equation input-equation="Omega/Kv" style="2D Comment">NiMqJiUmT21lZ2FHIiIiJSNLdkchIiI=</Equation>.  In this case, <Font bold="false" executable="false" foreground="[0,0,0]" italic="false" size="12" style="_cstyle368" underline="false">W</Font> = 1 radian/sec. </Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`ss error` := evalf(eval(`ss error`,Omega=1));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  The design requirements included a maximum angular velocity input of 0.5 radian/second, generated by an aircraft flying at 150 yards/second (307 mph), which corresponds to the aircraft passing 300 yards away from a radar antenna controlled by the servo.  (See Section 6.12 in Chapter 6 of the Reference).  As noted above, the error increases slightly after t/T = 0.9, so the worst case tracking error will be obtained by using the steady state tracking error and the maximum input of 0.5 radian/sec.  Since the steady state error is the response to a unit step input of 1 radian/sec, the worst case tracking error with an input of 0.5 radian/second would have been:</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">`Tracking Error` := evalf(`ss error`/2*(300*yards),3);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">  In fact, the maximum tracking error at any range, r(t), is given by <Equation input-equation="Omega(t)*r(t)/Kv;" style="2D Comment">NiMqKC0lJk9tZWdhRzYjJSJ0RyIiIi0lInJHRiZGKCUjS3ZHISIi</Equation>.  Noting that the maximum angular input velocity occurs when the aircraft flies on a course perpendicular to the radar's beam, <Equation input-equation="Omega(t)[max] = V(t)/r(t);" style="2D Comment">NiMvJi0lJk9tZWdhRzYjJSJ0RzYjJSRtYXhHKiYtJSJWR0YnIiIiLSUickdGJyEiIg==</Equation>, whence maximum tracking error = <Equation input-equation="V(t)/Kv;" style="2D Comment">NiMqJi0lIlZHNiMlInRHIiIiJSNLdkchIiI=</Equation>.           </Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Observations</Text-field></Title><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Servo</Text-field></Title><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Summary</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">a.   The loop transfer function plotted on the Nyquist Diagram shows that the peak magnification of the frequency response, or resonance, is 1.27.  This is the same as the approximate value given by equation 109 in Section 8.8 of the reference.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">b.  The Bode charts of the loop gain and loop phase margin show a very big phase margin of 59 degrees at feedback cutoff (gain crossover), indicating a very stable closed loop system, even with the large value of the velocity error coefficient, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle372" underline="false">Kv</Font> = 158/second.  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle373" underline="false">Kv</Font> is readily measured as the intercept of the initial -6dB/octave slope of the loop gain with the <Equation input-equation="omega*T = 1;" style="2D Comment">NiMvKiYlJm9tZWdhRyIiIiUiVEdGJkYm</Equation> axis at 42dB = 158.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">c.  The servo's closed loop frequency response indicates a peak magnification of 1.27, as does the Nyquist Diagram, and a damped angular natural frequency of 5.4/second.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">d.  The servo's closed loop response to a unit step input shows a peak transient response of 1.21 (i.e. 21% overshoot), a build-up time of 0.12 second, and a response time of 0.3 second.  Although the servo's transient response might appear somewhat overdamped, this was necessary to minimise the response to noise generated by the radar, while still obtaining the best response to the radar's error signal when tracking an aircraft.  (The error signal corresponds to the difference between the axis of the radar's beam and the aircraft target.)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">e.  The peak transient overshoot of 1.21 in response to a unit step input of position, is roughly the same as the peak magnification of the frequency response, 1.27.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">f.   The servo's error, in response to a unit step velocity input, is ideally smooth and becomes constant at 6.33 milliradians after about 1.5 second.  (This corresponds to 0.95 yards when tracking a WW II aircraft flying at 307 mph past the radar antenna situated 300 yards from the flight path.)</Text-field><Text-field layout="Normal" style="Normal"> </Text-field><Text-field layout="Normal" style="Normal">g.  A root-locus is not included in this worksheet, since it adds nothing to the information given by the other plots, and could be slightly misleading.  It is, perhaps, worth remembering that the root-locus method was originally introduced into servomechanism analysis and design as a method for finding the roots of complicated transfer functions, and thence establishing the closed loop response to step inputs.  A PC with suitable software, such as Maple, now performs that function very much better<Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle376" underline="false">.</Font></Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Design Rule</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">h.  C.H. Dowker concluded that the best performance for a servo with proportional control would always be obtained by adjusting the loop gain (<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle279" underline="false">Kv</Font>), so that feedback cutoff (gain crossover) occurs one third the way down a long -6 dB/octave portion of the loop transfer function.  This gives the best response to the signal, while minimising the effect of noise.  (For adequate phase margin, the -6 dB/octave portion should always be at least 2.5 octaves long, and in this example, it was 3.5 octaves long.)</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 3" style="Heading 3">Maple</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">a.   Maple makes light work of obtaining the loop transfer function and then plotting the Nyquist diagram, Bode diagrams, closed loop frequency response, and transient responses to step inputs of position and of velocity.  It is all too easy to forget that before the advent of the PC and Maple, this work used to be both demanding and time consuming.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">b.  The cursor provides a quick and adequately accurate means for obtaining values from the plots, for example maximum overshoot from the plot of transient response to a step function of input displacement.  This is a very useful feature for servo design work.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">c.  At small values of the independent variable, the "semilogplot" command produces rather distorted plots.  This has been commented upon in Robert Israel's Maple Advisor.  However, the problem can be overcome as demonstrated above.  Similarly, the "maximize" command is not always successful - it failed when trying to obtain the maximum overshoot of the servo's response to a position step input.  This was simply overcome as shown above.  Robert Israel's Maple Advisor database contains a function that can be used in place of "maximize".</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">d.  Although the "coordplot(polar)" grid was used successfully for the Nyquist diagram above, it is somewhat restrictive, and a more versatile version would be useful for servo design and analysis.</Text-field><Text-field layout="Normal" style="_cstyle280"/></Input></Group></Section></Section><Section collapsed="true"><Title><Text-field layout="Heading 2" style="Heading 2">Reference</Text-field></Title><Group><Input><Text-field layout="Normal" style="_cstyle282"/><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle283" underline="false">Theory of Servomechanisms</Font> by Hubert M. James, Nathaniel B. Nicholls, and Ralph S. Phillips, Volume 25 of the Massachusetts Institute of Technology Radiation Laboratory Series, published by the McGraw-Hill Book Company, Inc. in 1947.  See particularly Sections 8.3 - 8.5, end of 8.7, and 
 8.8 - 8.9 in Chapter 8.</Text-field><Text-field layout="Normal" style="Normal"/></Input></Group></Section><Text-field layout="Normal258" style="Normal258"><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle374" underline="false">Legal Notice: The copyright for this application is owned by the author(s). Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.</Font></Text-field><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/><Text-field/></Worksheet>