130
Rochester Institute of Technology Rochester Institute of Technology RIT Scholar Works RIT Scholar Works Theses 5-10-1996 Graphical visualization of control system performance Graphical visualization of control system performance Jeffrey Marx Follow this and additional works at: https://scholarworks.rit.edu/theses Recommended Citation Recommended Citation Marx, Jeffrey, "Graphical visualization of control system performance" (1996). Thesis. Rochester Institute of Technology. Accessed from This Thesis is brought to you for free and open access by RIT Scholar Works. It has been accepted for inclusion in Theses by an authorized administrator of RIT Scholar Works. For more information, please contact [email protected].

Graphical visualization of control system performance

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Graphical visualization of control system performance

Rochester Institute of Technology Rochester Institute of Technology

RIT Scholar Works RIT Scholar Works

Theses

5-10-1996

Graphical visualization of control system performance Graphical visualization of control system performance

Jeffrey Marx

Follow this and additional works at: https://scholarworks.rit.edu/theses

Recommended Citation Recommended Citation Marx, Jeffrey, "Graphical visualization of control system performance" (1996). Thesis. Rochester Institute of Technology. Accessed from

This Thesis is brought to you for free and open access by RIT Scholar Works. It has been accepted for inclusion in Theses by an authorized administrator of RIT Scholar Works. For more information, please contact [email protected].

Page 2: Graphical visualization of control system performance

Graphical Visualization of Control SystemPerformance

AThesis Submitted in Partial Fulfillment ofthe Requirements for

Masters ofScience Degree in ..Mechanical Engineering

at Rochester Institute ofTechnology

on May 10,1996

By

Jeffrey D. Marx

Approvals:

Dr. Charles Haines, Department Head

Dr. Mark H. Kempski, Thesis Advisor

Dr. Kevin Kochersberger, Thesis Committee

Dr. Michael Hennessey, Thesis Committee

Page 3: Graphical visualization of control system performance

I, Jeffrey David Marx, grant permission to the Wallace Memorial Library to

reproduce my thesis in whole or in part. Any reproduction will not be for commercial use

or profit.

1/5"/9e:.Signature Date

Page 4: Graphical visualization of control system performance

Table ofContents

Table ofContents

Abstract

1. Background and Introduction to Program

1 . 1 Background 1

1 .2 Purpose and Overview 5

1.3'Visual'

Program Introduction 6

2. Control System Analysis and Design

2. 1 Tutorial Overview 20

2.2 Open Loop Control 21

2.3 Unity Feedback Proportional Control 23

2.4 Proportional Control with Velocity Feedback 30

2.5 Proportional-Integral Control 37

3. M-file Descriptions

3 . 1 System Parameter Determination withM-file Jl .m 47

3.2 System Pole PlottingwithM-file J2.m 53

3 .3 Graphical User Interface usingM-file J3 .m 55

3.4 Bode Amplitude and Phase Determination UsingM-files J4.m & J5.m 58

3.5 User Pole Selection withM-file J7.m 61

3.6 Two-Dimensional System Time Domain Response withM-file J8.m 63

3.7 Two-Dimensional System Bode ResponsewithM-files J9.m & JlO.m 65

3.8 Two-Dimensional Response SuperpositionwithM-file Jl3.m 67

3.9 System Output Response ParameterswithM-file J14.m 69

Page 5: Graphical visualization of control system performance

3.10 User Selection ofGain Values for Open Loop Systems withM-file Jl 5 75

3.11 System DC Gain Determination withM-file Jl6m 77

3.12 Root Locus Plot Design Limits withM-file Jl7.m 78

Appendix A Derivation of Second Order Performance Statistics

Appendix B Simulink Tutorial

Appendix C Theory Behind Matlab Step Algorithm

Appendix D M-file Flowcharts

Appendix E M-file Program Codes

References

Page 6: Graphical visualization of control system performance

Abstract

University courses on control system design have traditionally relied on the root

locus approach to predict transient system output. However, the increasing speed of

personal computers has made it practical to design control systems by simulating their

time and frequency responses. This thesis presents an interactive Matlab program for

control system analysis and design. The system is defined in Simulink with a user-

specified gain parameter of variable magnitude. The gain parameter is automatically

varied by the program within user-specified bounds. Several surface and performance

plots are produced which describe system time-domain and frequency-domain

performance. The system root locus is also presented with pole loci corresponding to the

gain values under scrutiny. The locus at a specific gain value can be selected for

determination of system performance using standard assessment parameters. This

program can be applied in both an educational setting and as a design tool for practicing

engineers.

Page 7: Graphical visualization of control system performance

Chapter 1

Background

&

Introduction to Program

Page 8: Graphical visualization of control system performance

1.1 Background

Scientific visualization is the process ofmaking complex states ofbehavior

comprehensible to the human eye. It has evolved from being an academic concept in the

early 1960's to become a standard part of engineering today. In its early stages, the

expense of computer graphics equipment limited its use primarily to large industries who

could afford to invest in the equipment. However, as the cost ofcomputer hardware has

decreased, and the sophistication ofvisualization software has increased, it has become

more cost effective for a broader range ofusers.

Human perception is naturally geared towards the three dimensions ofphysical

space, and can easily adapt to a fourth dimension such as color variation. By taking

advantage ofthe natural capabilities of the human eye, complex results from scientific

analysis can be communicated efficiently. In addition, with the use ofhighspeed

computers, it is possible to display the variation ofbehavior over time in animated

sequences which are not captured well in print. Animation can also be used to

interactively explore the nature of a result field by changing the observers view or

zooming in on a particular area of interest.

Many engineering design and analysis applications share common components of

modeling, analysis, and visualization ofresults. The figure below illustrates this process.

No

Page 9: Graphical visualization of control system performance

By creating a computer model of the product or process being designed, it is possible to

simultaneously design, test, and modify objects by computer simulation. This current

trend towards an integrated design, analysis, and visualization environment has the

following advantages:

DecreasedPhysical Testing. Testing by computer simulation instead of actual

prototype testing can result in a substantial cost savings. In addition, it allows an engineer

to observe phenomena which might be dangerous or impossible to reproduce physically.

Integration ofDesign andAnalysis. The better one can visualize analysis results,

the easier it is to correct flaws shown by the analysis.

Design Optimization. By visualizing analysis results of a model over a range of

parametric variations, optimal values for the parameters can be more easily determined.

Overall, visualization techniques have become part of a larger, evolutionary trend in the

engineering design field. Here, the computing environment promotes an interactive

process which encourages the exploration ofdesign alternatives.

The goal of this thesis is to develop a computer visualization tool for designing

control systems. However, this is not the first time this has been attempted. Stephen

Boyd at Stanford University developed the Interactive Control DesignModule (ICDM)

(Boyd,1993). His program shares some of the same features and ideas that are present in

the program developed for this thesis. For example, the main function ofboth programs is

the interactive design of continuous-time single-input single-output linear time invariant

control systems. Where it is assumed that the user has been exposed to the concepts of

classical feedback control theory. Also, both programs have incorporated a graphical user

Page 10: Graphical visualization of control system performance

interface which makes them easy to learn and use. Also, they both run under other

software packages. Boyd's runs under Xmath and mine underMatlab. Both also use a

multiple window design where each of the windows performs a particular set of functions.

There are however several features which ICDM has which are not available in my

program. For instance, ICDM offers multiple controller types and synthesis methods,

where as my program only offers two (3-D and Root Locus). The controllers and

synthesis methods offered by ICDM are: 1) PID 2) Linear Quadratic Gaussian (LQG)

3)Minimum Entropy Controller (LEQG) 4) Root Locus. The root locus controller

synthesis window features the separation, by color, ofplant and controller poles and zeros.

It also allows the user to graphically add or delete controller poles and zeros. Another

feature of ICDM is the ability to study the robustness ofa controller to variations in the

plant. Thus enabling the user to compare the effect on the systems performance to the

nominal system. ICDM also has an on-line help system built into it. Thus, giving the user

a convenient way to find answers to specific questions.

There are also several features that are present in my program which are not

available in ICDM. The first is the ability to create non-standard control system

configurations. My program can link with any control system that is created in Simulink

(Matlab's graphical block diagram builder). However, ICDM is limited to a standard

simple feedback control configuration. Another advantage my program offers is the ability

to create 3-D surface plots of the systems response over a user-input variable gain

range. This variable gain block can be placed at an arbitrary location within the control

system. A third feature my program has is plotting the desired pole region on the root

Page 11: Graphical visualization of control system performance

locus plot based on the user input constraints for the settling time and percent

overshoot. Another convenient feature ofmy program is it will compute the performance

statistics of the systems output, both analytically and numerically.

Both ICDM and my program are effective tools for control system design, but

each offers a distinctive approach to achieving its goal.

Page 12: Graphical visualization of control system performance

1.2 Purpose and Overview

The scope of this thesis is to develop a flexible and easy to use program within

Matlab that can be used to visualize and analyze arbitrary dynamic systems entered in

block diagram form in Simulink (see Appendix 'B'). In particular, it was desired to 3-

dimensionally visualize how the time-domain and frequency-domain response of an

arbitrary system changed due to a variable gain block placed somewhere within the block

diagram. It was also desired that these 3 -dimensional visualizations be linked together

with the traditional root locus approach of analyzing control systems. This program

could then be used as an educational aid for system dynamics and control systems

courses.

The program that was developed, named 'Visual', was successful in meeting and

going beyond the above objectives. It can be used as an effective tool for both analysis

and design of control systems. An educational benefit of the program is it allows the user

to quickly flip back and forth between the root locus plot and the 3 -dimensional response

visualizations. By flipping back and forth, students and practicing engineers, can develop

a better understanding ofhow gain parameter variations affect the root locus and system

response. Another educational benefit is that the colorful, 3 -dimensional response

visualizations are interesting to look at. This visual stimulation will help to increase

student interest in course material.

The Visual program also provides an effective environment for control system

design. Since the control system is defined as a block diagram in Simulink, it is easy for

Page 13: Graphical visualization of control system performance

the user to manipulate the control system configuration, as well as change parameters

within the blocks. The program then takes care of all the mathematical and

computational work, which allows the user to concentrate on the design process. In

addition, the program has an easy to use graphical interface, which allows the user to

issue commands by pointing and clicking on pull down menus. It is also interactive

allowing the user to vary the simulation time, gain range and interval, and performance

constraints on the system. The Visual program is also platform independent because the

Matlab language within which it was written, is available for multiple computer

architectures..

1.3'Visual'

Program Introduction

The'Visual'

program begins by creating a dialog box which prompts the user to

select a control system, previously created in Simulink, to be analyzed. After a system

has been selected the program prompts the user to input the simulation time, the gain

interval, and the performance constraints for percent overshoot and settling time. The

program then creates three figure windows: 3-D, Root Locus, and 2-D. 3-D is used to

create the 3-dimensional response visualizations. Root Locus is a window for functions

pertaining to the root locus of thesystem. 2-D creates 2-dimensional response plots and

computes performance statistics based on the system response plots. Each figure window

has its own set ofmenus and functions. The functions are accessed by clicking and

dragging menus which appear along the top of thewindow (i.e. in a menu bar). The

functions for each of the three figure windows are described below. The menu is first,

followed by the function (i.e. Menu->Function).

Page 14: Graphical visualization of control system performance

1.3.1 3-D WINDOW

Output->Amplitude

This function is used to create a 3 -dimensional plot of the time response of the

system over a specified gain range. The output variable is on one axis, time is on the

second, and the varied gain is on the third (see Figure 1.3.1.1). The gain range and

increment is input by the user. A pop-up menu in the bottom corner of the figure window

controls whether the input is a step or impulse function. This function is useful in

helping students better understand how a changing gain block within a system affects the

time domain response of a system.

Amplitude Plot with Variable Gain

time (sec)Gain

Figure 1.3.1.1

Page 15: Graphical visualization of control system performance

Output->Bode(AR)

This function is used to create a 3 -dimensional Bode Amplitude Ratio plot over a

specified gain range. The amplitude ratio is on one axis, the frequency is on a second

(log-scale), and the varied gain is on a third (see Figure 1 .3. 1 .2). Again, the gain range

and increment are input by the user. A pop-up menu in the bottom corner of the figure

window controls whether the frequency units are in rad/sec or Hz. This function is useful

in helping students understand how a varying gain block within a system can effect its

frequency response.

freq (rad/sec)10

2 1Gain

Figure 1.3.1.2

Page 16: Graphical visualization of control system performance

Output->Bode(Phase)

This function is similar to Bode(AR). It is used to produce a 3-D Bode(Phase)

plot over a specified gain range (see Figure 1.3.1.3). Again the frequency units are

controlled by a pop-up menu. This function is also useful for exploring how a varying

gain block within a system can effect its frequency response.

freq (rad/sec)Gain

Figure 1.3.1.3

View->2D1

This function converts a 3-D plot into a 2-D plot for each of the three previously

described 3-D functions. It does this by placing the view angle parallel with one of the

axes, so that the3-dimensional perspective is eliminated. In particular, the azimuth angle

Page 17: Graphical visualization of control system performance

is given a value of zero degrees and the elevation angle is set to zero(see Figure 1.3.1.4).

This function is useful because the 2-dimensional perspective can often clarify information

,both qualitative and quantitative, from the 3-D plots.

View-2D2

This function works the same as View-2D1 except the azimuth angle is given a

value of zero degrees(see Figure 1.3.1.4).

J*

U. -_:i*S^*;%!* .:

"^.^v^-^r^. ::J^

/ Azimuth = -37.5 degrees

/ 7

&

%-^<-i-/;A Elevation = 30 degrees

Figure 1.3.1.4

1.3.2 ROOT LOCUS WINDOW

Function->Plot Root Locus

This function creates a locus plot of the poles of the closed loop transfer function

of the system under scrutiny (see Figure 1.3.2.1). At each gain value, over the interval

specified by the user, the poles are plotted as yellow x's in the real-imaginary or s-plane.

By changing the gain interval the user can control how many poles are plotted as well as

over what range.

10

Page 18: Graphical visualization of control system performance

Root Locus

0 *,C..D i 1 r ^ 1

X

1 1 1

2 -

X-

1.5X

.

1 XX

.se 0.5

3

--

66i

0 X X X X X X X X X XX -

--

-1- X

XX

vx x x:

-1.5~

X-

-2-

X

X

-

,5 <;1 1 1 VI 1 1 1

-5.5 -5 -4.5 -3.5 -3 -2.5 -2

Real Axis

-1.5 -1 -0.5

Figure 1.3.2.1

Function->Select Gain

This function is used to select a particular gain value from the interval specified

by the user. By clicking on a pole, or yellow x in the root locus plot, the gain that

corresponds to that particular pole is stored by the program and displayed in the lower

corner of the Root Locus window. The system can then be analyzed at this gain value.

Function->Gain vs. DCGain

This function creates a 2-dimensional plot of the varied gain versus the DC Gain

or steady state of the system.This function is useful for determining the gain value that

is required to meet a constraint for the steady state of the system.

11

Page 19: Graphical visualization of control system performance

Function->PlotDesiredRegion

This function is used to plot the limit lines of the desired region on the root locus

plot, based on a second order approximation of the system. The limit lines are overlaid

on the root locus plot which must be active in the Root Locus window before this

function can be called. The desired region limit lines are determined based on the

constraints for percent overshoot and settling time of the system (see Figure 3.18,

Franklin (1994)). If the poles of the system lie within this region, then it is likely that the

performance constraints for percent overshoot and settling time will be met.

Root Locus

6-

4-

2w

x

<

co 0c

O)

3

E

-2

-4-

-6-

-8

-5.5

: X

X X X X

#

X~~

X X X X

X X XX

x. x x x;:

-4.5 -3.5 -3

Real Axis

2.5 -1.5 -1 -0.5

Figure 1.3.2.2

12

Page 20: Graphical visualization of control system performance

Function->Select Open Loop Gain

This function was created to allow the user to select a particular gain value, from

the gain interval, in an open loop system. Because the root locus of an open loop system

consists of only one set ofpoles, it is not possible to use the 'SelectGain'

function to

select an arbitrary gain value. By selecting this function, an arbitrary gain value can be

entered in the Command window as long as it is contained in the gain interval defined by

the user.

Function->Plot 2-D Response

Once a gain has been selected from the root locus, this function can be used to

highlight the response curve for the selected gain in the 3-D window. The 3-D window is

automatically made active and the response curve is highlighted in green against a mauve

colormap of the 3-D surface response plot. The 3-D response plot that was last created

(Amplitude, Bode(AR), or Bode(Phase)) is the one used by this function. This function

helps the user to determine where the response corresponding to the selected gain occurs

within the 3-D surface plot..

1.3.3 2-D WINDOW

Output->Amplitude

This function is used to output the time domain amplitude response at a gain value

previously selected in the Root Locus window (see Figure 1.3.3.1). The time interval is

the same as used for the 3-D->Amplitude response plot. By plotting the amplitude

response two-dimensionally it is easier for the user to quantitatively evaluate the response.

13

Page 21: Graphical visualization of control system performance

Amplitude Response

3 4

time (sec)

Output->Bode(AR)

Figure 1.3.3.1

This function creates a 2-D Bode (Amplitude Ratio) plot using the gain value

selected in the Root Locus window (see Figure 1.3.3.2). The frequency range is from 1

rad/sec to 100 rad/sec. Again, the 2-D plot allows the user to quantitatively analyze the

response.

14

Page 22: Graphical visualization of control system performance

0

-20

Bode Amplitude Response

- ^X'

s-to

o

- \o \

-80 \-100

U.S. : . :\10"'

10"10'

frequency (rad/sec)10

Figure 1.3.3.2

Output->Bode(Phase)

This function works the same as Bode(AR) except a Bode(Phase) plot is created

(see Figure 1.3.3.3).

Bode Phase Response

10"

10

frequency (rad/sec)

10

Figure 1.3.3.3

15

Page 23: Graphical visualization of control system performance

Output->Statistics

This function is used to output the performance statistics of the 2-D response plot

that is currently displayed in the 2-D window. A 2-D response plot must first be created

for this function to work. All the statistics are determined numerically using the response

data except for first and second order systems where the statistics are estimated

analytically using the natural frequency, damping ratio, and time constant. For each of

the 2-D response plots the statistics are as follows:

First Order;

Gain

Second Order:

Gain

Settling Time

Higher Order:

Gain

Rise Time

Amplitude

Break Frequency Time constant DC Gain

DC Gain Peak Time Rise Time

Percent Overshoot Damping Ratio Natural Frequency

Peak Time

Settling Time

Percent Overshoot DC Gain

Bode (AR and Phase)

First Order:

Gain

Second Order:

Gain

Peak Frequency

Higher Order:

Gain

Band Width Cut-OffRate Max Phase Angle

Natural Frequency Damping Ratio Band Width

Cut-OffRate Max Phase Angle

Peak Frequency Band Width

16

Page 24: Graphical visualization of control system performance

2 Control System Analysis and Design

This section is a tutorial on how the program can be used as both an educational

and design tool. The design method used in the tutorial is an enhanced root locus

method. This method combines the traditional root locus approach with three

dimensional visualization techniques. First, a short description of the Root Locus

method.

The Root Locus method is an outward design approach (Chen, 1993). It starts

outward with an initial design configuration, and works inward by adjusting the

parameters of the components of the system until a suitable configuration is achieved. It

is a trial and error approach to design which requires the designer to"play"

with the

components of the system. The method starts by determining the overall transfer

function of the system. The roots of the denominator of this transfer function are called

poles, and are then plotted in the real-imaginary plane or s-plane. By varying a

component of this system, such as a gain, the system poles will change their s-plane

location. A Root Locus is a plot of the changing poles in the s-plane as a gain parameter

changes. Once the Root Locus has been plotted, it is easy to determine a s-plane region

that the poles must fall within to meet the design constraints on settling time and percent

overshoot (Figure 1 .3.2.2). It is then the job of the designer to find to a particular gain

value such that the corresponding poles lie within the desired region. With the poles

known, the system response can be simulated either analytically, using inverse Laplace

transforms, or numerically with a computer.

17

Page 25: Graphical visualization of control system performance

The'

Visual'

program enhances the traditional Root Locus method by creating a

3 -dimensional locus plot of the time responses over a specified gain range. One axis is

the output variable of interest, the second is time, and the third is the varied gain

parameter. The gain range that is used to create the three dimensional time response plot,

is the same gain range used to create the Root Locus plot. While using the program

offers students several advantages over the traditional Root Locus technique, it is not

intended as a replacement for it. Students still need to learn the theory and mathematics

behind the traditional methods. The program can then serve to reinforce these concepts,

as well as provide an efficient environment for design.

The advantages ofusing the Visual program over the traditional root locus

methods can be divided into two categories: education and design. One of the

educational benefits of using the program is the ability to quickly flip back and forth

between the root locus window and the 3 -dimensional time response locus window. By

flipping back and forth, students can develop an intuitive feel for how the changings-

domain pole locations effect the time domain system response. Another educational

benefit of the program is that the 3-D visualization of the time responses is more visually

stimulating to students than the 2-D root locus plot. This visual stimulation will help to

keep students attention focused on the subject matter.

The Visual program also provides an effective environment for control system

design. Because the program interfaces with control systems defined as Simulink block

diagrams, the control system and plant can be easily manipulated (Appendix 'B'). This

allows the user to easily change parameterswihin the control blocks or change the control

18

Page 26: Graphical visualization of control system performance

system configuration. In addition, the Visual program takes care of all the mathematical

and computational work, allowing the user to concentrate on the design process. This

fascilitates the user being able to"play"

with the design, without getting bogged down in

mathematics at each step.

The Visual program also overcomes several of the limitations of the root locus

design method. One limitation is that the desired region on the root locus plot is only a

rough estimate for systems of order higher than two (Chen, 1993). In these cases the

system response should be numerically simulated to ensure that the design constraints

have been met. Since, the program automatically simulates the response numerically, the

user has a quick way to check whether the desired region is valid for a paticular system of

poles. If the user is dealing with a complex system, with perhaps 4 or more branches

going in various directions, it may be difficult to interpret how the root locus affects the

time domain response. By using the 3-D time response windowwithin Visual, it is easy

to qualitatively understand how the systems time response is affected by the gain change.

Another limitation encountered in the root locus technique is that the design constraint on

the steady state error is usually ommitted fromconsideration. By using the Visual

programs 3-D window, the user is able to visualize how the steady state error varies with

the gain, as long as the response has been simulated beyond the steady state point. A

final design advantage ofusing Visual is it allows the user to specify the gain range over

which to analyze the system. By specifying a smaller and smaller gain range, the user

can hone in on the exact gain value that meets the design objectives while satisfying the

design constraints.

19

Page 27: Graphical visualization of control system performance

2.1 Tutorial Overview

In this tutorial we will look at three different control scenarios: 1) Proportional

control 2) Proportional control with velocity feedback 3) Proportional-Integral control.

The first scenario is proportional control with unity feedback, of a simple two lag plant.

The plant transfer function is:

1 1G(s) =

(s + 4)(s-.5) s2+3.5s-2

It could be the transfer function of a motor driving a load. The block diagram for this

control system was defined in the Simulink tutorial as Prop.m. It should be of the form:

1 +

Surr K

11

ynport

s^+3.5s-2

Plant

Figure 2. 1.1

Say, the control design must be able to meet the following constraints:

Position Error <= 20%

Overshoot <= 20%

Rise Time <= 0.5 sec.

Settling Time<= 3 sec.

The goal of the designer is to find a proportional gain (K) such that all the design

constraints are met

20

Page 28: Graphical visualization of control system performance

Prior to launching the Visual program, the control system designer may wish to

define root-locus constraints using equivalent second order system response criteria. The

settling time constraint would dictate a lower bound for a)n and hence, pole real-axis

location. Likewise, the overshoot constraintwould dictate a max and hence, define an

admissible wedge-shaped region of the s-plane (Figure 1.3.2.2). The damping ratio (Q

that corresponds to the design constraint for percent overshoot, can be determined from

Figure 2.1.2. The damping ratio that corresponds to a percent overshoot of 20 percent is

approximately 0.46. The Visual program automatically determines the desired pole

region from the user supplied information.

1UU

- 80c

u

i 60

oo

- 40

>

O

20

0 0.2 0.4 0.6 0.8 1.0 1.2

Damping ratio

Figure 2.1.2

2.2 Open Loop Control

The interactive procedure is as follows:

21

Page 29: Graphical visualization of control system performance

^ Make the Visual folder the active path by opening the Visual folder and then

hitting the cancel button (or edit the Matlab Path

^ First let's try open loop control of the system. Type"Visual'

in the Command

window to start the program. When the dialog box appears, chose the system

"open.m". Enter the correct transfer function G(s), in the plant block as shown in

Figure 2.2.1 (Refer to the tutorial in Appendix'B'

as needed.)

1

npo

fe.

K

1>w

1

y1

3^+3.58-2w

Figv

Plant

ire 2.2.1

^ Click in the Command window.

# Enter an ending time of 7 seconds, and a time increment of 0.025 seconds.

^ Enter a starting gain of 1,an ending gain of 6, and a gain increment of 0.5.

^ Enter the design constraint for the damping ratio (0.46) and settling time (3 sec).

Three windows should appear on the screen (3-D, 2-D, and Root Locus).

2.2.1 Time-Domain Response

^ In the'3-D'

window, under the'Output'

menu, select'Amplitude'

(Abbreviated;

The items identified by the bold arrow (+) indicatean active input by the student.

'

Henceforth, such menu selectionsequences will be similarity abbreviated.

22

Page 30: Graphical visualization of control system performance

The step response is unstable for all the gain values in the selected range. Increasing gain

increases the speed of reponse, but does not improve the system stability. This is expected

because the system contains a pole in the right halfof the s-plane.

2.2.2 Root Loci

^ Make the 'RootLocus'

window active by clicking in it with the mouse.

^ Root Locus->Function->Plot Root Locus

The gain does not change the roots of the transfer function for an open loop system.

Therefore, the root locus consists of the roots of the plant transfer function. Because

there is one positive real root at 0.5, the system will always be unstable regardless of the

gain. Thus, we can not achieve any of our design requirements with open loop control.

2.3 Unity Feedback Proportional Control

Let's try a unity-feedback configuration, with proportional control.

^ Close all three openwindows except the Command window

^ Start the program by typing either,"Visual'

or"/3"

J3 starts the program

bypassing the cover page. Choose "Prop.m", and enter the transfer

function G(s), in the Plant block as defined previously in Figure 2.1.1.

^ Click in the Command window.

^ Enter a ending time of 7 sec, and a time increment 0.025 sec.

^ Enter a starting gain of 1, an ending gain of 7, and a gain increment of 0.5.

^ Enter the constraints on the damping ratio (0.46), and settling time (3 sec.)

23

Page 31: Graphical visualization of control system performance

2.3.1 Time-Domain Response

+ 3-D->Output->Amplitude

Here, the response changes from unstable to stable over the gain range. Hence, closing

the loop in conjunction with a proportional gain has affected the system's stability.

2.3.2 Root Loci

^ Make the 'RootLocus'

window active.

^ RootLocus->Function->Plot RootLocus

For a closed loop system, the roots change as the gain changes. The root locus starts with

one unstable root at 0.5. However, as the gain is increased this root is pulled into the left

halfplane, making the system stable. This stablizing effect can also be seen in the 3-D

window.

^ Root Locus->Function->Select Point

# Click on a pole that corresponds to a gain of 1 . 5 .

When a pole has been selected it turns green, and the corresponding gain value is

displayed in the lower left corner. The Select Gain pull-down function can be used

repeatedly until the desired gain has been selected.

2.3.3 Performance Assessment

^ RootLocus->Function->Plot 2-D Reponse

Note that the response corresponding to the selected gain is highlighted in the 3-D

window.

4 2-D->Output->Amplitude

24

Page 32: Graphical visualization of control system performance

The system is unstable for that gain value, thus the response is unbounded.

+ 2-D->Output->Performance Stats

There is no stable DC Gain for this root locus selection, thus all the other statistics are

meaningless. The program recognizes that the response is unstable and informs the user.

^ Make the Root Locus window active again.

^ Root Locus->Function->Select Gain

^ Click on a pole corresponding to a gain of 4.

^ RootLocus->Function->Plot 2-D Response

+ 2-D->Output->Amplitude

The response is now stable and the output is now bounded.

+ 2-D->Output->Performance Stats

Since the response is stable, the DC Gain and all other stats are defined. Increasing the

gain has made a dramatic improvement in the performance of the system. However, the

response is still too slow to meet the performance specifications. Now let's see if there is

a gain, within the range we specified, that will satisfy all the performance criteria.

2.3.4 Proportional Controller Design

^ Make the Root Locus window active.

Notice that the two branches of the locus converge at around a gain of 5, after which the

branches continue in opposite imaginary directions. Since, (see Figure 2.3.4.1) the

settling time is determined from the real part of the roots, the settling time reaches a

minimum at approximately a gain of 5.

25

Page 33: Graphical visualization of control system performance

Root Locus

-2 -1 .5

Real Axis

Figure 2.3.4.1

Make the 3-D window active.

As expected the response time seems to level off at around a gain of 5. Also notice that

the response speed increases as the gain increases.

+ Click back in the Root Locus window.

^ RootLocus->Function->Select Gain

+ Click on a pole corresponding to a gain of 6

^ RootLocus->Function->Plot 2-D Response

+ 2-D->Output->AmplUude

The increased gain has increased the speed of response.

26

Page 34: Graphical visualization of control system performance

+ 2-D->Output->Performance Stats

The DC Gain is still too high to meet the specification.

^ Make the 3-D window active

Notice that the position error decreases as the gain increases. Therefore, we need a gain

greater than 6 to meet the specification on position error.

^ Close all three open figure windows.

^ Type"J3"

to run program again, and choose"Prop.m"

^ Enter a end time of 7 sec, and a time increment of 0.025 sec.

^ Enter a starting gain of 6, an ending gain of 20, and a gain increment of 0.5.

^ Enter the desired damping ratio (0.46), and the desired settling time (3 sec.)

4. 3-D->Outpui->Amplitude

Notice that the steady state error decreases as the gain increases.

* 3-D->View->2-Dl

The response curves are pushed outward as the gain increases. Thus the response is

slower as the gain is increased and correspondingly the rise time decreases.

4. 3-D->View->3-D

^ Make Root Locus window active.

+ RootLocus->Function->PlotRootLocus

+ RootLocus->Function->PlotDesiredRegion

All the poles fall within the desired region for settling time. At a gain less than 16.5 the

poles lie inside the desired region for overshoot.

27

Page 35: Graphical visualization of control system performance

^ RootLocus->Function->Gain vs. DC Gain

From the performance criteria, the position error must be less than 20%. From the graph

it can be seen that this criteria is met at a proportional gain greater than 12. Thus, to meet

both performance criteria the gain needs to be between 12 and 16.5.

^ Root Locus->Function->PlotRoot Locus

^ Root Locus->Function->Select Gain

^ Click on a pole corresponding to a gain of 12.

^ RootLocus->Function->Plot 2-D Response

+ 2-D->Output->Amplitude

Increasing the gain has improved the steady state error.

# 2-D->Output->Performance Stats

The specifications for DC Gain, overshoot, and settling time have been met. However

rise time is still too slow. Ifyou flip back to the 3-D window you will notice that as the

gain increases, the rise time decreases. Therefore, we need to increases the gain to

decrease the rise time.

^ Make Root Locus window active.

^ RootLocus->Function->Select Gain

+ Click on a pole corresponding to a gain of 16.5.

+ RootLocus->Function->Plot 2-D Response

^ 2-D->Output->Amplitude

^ 2-D->Output->Performance Stats

28

Page 36: Graphical visualization of control system performance

All the performance specifications for the system have now been met. Thus, by using a

unity feedback control configuration, with a proportional gain of 16.5 the system design

is complete. The specifications for our system are:

Overshoot- 19.68%

Settling Time - 2.629 sec.

Rise time - 0.4727 sec.

DC Gain - 1.138 (13.8% error)

29

Page 37: Graphical visualization of control system performance

2.4 Proportional Control with Velocity Feedback

The next example we will consider makes use of a proportional-derivitive

controller. The plant transfer function we wish to control is:

G(S)=3 12 <s +6s +5s

which incorporates a free integrator in the plant dynamics. Let us assume the output of

the plant is a position signal.

The following performance criteria have been specified for the system response.

1. Overshoot <= 5%

2. Settling time < 5 sec.

3. Rise time as small as possible.

4. Position error as small as possible.

First, we need to find the damping ratio that corresponds to the constraint for percent

overshoot. From Figure 2. 1 .2, the damping ratio that corresponds td a overshoot of 5

percent is approximately 0.70. We will start the design with proportional control.

2.4.1 Proportional Controlwith Position Feedback

+ Make the Visual folder the active path, and start the program by typing"J3"

or "Visual*. Chose"Prop.m"

^ Type in the transfer function G(s) (see Figure 2.4. 1.1)

30

Page 38: Graphical visualization of control system performance

1 + fe.

w

nportSum

Figure 2.4.1.1

^ Click in the Command window.

^ Chose an ending time of 1 1 sec, and a time interval of 0.025 sec.

# Chose a starting gain of 1,an ending gain of 1 8, and a gain interval of 1 .

^ Enter the constraints on the damping ratio (0.7) and the settling time (5 sec).

+ 3-D->Output->Amplitude

As the gain increases the system becomes increasingly oscillatory until it eventually

becomes unstable.

# Make the Root Locus window active.

^ Root Locus->Function->PlotRoot Locus

At a gain greater than 16, two of the system poles are in the right halfplane which

indicates instability.

^ RootLocus->Function->PlotDesiredRegion

No system ofpoles fall into the desired region for settling time, and for a gain greater

than 1, the poles fall outside the desired overshoot region.

+ RootLocus->Function->Select Gain

Click on a pole corresponding to a gain of 1 .

31

Page 39: Graphical visualization of control system performance

+ Root Locus->Function->Plot 2-D Response

+ 2-D->Output->Amplitude

^ 2-D->Output->Performance Stats

As expected for a gain of 1, even though the overshoot meets the specification the settling

time is much too large. We cannot improve the settling time with proportional control, so

we need to try a different control configuration.

2.4.2 Proportional Control with Position and Velocity Feedback

Let's try a velocity feedback control configuration. This configuration has two possible

parameters to be varied, the proportional (controller) and derivitive (feedback) gains. For

this scenario optimal values for both gains need to be found. To accomplish this a

constant value will be selected for the proportional gain, and the derivitive gain will be

varied over a specified range. This process will be repeated using different constant

values for the proportional gain in an interative fashion. The velocity feedback control

configuration should be of the form shown in Figure 2.4.2.1.

InportD>

Sum Gainl Sum1s'+Ss+S

Plant

<

Integrator

2.4.2.1 Baseline Configuration

Figure 2.4.2.1

32

Page 40: Graphical visualization of control system performance

^ Start the program by typing "73", and choose"Velfeed.m"

^ Enter the correct"Plant"

transfer function block from Figure 2.4.2. 1 .

^ Under the derivitive or feedback gain block, enter the label "K". Under the

proportional gain block, enter the label "Prop". Inside the block enter a value of

1 for the proportional gain.

+ Enter an ending time of 1 0 seconds, and a time increment of 0.025 sec.

^ Enter a starting gain of 1, an ending gain of 9, and a gain increment of 0.5.

^ Specify the damping ratio to be 0.7 and settling time to be 5 seconds.

^ 3-D->Output->Amplitude

Ten seconds is not long enough for the system to reach steady state. We need to increase

the simulation ending time. Also, notice that increasing the derivitive (feedback) gain

makes the response slower.

^ Make the Root Locus window active.

^ RootLocus->Function->PlotRoot Locus

^ RootLocus->Function->PlotDesiredRegion

The poles fall outside the desired region for settling time, because there is a dominant

pole near the origin (Figure 2.4.2.2).

33

Page 41: Graphical visualization of control system performance

Root Locus

2.5 -2

Real Axis

1 -0.5 0

Figure 2.4.2.2

# RootLocus->Function->Select Gain

Click on a pole corresponding to a gain of 2.5.

^ RootLocus->Function->Plot 2-D Response

+ 2-D->Output->Amplitude

The response has not reached steady state. The final time should be increased.

^ 2-D->Output->Performance Stats

The settling time could not be computed numericallybecause the response was not

carried out to steady state. Also the rise time is much too large.

2.4.2.2 Improved Configuration

Change the proportional gain to a value of 5.

^ Close all three open figure windows.

* Type"73"

to start the program, choose"velfeed.m"

34

Page 42: Graphical visualization of control system performance

^ Enter 5 in proportional gain block (Prop)

+ Enter an ending time of 7 sec, and a time interval of 0.025 sec.

^ Enter a starting gain of 1,an ending gain of 1 0, and a gain interval of 0. 5 .

^ Specify the constraints on the damping ratio (0.7) and the settling time (5 sec).

+ 3-D->Output->Amplitude

The response is more stable for a proportional gain of 5. Increasing the feedback gain

does not make the response become oscillatory.

* 3-D->View->2-Dl

From this two dimensional perspective, it can be seen that increasing the feedback gain

makes the time response more sluggish since the rise time is increasing.

^ Make the Root Locus window active.

^ RootLocus->Function->PlotRootLocus

# Root Locus->Function->Plot DesiredRegion

The poles fall into the desired overshoot region if the feedback gain is greater than 3 and

less than 6.5. The poles fall within the desired settling time region if the feedback gain is

less than 5. Therefore, to meet both specifications, the feedback gain must be between 3

and 5. However, because the system is ofa higher order than 2, we cannot be certain that

the system truly meets the constraints until we simulate the systems response.

^ Make the 3-D window active.

As predicted in the root locus window, the overshoot starts high, then decreases, then

increases again. Also, the settling time increases as the gain increases.

35

Page 43: Graphical visualization of control system performance

^ Click back in the Root Locus window.

^ RootLocus->Function->Select Gain

^ Click on a pole corresponding to a gain of 3 .

^ RootLocus->Function->Plot 2-D Response

4 2-D->Output->Amplitude

The response appears fast and stable.

4 2-D->Output->Performance Stats

The criteria for the settling time and the overshoot have been met, and the rise time is 1.4

seconds. Let's see if the performance statistics can be improved.

^ Make the Root Locus window active

^ RootLocus->Function->Select Gain

Click on a pole corresponding to a gain of4.

^ Root Locus->Function->Plot 2-D Response

+ 2-D->Output->Amplitude

There is no visible overshoot.

+ 2-D->Output->Performance Stats

The statistics for the overshoot and settling time are still within the constraints. However,

the rise time has been increased to 1.75 seconds. There exists a trade-offbetween the rise

time and the overshoot as the gain is increased. If the rise time is the more critical statistic

then a gain of 3 should be used. However, if the overshoot is the more important

statistic, then a gain of4 should be used.

36

Page 44: Graphical visualization of control system performance

2.5 Proportional-Integral Control Example

The last example we will look at is a proportional-integral control scenario with

unity feedback. The plant transfer function is:

1G(s) = -

sz+4s + 3

The performance criteria for the system are:

1) Position error < 10%

2) Overshoot < 10%

3) Settling time < 3 sec.

4) Rise time < 0.6 sec.

From Figure 2. 1.2,

the damping ratio corresponding to an overshoot of 10% is

approximately 0.62. We will start the design by using a simple unity feedback,

proportional control scenario.

2.5.1.1 Baseline Proportional Control Scenario

^ Make the"Visual"

folder the active path.

^ Start program by typing "J3", choose"prop.m"

^ Enter the transfer function G(s) in the Plant block from Figure 2.5.1.1.1

Figure 2.5.1.1.1

37

Page 45: Graphical visualization of control system performance

^ Click in the command window

+ Enter a end time of 7 sec, and a time interval of 0.025 sec.

^ Enter a starting gain of 1,an ending gain of 9, and a gain interval of 0. 5 .

+ Enter the settling time (3 sec.) and the damping ratio (0.62) constraints.

4. 3-D->Output->Amplitude

The response is stable and steadies quickly. The steady state response of the system

increases as the gain inceases.

^ Make the Root Locus window active.

^ RootLocus->Function->PlotRootLocus

^ RootLocus->Function->PlotDesired Region

All the poles fall into the desired region for settling time. For a gain of less than 7.5, the

poles fall within the desired region for overshoot. This is consistant with what is

observed in the 3-D window.

+ RootLocus->Function->Select Gain

^ Click on a pole corresponding to a gain of 8

+ RootLocus->Function->Plot 2-D Response

^ 2-D->Output->Amplitude

There is a large steady state error at this gainvalue.

4 2-D->Output->Performance Stats

The steady state response is0.727. This is below the requirement of 0.9. However, all

other design criteria have been met.

38

Page 46: Graphical visualization of control system performance

^ Close all three open figure windows.

2.5.1.2'Improved'

Proportional Control Scenario

Let's try proportional control again, this time using larger gains to eliminate the steady

state error.

+ Type"73"

to start program, choose"prop.m"

^ Enter an ending time of 7 sec, and a time interval of 0.025 sec.

+ Enter a starting gain of 1 0, an ending gain of 34, and a gain interval of 2

^ Enter the constraints on the damping ratio and settling time.

4 3-D->Output->Amplitude

The steady state error is decreasing, and the response settles faster as the gain increases.

However, the downside is the overshoot also increases as the gain increases.

^ Make the Root Locus window active.

+ Root Locus->Function->Plot RootLocus

^ RootLocus->Function->PlotDesiredRegion

None of the poles lie within the desired region for overshoot. However, they do fall

within the desired settling time region.

^ RootLocus->Function->Select Pole

Click on a pole corresponding to a gain of 32.

+ RootLocus->Function->Plot 2-D Response

4 2-D->Output->Amplitude

The response is oscillatory.

39

Page 47: Graphical visualization of control system performance

4> 2-D->Output->Performance Stats

In order to meet the specification on position error the overshoot has jumped to 32.35

percent. Thus, it is not possible to meet all the performance specifications with simple

proportional control.

2.5.2 P-I Controller Design

A different type of control configuration must be used that will meet all the transient

performance criteria, while also achieving good steady state performance. Try a

Proportional-Integral control configuration which eliminates the steady state error.

Figure 2.5.2.1 depicts the system block diagram.

Figure 2.5.2.1

This control scenario has two free parameters, K and Ki. In order to find a optimal value

for both parameters, we will arbitrarily choose a value for the proportional gain (K) and

vary the integral gain (Ki ) over some range. This process will be repeated until values

for K and Ki are found thatmeet the desired specifications.

2.5.2.1 Baseline P-I Control Scenario

4s Type"73"

to start program, and choose"PIone.m"

40

Page 48: Graphical visualization of control system performance

4 Enter the correct transfer function G(s) in the Plant block from Figure 2.5.2. 1

4 Name the proportional gain block'Prop'

and enter a value of 1 .

4 Name the integral gain block 'K'.

4 Enter an ending time of 12 sec, and a time interval of 0.025 sec.

4 Enter a starting gain of 1, an ending gain of 6, and a gain interval of 0.5.

4 Enter the constraints on the damping ratio (0.62) and the settling time (3 sec).

4 3-D->Output->Amplitude

The steady state error has been eliminated. However as K, increases the response

becomes more oscillatory.

4 Make the Root Locus window active

4 RootLocus->Function->Plot RootLocus

4 RootLocus->Function->Plot DesiredRegion

None of the poles are within the desired region for settling time. The settling time is

increasing as Ki increases because the dominant pole is moving towards the origin.

4 Make the 3-D window active

As K increases the response becomes more oscillatory and less settled. Therefore, using

a proportional gain of 1, the design criteria cannot be met.

4 Close all three open figure windows.

2.5.2.2'Improved'

P-I Control Scenario

Try increasing the proportional gain (Prop).

4 Type"73"

to start program, and choose"Plone.m"

41

Page 49: Graphical visualization of control system performance

4 In the proportional gain block (Prop), enter 4.

4 Enter an ending time of 9 sec, and a time interval of 0.025 sec.

4 Enter a starting gain of 1, an ending gain of 6, and a gain interval of 0.5.

4 Enter the constraints on the damping ratio (0.62) and settling time (3 sec).

4 3-D->Output->Amplitude

The response is more stable and less oscillatory using a proportional gain of 4.

4 Make the Root Locus window active.

4 RootLocus->Function->Plot RootLocus

4 RootLocus->Function->Plot DesiredRegion

The constraint on the settling time is not met. By selecting a particular gain values for K

and plotting the amplitude response in the 2-D window, it can be shown that as K

increases, settling time first decreases until K=

4.5, then increases. The overshoot

continuously increases K, increases. For a proportional gain of4, no value ofK can meet

all the performance criteria.

4 Close all three open figure windows.

2.5.2.3'Refined'

P-I Control Scenario

Try increasing the proportional gain again.

4 Type"73"

to run program, and choose"Plone.m"

4 In the proportional gain block (Prop ), enter 9.

4 Enter a ending time of 7 sec, and a time increment of0.025 sec.

4 Enter a starting gain of 3, an ending gain of 10, and a gain interval of 0.5.

42

Page 50: Graphical visualization of control system performance

4 Enter the constraints on the damping ratio (0.62) and settling time (3 sec).

4 3-D->Output->Amplitude

The response is now settling quicker and the overshoot is less pronounced.

4 Make the Root Locus window active.

4 Root Locus->Function->Plot Root Locus

4 Root Locus->Function->Plot DesiredRegion

None of the poles fall into the desired region for settling time or overshoot. The poles

fall just outside the overshoot region (see Figure 2.5.2.3.1). However, this is not a second

order system, so the desired pole region is inexact. The response should be

computationally simulated to be sure the performance criteria have not been met.

-2

3

Root Locus

1 1 1 1 1 1 1 1

**XXxxxxxxxx*xx

2

1

in

<

1

: 1

"

"-

-

0c

CO

e

-1

-2

;

| X XX X X X X X X XX XX X X -

-

!~" "

--"'*'

1

o 1 1 1 1 1 1 1 1

-1.8 -1.6 -1.4 -1.2 -1

Real Axis

-0.8 -0.6 -0.4 -0.2

Figure 2.5.2.3.1

43

Page 51: Graphical visualization of control system performance

4 RootLocus->Function->Select Gain

Click on a pole that corresponds to a gain of 7.

# Root Locus->Function->Plot 2-D Response

4 2-D->Output->Amplitude

4 2-D->Output->Performance Stats

All the design criteria have now been met, using a proportional gain of 9 and an integral

gain of 7. Let's see ifwe can improve the system performance by increasing the

proportional gain further.

2.5.2.4'Final'

P-I Controller Design Scenario

Repeat the process, this time using a proportional gain of 12. Vary the integral gain

from 1 to 12. After doing this, you will notice the stats can be improved with Prop equal

to 12 and K equal to 7.

Notice when the proportional gain (Prop) equals 7 or 12, the performance criteria are met

if the integral gain (K, ) equals 7. Let's see if there exists some'optimal'

value for the

proportional gain between 7 and 12 with K fixed at 7.

4 Type"73"

to start program, and choose"PIone.m"

4 This time give the proportional gain the label "K", and the integral gain some

other name (i.e. "Ki"). Enter a value of 7 in the integral gain block.

4 Vary the proportional gain from 9 to 12. You should find that the'optimal'

value

for the proportional gain is 10.5.

Now, we have optimal values for the proportional and integral gain, 10.5 and 7

respectively. Note that even though the poles for this system fall outside the desired root

44

Page 52: Graphical visualization of control system performance

locus region, the performance criteria are still met. This is possible because the system is

not second order. The values of the performace criteria for this system are:

Rise Time = 0.525 sec.

Percent Overshoot = 9.8 %

Settling Time= 2.775 sec.

Position Error = 0 (DC Gain = 1)

45

Page 53: Graphical visualization of control system performance

3 M-file Descriptions

In this section a description for each of the M-files is given. M-files are text files

which containMatlab commands (Hanselman, 1995). Matlab executes these text files

exactly as it would if you typed the commands at the Matlab prompt. The M-file

descriptions start with a short introduction to the M-file and why it was created. Next, a

complete breakdown ofhow the M-file works is given (flowcharts for each of the M-files

can be found in Appendix 'D'). Last, any limitations or short comings of the M-file are

discussed. The complete code for each of the M-files can be found in Appendix 'E'.

46

Page 54: Graphical visualization of control system performance

3.1 System Parameter Determination with M-file Jl.m

This M-file is used to create the 3-dimensional, time-domain, response plot over a gain

range specified by the user. These 3-D plots efficiently convey how the system response

characteristics change due to a variable gain block.

3.1.1 Model Definition

The first thing this M-file does is set the variableflag equal to 1 . This flag is used by

M-file J13.m, to identify which 3-D plot is currently active in the 3-D window. The heart of

M-file Jl.m is a loop that varies a gain parameter within a gain block ofa system previously

defined in Simulink (see the flow chart in Appendix 'D'). The gain block to be varied, is

specified in Simulink by placing the label'K'

under the block (see the figure below).

InportSum Gainl Sum1

s^+Ss+S

Plant

<K

1_s

Integrator

The loop iterates through all the gain values on the gain interval specified by the user. Each time

the computer goes through the loop, it places a new gain value in the variable gain block with the

command

set_param(fhame 1,

'Gain'

,'kl ')

47

Page 55: Graphical visualization of control system performance

wherefnamel is the name of the Simulink block diagram with the'.m'

extension replaced by a

'/K'. After the gain value has been entered, the Simulink block diagram is converted to state

space form with the command

[A,B,C,D]=

linmod(fhame)

where A, B, C, D, are the state-space matrices and fname is the name of the Simulink block

diagram with the'

extension truncated. The system is then converted from state-space form

to transfer function form with the command

[num,den]=

ss2tf(A,B,C,D)

where num is the numerator of the overall transfer function, and den is the denominator of the

overall transfer function.

3.1.2 Step/Impulse Response

Next, Jl.m determines whether a step or impulse input function has been specified by the

user. It then simulates the system response with the command

[y,x,t]=

step(num,den,t) or_/,x,t]

=

impulse(num,den,t)

where v is an output amplitude vector of the variable of interest, and t is the time interval vector

specified by the user. A 2-dimensional array of the amplitude data is created by adding the

amplitude vectors, at each gain value, as columns in the 2-dimensional array with the command

Yl = [Yl y(:)]

where Yl is the 2-D amplitude matrix. The number of rows of the matrix are determined by the

time interval vector (f), and the number of columns by the gain interval (k2). After the loop is

complete, a 2-D amplitude array has been created. This array is plotted 3-dimensionally with the

command

48

Page 56: Graphical visualization of control system performance

mesh(K2, T, Yl)

where K2 is the gain interval vector, T is the time interval vector, and Yl is the 2-D amplitude

array.

3.1.3 System Attribute Determination

Four other 2-D arrays are created within the same loop that creates the 2-D amplitude

array. They are: Poles array, Natural Frequency array, Damping Ratio array, and Steady State

array. Again, each column in the array holds system information at each gain value specified on

the interval. These arrays allow information about the system to be accessed at arbitrarily

selected gain values (more on this in later sections). The information to create each of the arrays

is determined in the following manor.

The Poles array holds the location of the poles of the system at each gain value on the

specified interval. The poles are determined using the command

[z, p, gain]=

tf2zp (num, den)

wherep is a vector of the poles of the closed loop transfer function.

The natural frequency and damping ratio of the system are determined with the command

[Wn, Z]=

damp (A)

where Wn is the natural frequency, Z is the damping ratio, and A is the A matrix of the system

expressed in state-space form. If the system is higher than second order, the natural frequency

and damping ratio are computed but not used.

3.1.5 Steady State Determination

The steady state of the system is determined using the final value theorem. This theorem

is only valid if the transient output is bounded (Chen, 1993). If the system is stable, the output

49

Page 57: Graphical visualization of control system performance

should be bounded. Therefore, by checking for stability, this should also check whether the

output is bounded. Stability is determined by checking if any of the system poles are located in

the right halfof the real-imaginary plane. If any are, the system is unstable, and thus there is no

steady state value for the system. However, if all the poles lie in the left halfof the real-imaginary

plane, the system is stable and the final value theorem can be applied. The final value theorem is

limf(t)=

limsF(s)t ->oo s-> 0

where f(t) is the system output as a function of time, and F (s) is the Laplace transform of the

output. The LaPlace transform of the output, F(s), is given by

F(s)=

G0(s)C(s)

where C (s) is the LaPlace transform of the input to the system, and G0 (s) is the overall transfer

function of the system. If the input to the system is a unit step, then the input LaPlace transform,

C (s), is equal to 1/s. Therefore, F (s) can be expressed as

F(s)=l/s*G0(s) => G0(s)=

s*F(s)

For a unit step, the final value theorem reduces to

limf(t)=

limG0(s)t -oo s -> 0

The closed loop transfer function, G0 (s), can be expressed as a rational polynomial of s with

decreasing exponential terms, say

35 + 7 num(s)GQ(s) =

s2

+ 4s + 3 den{s)

50

Page 58: Graphical visualization of control system performance

For this case, the limit ofG0(s), as s goes to zero, is 7/3. In general, as long as G0(s) is expressed

in the above form (i.e. standard polynomial form), the limit ofG0 (s) as s goes to zero can be

found by dividing the last term in the numerator of the transfer function by the last term in the

denominator of the transfer function. This is accomplished with the command

sstate=num(length (num)) / den (length(den))

where num(s) and den(s) are respectively the numerator and denominator of the overall transfer

function.

3. 1 .6 Use ofDerivitive Blocks

One of the limitations of the Visual program is that improper transfer functions can not be

used in the Simulink block diagrams. An improper transfer function is one in which the numerator

is a higher order polynomial of s then the denominator. A common reason for the use of improper

transfer functions is when using a derivitive block, Ds. This limitation is overcome in Simulink by

using an approximate derivitive block (Hanselman, 1995). An approximate derivitive block takes

the derivitive block, Ds, and multiplies it by a fast first order transfer function block,

1/(1 + 0.01s), where the time constant for this transfer function is 0.01 seconds. Thus the overall

approximate derivitive block is Ds/(1 + 0.01s). This transfer function block is now proper. The

fast first order transfer function has only a minimal effect on the dynamic response of the

derivitive block.

3.1.7 Potential Derivitive Block Problems

The problem with using approximate derivitive blocks is that they produce unwanted poles

on the root locus plot. For example, setting the denominator of the approximate derivitive block

defined above to zero yields

1 + 0.01s = 0

51

Page 59: Graphical visualization of control system performance

s=

-100

Therefore, an extra pole having a value of -100 will appear on the root locus plot. This large

valued pole can cause the root locus plot to be rescaled such that the relevent portion of the plot

becomes unreadable. A possible solution to this problem might be to create a function that chops

poles off the root locus plot above a certain threshold. By allowing the user to set this threshold,

the undesirable poles could be eliminated, and the plot would be scaled appopriately. This

suggestion may be implemented in future generations of the Visual program.

52

Page 60: Graphical visualization of control system performance

3.2 System Pole Plotting with M-file J2.m

ThisM-file is used to plot the poles in the pole array (pi) created in M-file Jl.m.

This is not a continuous root locus plot, only the poles that correspond to gain values in the

specified interval are plotted. Although Matlab has a built in function to plot poles, called

Hocus, it could not be used because the arguements for this function are the numerator and

denominator of the open loop transfer function. A unity gain feedback loop is

automatically created to calculate the closed loop poles. However, this program interfaces

with block diagrams that were created in Simulink, which most likely have the feedback

loop and control components already incorporated into the diagram. The overall system

transfer function is determined by linearizing this complete block diagram. Thus, it would

not be possible to use the numerator and denominator of this transfer function as

arguments for the rlocus function.

Jl.m sets up the pole array (pi) so that the order of the system determines the

number of columns, and the number of gain values in the gain interval determines the

number of rows. The first thing thisM-file does is determine the dimensions of the poles

array (pi). This is done with the comands

numrows = size(pl,l)

numcols = size(pl,2)

where the 1 or 2 specifies whether the row size or column size of the matrix is desired.

Next, a loop is set up that iterates through each of the poles in the array pi . For each pole

in the array, the real and imaginary components of the pole are found with the functions

real_.pl = real (pl(a,b))

imag_.pl = imag (pl(a,b))

where a and b are loop indexes. Each of the poles are then plotted in the real-imaginary

plane with the plot command

53

Page 61: Graphical visualization of control system performance

plot (real_p 1, imag_p 1

,

'

x'

)

where the x specifies that each pole is to be plotted as an x. By using the Hold command,

successive poles can be plotted on the same figure.

54

Page 62: Graphical visualization of control system performance

3.3 Graphical User Interface using M-file J3.m

J3.m is the M-file that launches the Visual program. It can be executed by typing

J3 in the Command window, or by typing Visual in the Command window which creates

a cover page before executing J3. This M-file has three functions. First, it creates a

dialog box which allows the user to select a previously defined Simulink block diagram to

be analyzed. Second, it lets the user to specify the simulation time length and spacing,

the variable gain range and spacing, and the systems performance constraints for

overshoot and settling time. Third, it creates a graphical user interface (i.e. figure

windows, pull-down menus, pop-up menus).

3.3.1 Dialog with User

Matlab has a built in function which creates a dialog box, and stores the name of

the file the user selects. It has the form

[filename, pathname]= uigetfileCfilterspecVbox title')

Once a system has been selected the block diagram is displayed graphically. This allows

the user to check the diagram, and change any of the blocks that are desired before

continuing with the program. To do this, theM-file that was created in Simulink has to

be executed, which results in it being graphically displayed. A Simulink M-file is

executed the same as any otherM-file, by typing the file name in the Commandwindow

without the'.m'

extension. In order to execute aM-file within anotherM-file, the'eval'

command was used. Eval executes commands within aM-file as if they were typed in

the Command window. However, to use the Eval command the'.m'

extension had to be

truncated from the file name. This was accomplished with the commands

55

Page 63: Graphical visualization of control system performance

len = length(fhame)

fname(len-l:len) = []

These two commands take the last two characters of the file name, '.m', and put null

characters in their place.

3.3.2 System Parameter Definition

The time interval and gain interval vectors are created by inputting values for:

ending time (tfinal), time step (tine), initial gain (kinif), final gain (kfinat), and gain

increment (kspace). Values can be entered at the keyboard with the input command,

which has the form

x=

input('prompt')

where x is the variable being inputted. If the user presses return, which enters a null

character, then the parameter is assigned a default value. The default values provide a

good starting point if the user isn't sure what to enter for the parameter.

3.3.3 FigureWindow Creation

The last function of thisM-file is creating the figure windows and menus. Three

figure windows are created: '3-D', 'Root Locus', '2-D'. The figure command is used to

create the figure windows. This command allows figures to be named, sized, and

positioned on the screen. 3-D is the biggest because 3 -dimensional plots are easier to

interpret if they are large. Root Locus and 2-D are smaller because these plots contain

less details. The uimenu command is used to create menus within the figure windows. It

has the form

56

Page 64: Graphical visualization of control system performance

hsub = uimenu (h, 'PropertyName','

Property Value')

The name of the parent menu is 'h'. The submenu is displayed underneath the parent

menu. If'h'

is a handle to a figure window, the menu is displayed along the top of the

figure window. Because each figure window has its own handle, separate menus can be

created for each of the figure windows.

3.3.4 Menu Callback Feature

In order for a menu to execute a specific function, the'Callback'

property is used.

Callback executes the single command that follows it. If the command is the name ofa

M-file, then the M-file is executed. This allowsM-files to be executed using pull-down

menus. For instance the command

uimenu (f, 'Label', 'Amplitude', 'Callback', 'Jl')

will execute the M-file Jl.m, when the menu called'Amplitude'

is selected. The pop-up

menus are used to select between using a step or impulse input and to chose between

using units of rad/sec or Hz for the Bode plots.This type ofmenu is useful when there is

amutually exclusive list of options to chosefrom for a particular parameter. They are

created using the uicontrolfunction. It has the form

h = uicontrol ('Style','pop-up','String','Step | Impulse')

In this case a pop-up menu is created withoptions of step or impulse.

57

Page 65: Graphical visualization of control system performance

3.4 Bode Amplitude and Phase Determination using M-files J4.m & J5.m

These M-files are used to create the 3-D Bode (Amplitude Ratio) and 3-D Bode

(Phase) plot over a gain range specified by the user. These 3-D plots efficiently convey

how a systems response characteristics change due to a variable gain block.

3.4.1 System'Bode'

Definition

The M-files begin by setting the variableflag equal to 2 to letM-file J13.m know

which 3-D plot is currently active in the 3-D window. These M-files are set up similar to

Jl.m, see the flow chart in Appendix 'D'. It has amain loop that varies a gain parameter,

within a gain block of a system previously defined in Simulink. The gain block to be

varied, is specified in Simulink by placing the label'K'

under the block. The loop iterates

through all the gain values in the gain interval specified by the user. Each pass it makes

through the loop, it places a different gain value in the variable gain block (K) with the

command

set_param(fhame 1 ,'kl ')

where fhamel is the name of the SimulinkM-file with a'/K'

appended on the end. After

the new gain value is entered, the Simulink block diagram is converted to state-space

formwith the command

[A,B,C,D]= linmod(fiiame)

where A, B, C, D, are the state-space matrices for the system and fhame is the name of

the Simulink block diagram with the'.m'

extension truncated. The system is then

converted from state-space form to transfer function form with the command

58

Page 66: Graphical visualization of control system performance

[num,den]=

ss2tf(A,B,C,D)

where num is the numerator of the overall transfer function, and den is the denominator

of the overall transfer function.

3.4.2 System'Bode'

Simulation

The Bode plot data is simulated with the command

[mag,phase,wl] = bode(num,den,wl)

where mag is a vector containing the amplitude ratio data for the system, phase is a

vector containing the phase shift of the system in degrees, and wl is the previously

defined frequency range. Depending on whether the pop-up menu is set to rad/sec or Hz,

the frequency range is from 1 to 100 rad/sec or 0.16 to 15.9 Hz.

3.4.4 Plot Specifics

The only difference between the M-files J4.m and J5.m is that J4.m creates a

Bode (Amplitude Ratio) plot, thus it uses the mag vector, where as J5.m creates a Bode

phase plot, so it uses the phase vector. In the case of the amplitude ratio plot, the

amplitude ratio is converted to decibels before it is plotted. Similarly to Jl.m, a

2-dimensional array ofdata is created by appending the data vectors at each gain value in

the interval. This is done with the command

magdbl= [magdbl magdb(:)] or phasel

= [phasel phase(:)]

The size of the frequency vector determines the number of rows, and the size of the gain

vector determines the number of columns in the 2-D array. After the loop has been

completed, the 2-D array can be plotted 3-dimensionally with the command

59

Page 67: Graphical visualization of control system performance

mesh(K2,Wl,magdbl) or mesh(K2,Wl,Phasel)

where K2 is the gain interval defined by the user. The frequency axis, of the 3-D plot, is

changed to log scale with the command

set(gca, 'Yscale',Tog')

where gca is the axis currently active in the figure window.

60

Page 68: Graphical visualization of control system performance

3.5 User Pole Selection with M-file J7.m

This M-file allows the program user to select poles off the root locus plot using a

mouse, see the flow chart in Appendix 'D'. This M-file should only be called after the root

locus has been plotted. By selecting poles, the user specifies an active gain value within the

gain interval, which corresponds to the selected pole. This allows the user to analyze the

system at a chosen gain value.

3.5.1 Pole Selection

The first thing the program does is allow the user to select a point off the root locus

plot with the mouse. This is done with the following function

[x,y] = ginput(l)

where x and y are the coordinates of the inputted point. Since, points are being selected off

the real-imaginary plane, x is the real coordinate, and y is the imaginary coordinate. Next, a

loop is set up that iterates through each of the poles in the pi array to determine which pole

is closest to the selected point. The distance from the pole to the input point is calculated

using the distance formula.

distance = ^J(x

+Cv->'1)2

where x and y are the coordinates of the inputted point and x, , y, are the coordinates of the

pole. The row, in the pi array, that the closest pole is in is stored in the variable rows.

3.5.2 Highlight

When the closest pole has been determined, the root locus is first replotted to erase

any green highlight from a previously selected pole. Next, all of the poles that correspond

to the gain value for the selected pole, are plotted in green. These poles are found by

plotting each pole in the row of array pi that the selected pole is in. This row is stored in

the variable rows. Last, the gain value that corresponds to the selected pole is output in the

bottom comer of the Root Locus figure window with the text command. The

61

Page 69: Graphical visualization of control system performance

corresponding gain value is also determined using the rows variable. The rows variable

serves as an index for picking the active gain value from the gain vector with the command

g 1 = k2 (rows)

where gl is the active gain value and k2 is the gain vector.

3.5.3 Limitations

A limitation of thisM-file is the use of the distance formula to determine the

nearest pole. The distance formula assumes that each of the axes have the same scaling.

However, for the root locus plot, the real and imaginary axes in the s-plane will likely have

different scales. Therefore, the distance in one of the coordinate directions will be weighted

heavier than the other. Despite this limitation, in general the pole that is closest to where

the user clicks is the one that gets selected.

62

Page 70: Graphical visualization of control system performance

3.6 Two-Dimensional System Time Domain Response with M-file J8.m

This M-file is used to create a 2-dimensional plot of the amplitude response using

the gain value that was selected off the root locus plot. By looking at the response

2-dimensionally, the user can better evaluate and interpret the characteristics of the

response.

The program begins by setting the variableflag2 equal to one. The variableflag2

indicates to a subsequent M-file Jl4.m which response plot is currently active in the

2-D window. Next, the program selects a vector of amplitude data from the

2-D amplitude array. It does this by selecting a column of data from this array. The

variable rows serves as an index which specifies the column of data to select. This

variable is defined in the function used to select poles (gains) off the rootTocus plot (see

jl.m). The data vector is extracted with the command

Ycurr = Yl(:,rows)

where Ycurr is the vector of amplitude data and Yl is the 2-D amplitude data array. In a

similar fashion, the current natural frequency, damping ratio, and steady state are selected

from their respective 2-D arrays. This is accomplished with the commands

Wncurr =Wnl (l,rows)

Zcurr = Zl (l,rows)

sscurr= sstatel (:,rows)

where Wncurr, Zcurr, and sscurr are the current natural frequency, damping ratio, and

steady state respectively. These values are used by the M-file that computes the

63

Page 71: Graphical visualization of control system performance

performance statistics (J14.m). Last, the program plots the vector of amplitude data

versus the time vector with the command

plot (t, Ycurr, 'g')

where'g'

denotes using a green line for the plot.

64

Page 72: Graphical visualization of control system performance

3.7 Two-Dimensional System Bode Response with M-files J9.m & JlO.m

These M-files are used to create the 2-dimensional plots of the Bode (Amplitude

Ratio) and Bode (Phase) response using the gain value that was selected off the root

locus. These M-files are very similar, thus they are discussed together.

3.7.1 Data Selection

The programs begin by setting the variableflag2 equal to two, see the flow chart

in Appendix 'D'. The variableflag2 indicates to a subsequentM-file (J14.m) which

response plot is currently active in the 2-D window. Next, the program selects a vector

ofBode (AR/Phase) data from the 2-D Bode (AR/Phase) array. It does this by selecting a

column of data from the appropriate 2-D array, magdbl or phasel . The variable rows

serves as an index which specifies the column of data to select. This variable is defined in

the function used to select poles (gains) off the root locus plot (J7.m). The data vector is

then extracted with the command

Ampcurr = magdbl (:,rows) or

Phcurr = phasel (:,rows)

whereAmpcurr and Phcurr are the vectors ofBode (AR) and Bode (Phase) data

respectively.

3.7.2 Performance Specification Selection

In a similar fashion, the current natural frequency, damping ratio, and steady state

values are selected from their respective 2-D arrays. This is accomplished with the

commands

Wncurr =Wnl (l,rows)

65

Page 73: Graphical visualization of control system performance

Zcurr = Zl (l,rows)

sscurr=sstatel (:,rows)

where Wncurr, Zcurr, and sscurr are the current natural frequency, damping ratio, and

steady state respectively. These values are used by the M-file that computes the

performance statistics (J14.m), if the overall order of the system is less than second order.

Last, the program plots the vector ofBode data versus the frequency vector, with the

frequency vector plotted using a log scale. This is done with the command

semilogx (wl , Ampcurr, 'g') or

semilogx (wl, Phcurr, 'g')

where'g'

denotes using a green line for the plot.

66

Page 74: Graphical visualization of control system performance

3.8 Two-Dimensional Response Superposition on Surface Plots with M-file J13

This M-file is used to create a green highlight on the 3-D response plots of the

response surface that corresponds to the gain that was selected in the root locus window.

Whichever 3-D response surface is active in the window (Amplitude, Bode (AR), Bode

(Phase)) is the surface used to highlight the response. This allows the user to easily see

where within the 3-D surface response plot the selected response is located.

3.8.1 Plot Detection

The M-file begins by making the 3-D figure window active, see the flow chart in

Appendix 'D'. Next, it determines which 3-D response plot (Amplitude, Bode (AR),

Bode (Phase)) is currently active within the 3-D figure window. It determines this by

looking at the global variableflag. If flag equals one, the Amplitude response is active; if

flag equals two, the Bode (AR) plot is active; if flag equals three, the Bode (Phase) plot is

active. Depending on the value of flag, the program branches to the appropriate part of

the program (see the flowchart in Appendix 'D'). Regardless ofwhich branch it takes it

executes a similar set ofcommands.

3.8.2 Plot Highlighting

First, the M-file changes the active colormap in the 3-D window to have

variations ofpink shades. This is done with the command

colormap(pink)

The active 3-D response plot is then replotted using this pink colormap. This helps the

green highlighted response to stand out. Next, a vector (column) of response data, is

extracted from the appropriate 2-D data array with the command

67

Page 75: Graphical visualization of control system performance

Ycurr = Y(:,rows) or

Ampcurr =magdbl (:,rows) or

Phcurr = Phasel (:,rows)

This vector of data is to be plotted coincident with the active 3-D surface plot. To do

this a constant vector containing the selected gain is needed. This vector must be the

same length as the response data vector and the time vector or frequency vector. It is

created with the following commands

for cc = 1 :length(t)

ir=[irgl]

end

where rr is the constant gain vector. The constant gain vector, the time vector and the

response vector are plotted in 3-D with the command

plot3(rr,t,Ycurr,'

*g') or

plot3(rr,wl,Ampcurr,'

*g') or

plot3(rr,wl,Phcurr,'

*g')

where'*g'

denotes using green stars to plot the data points. The use of the hold

command allows the vector to be plotted on the same graph as the 3-D surface response

plot.

68

Page 76: Graphical visualization of control system performance

3.9 System Output Response Parameters with M-file J14.m

This M-file is used to calculate and output statistics pertaining to the

2-dimensional response plots. These statistics can be used by the user to determine

whether the performance constraints for the system have been met.

3.9.1 Time or Frequency Domain?

The M-file was designed so that the statistics for a particular 2-D plot are

determined based on whether the response is in the time domain or frequency domain and

by the order of the system (see the flowchart in Appendix 'D'). The first branch of the

M-file determines whether a time-domain or frequency-domain plot is active in the 2-D

window. If a time domain response is active, the calculated statistics are: peak time, rise

time, settling time, percent overshoot, natural frequency, and damping ratio. If a

frequency domain Bode plot is active, the calculated statistics are: band width, peak

frequency, cut-off rate, maximum phase angle, natural frequency, and damping ratio.

3.9.2 Time Domain Performance Statistics

First, we will consider how the time domain statistics are calculated. The program

begins by determining whether the order of the system is greater than second order,

second order, or first order. This is done by checking the number of columns in the pole

matrix (pi). The number of columns corresponds to the order of the system. If the order

of the system is greater than second order, the statistics are computed numerically,

otherwise they are computed analytically. Theanalytical statistics are calculated using

6S

Page 77: Graphical visualization of control system performance

equations relating the time-domain statistics to the current natural frequency and damping

ratio of the system. These equations are derived in Appendix A'. The numerical

statistics are determined using short algorithms that calculate the statistics with the

numerical data used to create the time-domain response plot. The four time-domain

statistics that are computed numerically are: peak time, rise time, settling time, and

percentage overshoot.

3.9.2.1 Peak Time

The peak time algorithm starts by determining the maximum or peak amplitude

contained in the amplitude vector. This is done with the command;

Ypeak =max(max(Ycurr))

where Ypeak is the peak amplitude and Ycurr is the amplitude vector. Next, the location

within the amplitude vector that corresponds to this peak amplitude is determined by

using a loop that iterates through each of the values in the amplitude vector until one is

found that matches the peak amplitude. At this point the loop is broken and the location

is stored in the variable tl. This location variable is then used to find the time that

corresponds to this peak amplitude within the time vector. This is done with the

command

tpeak = t (tl)

where tpeak is the peak time and t is the time vector.

3.9.2.2 Overshoot

7C

Page 78: Graphical visualization of control system performance

The overshoot is computed using a very short algorithm. It divides the peak

amplitude, that was previously determined, by the current steady state amplitude. It

then subtracts one and multiplies the result by 100. The command to do this is

overshoot=

((Ypeak/sscurr) - 1)* 100

If the overshoot is less than zero, i.e. there is no overshoot, the overshoot is set equal to

zero.

3.9.2.3 Rise Time

The rise time algorithm works by finding the time it takes to get to 90 percent of

steady state minus the time it takes to get to 10 percent of steady state (Chen, 1993).

Both of these times are computed in a fashion similar to how the peak time is computed.

It iterates through each of the values in the amplitude vector until values are found that

are approximately equal to 10 percent and 90 percent steady state respectively. These

times are then subtracted to compute the rise time.

3.9.2.4 Settling Time

The settling time algorithm is the most complicated of the four. It begins by

setting the upper and lower limits that the response must settlebetween. These limits are

established to be within 2 percent of steady state with the commands

hlim = 1 .02 *sscurr

llim = 0.98*sscurr

where hlim is the high limit, llim is the low limit, and sscurr is the current steady state

value. The variable sflag is set equal to zero, which signalswhether the response has

71

Page 79: Graphical visualization of control system performance

fallen within the steady state region. Next, the program iterates through each of the

values in the amplitude vector until it finds one that falls within the steady state region.

If it finds one, and the variable sflag is equal to zero, it sets the time corresponding to this

amplitude value equal to the settling time and sets the variable sflag equal to one. This is

done with the commands

if (Ycurr (t4) < hlim) & (Ycurr (t4) > llim) & (sflag=

0)

tsettle = t (t4)

sflag= 1

end

where t is the time vector, and t4 is the loop index. It continues to iterate through the

values in the amplitude vector, checking to see if the amplitude has fallen out of the

steady state region. If it has it sets the variable sflagequal to zero and sets the settling

time equal to NaN (not a number). This is done with the commands

if (sflag =1) & (Ycurr (t4) > hlim) | (Ycurr (t4) < llim)

sflag= 0

tsettle = NaN

end

These two checks are performed for each value in the amplitude vector until it gets to the

end of the vector. At this point the settling time should be either set equal to a time value

or it should be undefined (NaN).

3.9.3 Frequency Domain Statistics

72

Page 80: Graphical visualization of control system performance

The frequency domain statistics are also determined based on the order of the

system. If the order is greater than two, the statistics are computed numerically,

otherwise they are computed analytically. The analytical statistics are determined using

equations relating the frequency-domain statistics to the current natural frequency and

damping ratio of the system. These equations are derived in Appendix 'A'. The

frequency domain numerical statistics are also found using short algorithms that calculate

the statistics from the numerical data used to create the Bode responses. The two

frequency-domain statistics that are computed numerically are: peak frequency and break

frequency.

3.9.3.1 Peak Frequency

The peak frequency algorithm starts by determining the maximum amplitude ratio

within the current amplitude ratio vector. This is done with the command

peakamp=

max(max(Ampcurr))

where peakamp is the maximum amplitude ratio and Ampcurr is the current amplitude

ratio vector. Next, the location within the amplitude ratio vector that corresponds to this

maximum amplitude ratio is determined by setting up a loop that iterates through each of

the values in the amplitude ratio vector until one is found that matches the maximum

amplitude ratio. At this point the loop is broken, and the location of the maximum

amplitude ratio is stored in the variable gg. The frequency that corresponds to this

maximum amplitude ratio is determined, using the location variable gg, with the command

11

Page 81: Graphical visualization of control system performance

peakfreq=wl (gg)

where peakfreq is the frequency corresponding to the maximum amplitude ratio, and wl is

the frequency vector.

3.9.3.3 Break Frequency

The break frequency algorithm is similar to the peak frequency algorithm, except it

hunts the amplitude ratio vector (Ampcurr) for an amplitude ratio less than -3 dB (i.e. the

'half-power'

point) (Franklin, 1994). When a value is found, its location is stored in the

variable gg. The frequency that corresponds to this amplitude ratio is then found, using

the variable gg, with the command

breakfreq=wl (gg)

where breakfreq is the break frequency or a frequency corresponding to an amplitude

ratio of -3 dB and wl is the frequency vector.

3.9.4 Limitations

One of the limitations ofM-file J14.m is that to numerically compute the settling

time, the response must be simulated past the point where it has settled out. If this is not

done the settling time will still be computed, it will just not be accurate. Another

limitation is that the second order analytically computed statistics are only valid if the

overall transfer function of the system has a constant numerator (i.e., no zeros). If the

numerator is not constant, the system has zeros, and the analytical statistics will be

approximate.

74

Page 82: Graphical visualization of control system performance

3.10 User Selection of Gain Values for Open Loop Systems with M-file J15.m

This M-file is used to pick a particular gain value, from the specified gain interval,

when dealing with an open loop system (see Figure below).

Inport

k1^> ^>

K

11

y

3^+3.53-2

Plant

The root locus for an open loop system, consists of one system of poles because the

variable gain block has no effect on pole placement. Therefore, it is not possible to select

gain values by clicking on poles, as is possible for a closed loop system. This function

allows gain values to be typed in at the command window as long as they are contained

within the specified interval. See the flow chart in appendix 'D'.

3.10.1 Operation

The first thing the program does is prompt the user to input a gain value. This is

done with the command

gaincurr= input ('Enter an open loop gain...')

where gaincurr stores the input gain value. The usermust first make the Command

window active to see the prompt. After a value has been entered, the M-file iterates

through each of the gain values in the gain interval until it finds one that matches the

inputted gain value. With each iteration the value of the variable count is increased by

one. This variable serves as an index so that the active gain value can be found within the

gain interval with the command

75

Page 83: Graphical visualization of control system performance

gl =k2(count)

where gl is the active gain and k2 is the user specified gain vector. The variable count

also specifies which vector (column) of data is to be active within the 2-D matrices used

in subsequent M-files.

3.10.2 Limitation

A limitation of M-file Jl5.m is if the user specifies a gain value that is not

contained in the gain vector, an error message will be returned.

76

Page 84: Graphical visualization of control system performance

3.11 System DC Gain Determination with M-file J16.m

This M-file is used to create a plot of the DC Gain (steady state) of the system

versus the chosen gain interval. This plot is particularly useful when dealing with a

system where proportional only control is used. By using this plot, the user can quickly

determine a cut-off gain that is needed to achieve a specified steady-state performance.

The M-file works simply by using the plot command to plot the gain vector (k2)

versus the DC Gain vector (sstatel) that was previously created in Jl.m. The command

has the form

plot( k2, sstatel)

This plot overwrites any other plot that is currently displayed in the Root Locus

window.

77

Page 85: Graphical visualization of control system performance

3.12 Root Locus Plot Design Limits with M-file J17.m

ThisM-file is used to create the limit lines for the desired pole region on the root

locus plot. The location for these lines are determined based on the constraints for

overshoot and settling time of the unit step response. These region lines are useful in

showing how performance constraints in the time domain can be graphically represented

as pole constraints in the s-plane (Chen, 1993). These lines can also be helpful in the

design process by providing a good starting point for the selection of poles off the root

locus plot. A flow chart for this program can be found in appendix 'D'.

The program is divided into two parts: 1) Plotting the desired region lines based

on the overshoot constraint; 2) Plotting the desired region lines based on the settling time

constraint. Part one and two are handled sequentially by this M-file.

3.12.1 Overshoot Constraints

The M-file Jl 7.m begins by determining the real axis limits for the lines based on

the location of the poles. This prevents the root locus plot from being rescaled when the

limit lines are added. This is accomplished with the commands

maxr=

max(max(real(pl)))

minr=

min(min(real(pl)))

where pi is the array that contains the pole locations. Next the M-file creates a vector of

real values, based on these limits, with the command

ggp= linspace(maxr, minr, 25)

where 25 is the number ofvalues in the vector. To determine the imaginary values for the

lines the relation C, = cos 0 is used, where is the user specified damping ratio for the

78

Page 86: Graphical visualization of control system performance

system. For a second order system, there is a direct relationship between the damping

ratio and the overshoot. Thus, if the overshoot specification is known the desired

damping ratio can be readily determined (see appendix.'A'

for a detailed explanation).

Theta (0) is defined in the figure below and can be determined by taking the inverse

cosine of.

Im s

Re 5

=COS0

5 -plane

Thus by knowing the limit for % we can determine the limit for 0 in the s-plane. The

slope for the desired overshoot region limit lines can be found by taking the tangent of0.

The imaginary values for this line are found by multiplying this slope by the values in the

real vector (ggp) with the command;

hhp=

tan(acos(desz))*

ggp

where hhp is the vector of imaginary values and desz is the user specified constraint for

the damping ratio. The real and imaginary vectors are then plotted with the command

plot( ggp,hhp,'r~')

79

Page 87: Graphical visualization of control system performance

wherer denotes a red, dashed line to be used for plotting.

3.12.2 Settling Time Constraints

The second part of the program creates the desired settling time region limit line.

First, a vector of imaginary values is created, based on the limits of the pole locations.

This is done with the command

kkp=

linspace(min(min(imag(pl))), max(max(imag(pl))), 25)

Again, this ensures that the root locus plot will not be rescaled when this line is plotted

on top of it. This line is always a vertical line, thus the real value is a constant. This

constant value is determined using the relation;

-(Real parts of the poles)>= 4.5/ Tsettle

where Tsettie is the user specified settling time for the system (Chen, 1993). Thus, the

boundary for this region is a vertical line at a real value of -4.5/Tse_e. See Appendix'A'

for a detailed explanation of these formulae. This constant, real-valued vector is

determined with the command

lip= linspace(-4.5/desset, -4.5/desset, 25)

where desset is the user specified desired settling time. As before, the real and imaginary

valued vectors are plotted with the command

plot(llp, kkp, 'r-')

where r~ denotes using a dashed, red line for plotting.

3.12.3 Limitations

One of the limitations ofM-file Jl 7.m is that the desired region limit lines that are

created are based on a second order approximation of the system. If the system being

80

Page 88: Graphical visualization of control system performance

analyzed is actually ofhigher order than the limit lines are only approximate limits.

However, they can still be used as a good starting point for the selection of poles.

Another limitation is that the accuracy of the overshoot lines are dependent on the

accuracy of the damping ratio C,. The user reads the damping ratio off a graph relating it

to the percent overshoot. If the user is not careful in reading the damping ratio off this

graph, the overshoot lines will be inaccurate.

81

Page 89: Graphical visualization of control system performance

Appendix A

Derivation of Second Order Performance Statistics

Consider a control system with transfer function,

G0(s)=-(a.

s2+2^con+(o2

where is the damping ratio and CO,, is the natural frequency. For a < 1, the unit step

response of G0(s) is,

y(t) = L-l co.

+2^cons +con2

s

COy(t)= 1

"e"3

sin(GV+0)<u

(eq. 1)

where cod= con(l-%2)2, <7=^co, and 0=cos

'=tan-1

J

The maximum or peak ofy(t) occurs at a solution of- = 0 . Setting to zerodt dt

yields,

cos(a>d>f+0) a ^(o(eq. 2)

By comparing equation 2 with the equation for 0, we conclude that the solutions for

equation 2 are,

codt= k7t k = 0,1,2,

The maximum stationary point occurs at k= 1 or,

82

Page 90: Graphical visualization of control system performance

peak

K K

Oid Oi

.VR

The substitution of tpeak into equation 1 yields,

Oi.y^-=y(tpeak)=l n-e-a'^sm(n + d)

Oi,

Oi

JVax=l+ * "otsin0

Oi,

because sin 0 = oVcfln

^n_x=l + -""'-t=l + exp = 1+ exp

-It

The overshoot, for a unit step input is,

overshoot.'max

=

exp-T|

L^

Thus, for a system with a quadratic transfer function and constant numerator, the

overshoot is a direct function of the damping ratio. As you can see from the figure below,

as the damping ratio increases the overshoot decreases.

100

0.2 0.4 0.6 0.8 1.0 1.2

Damping ratio

83

Page 91: Graphical visualization of control system performance

The settling time is a measure ofhow long it takes the response to get close to

steady state. Various measures of closeness could be used, however I chose to use within

two percent of steady state. The deviation of the output from the step input (1) is

essentially decided by the transient exponentiale~^'

. The settling time can thus be

defined as that time when the decaying exponential reaches two percent.

-**''

= 0.02

Therefore,

39

^ = 3.9 and ts =-

The rise time is a measure ofhow long it takes the response to get from ten

percent to ninety percent of steady state. This time is approximately equal to,

= L8_tnse~Oin

regardless of the value for the damping ratio (). However, it is important to remember

that the above relations are only valid for a second order system with no zeros.

84

Page 92: Graphical visualization of control system performance

Appendix B

Simulink Tutorial

This is a brief tutorial on creating block diagrams in Simulink. In this tutorial you will

learn how to create a velocity feedback control system block diagram that is used in the Visual

program tutorial. For example, a'typical'

block diagram is shown below in figure B.l

InportSum Gain̂̂

tanSum1

s*+6s+E

Transfer Fcr

K

Transfer Fc i1

1

Outport

Figure B.l

The steps for creating this block diagram are as follows:

1 . Double click on theMatlab icon.

2. Type Simulink at the Matlab prompt, then press return. The window shown in Figure B.2

will appear.

%3-

Sources Sinks Discrete Linear

^ __->

Nonlinear Connections Extras

Figure B.2

85

Page 93: Graphical visualization of control system performance

3. SelectNEW from the file menu. A new window named untitled appears. To generate the

block diagram above we will use items from the Simulink window. The items we need are

contained in the Connections and Linear icons.

4. Click in the Simulink window to make it the active window, then double click the

Connections icon. The following items appear in the Connections window (Figure B.3):

Connections

Library

Inport

11 I > Mux

Outport >

Mux

> Demux

Demux

Figure B.3

5. Click on the Inport icon and drag it into the untitled window.

6. Click on the Outport icon and drag it into the untitled window.

7. Click on the Simulink window to make it the active window, and double click on the linear

icon. The following items appear in the linear window (Figure B.4):

Sum

Integrator

onner

Product

) du/dt >

Derivative

Linear Library

Gain

> K >

Matrix

Gain

> 1.317 >

Slider

Gain

1

s+1

>(s-1)

s(s+1)>

Zero-Pole

5

x'

= Ax+Bu ,.

y = Cx+Du

Transfer Fen State-Space

Figure B.4

86

Page 94: Graphical visualization of control system performance

8. Click the Transfer Function icon and drag it into the untitledwindow. Repeat once.

9. Click on the Sum icon and drag it into the untitledwindow. Repeat once.

10. Click on the Gain icon and drag it into the untitled window. Repeat once.

1 1 . Click on one of the gain blocks in the untitled window. Under the options menu select Flip.

12. We now have all the elements we need. Next, we have to assemble them properly to create

the velocity feedback block diagram shown in Figure B.5. Note to connect the elements together

just click and holdihe mouse button on the > of one element (the pointer turns into a +), then

drag the mouse to the next > and release the button.

1

Outport

Figure B.5

13. Now we can assign the name K to one of the gain blocks. This tells the Visual program that

this is the gain block to be varied. Click on the name Gainl, this isthe velocity feedback gain

block. TypeK in its place.

14. Last, we need to change the numeratorand denominator of the transfer function blocks.

Double click on the TransferFen block in theuntitled window. This is the

'Plant'

transfer

function block. Change the numerator to [2], and change the denominator to [1 6 5]. Double

87

Page 95: Graphical visualization of control system performance

click on the TransferFcnl block . This is an integrator block. Leave the numerator as is, but

change the denominator to [1 0].

15. This completes the creation of the velocity feedback block diagram. The finished diagram

should resemble the one shown in Figure B.6.

InportSum Gain

^-T=HDSum1

s*+6s+

Transfer Fcr

<0K

Transfer Fc i1

1

Outport

Figure B.6

16. To save your work, select save from the File Menu while in the untitled window. Type a

name into the dialog box making sure to leave the'.m'

extension.

88

Page 96: Graphical visualization of control system performance

Appendix C

Theory Behind Matlab Step Algorithm

In this appendix an explanation is presented for how theMatlab step command

computes the step response of a system. This command is key to understanding how the

Visual program works.

Matlab computes the step response of

x'

=Ax+bu (la)

y= cx + du (lb)

by converting the continuous-time state-variable equation into a discrete-time equation.

The above state-space equations define the output of the system for all time. A discrete

time system representation defines the system only at discrete instants of time. Ifwe are

interested in the discrete output ofy(t) at t=kT, where T is the sampling period, then it is

possible to develop an equation simpler than equation 1 to describe the output y(kT).

The solution for equation la can be shown to be

t

x(t)=

eAtx(0)+eAt

J e-Atbu(x)dT0

This equation is derived in reference 1 . This equation holds for any t, in particular, t at

kT. Let x(k):= x(kT) and x(k+l):=x((k+l)T), then we have

kT

x(k)=eAkTx(0)+eAkT

Je~M

bu(x)dx

(k+l)T

x(k + l)= eA(k+,)Tx(0) +eA(k+1)Tje-ATbu(T)dx

89

Page 97: Graphical visualization of control system performance

We can rewrite this equations as

kT (k+l)T

x(k + l)=eAT[eAkTx(0)+eAkT

Je-ATbu(x)dT]+ JeA((k+1)T-Tbu(x)dT (2)kT

The term inside the brackets equals x(k). If the input u(t) is stepwise, which it will be if a

digital computer is generating it, then u(x) in the integrand of the last term of (2) equals

u(k) and can be moved outside the integration. Define a= (k+l)T - x. Then da = -dt

and (2) becomes

x(k + l)= eATx(k) + (jeAada)bu(k)

This and (lb) can be written as

x(k+l)= Axk + bu(k)

y(k)=cx(k)+du(k)

with

A =eAT

b = (jeATdt)b c = c d = d

0

This is called a discrete-time state-variable equation and it can be easily computed

recursively. It consists ofa set of first-order difference equations. In the case of a step

input u would be equal to 1 for all k.

There are many ways of computing eAT. One computational method is to use the

infinite series

(TA)2 (TA)n

eAT

= I + TA +

n!

90

Page 98: Graphical visualization of control system performance

As long as the sampling period, T, is small, this series will converge rapidly.

91

Page 99: Graphical visualization of control system performance

Appendix D

M-file Flowcharts

Page 100: Graphical visualization of control system performance

II

Initialize variables.

vectors and arravs

Enter Gain in

Simulink block

Convert block diagram

to state-space

Determine poles, natural frequencyand damping ratio of system

Add poles, natural frequency, and

damping ratio to respective arrays

Determine steady state

for step input

yes

*

steady state is

undefined

Add steady state to

steady state array

Add amplitude response vector

to amplitude response array

No

Is the last gaitf;

interva

Yes

Create 3-D mesh surface plot

w/ 2-D amplitude response array

Page 101: Graphical visualization of control system performance

,12.m

(JtarT)

Determine the number of columns

and rows of pole array

Determine real component

of pole

Determine imaginarycomponent of pole

Plot pole in real-

imaginary plane

Yes

Yes

End

Page 102: Graphical visualization of control system performance

J4.m & .T5.m

Initialize variables,

vectors & arrays

Enter Gain in

Simulink block

Convert block diagram

to state-space

Simulate frequencyresponse data

Add frequency response

vector to frequency response array

Yes

Create 3-D mesh surface plot

of frequency response w/

2-D frequency response array

Page 103: Graphical visualization of control system performance

,T7.m

Input coordinate in real-

imaginary plane with mouse

Compute distance from selected

point to pole in pole array

Is the

distance less than

that computed for the

previous pole,.

No

Set shortest distance

Equal to current distance

Set active row equal to

current row

No

Yes

No

Yes

Replot all

the poles

Plot the poles corresponding

to the active row (active gain)

Change active gain based

on current row

Output new gain

Page 104: Graphical visualization of control system performance

J8.m

Select vector (column) of amplitude

data from 2-D amplitude array

Select current natural frequency from

2-D natural frequency array

Select current damping ratio from

2-D damping ratio array

Select current steady state from

2-D steady state array

Plot the selected amplitude vector

versus the time vector

Output the current gain

Page 105: Graphical visualization of control system performance

.T9.m & .TlO.m

Select vector (column) ofA.R./Phase

data from 2-D A.R./Phase data array

y

Select current natural frequency from

2-D natural frequency arrav

V

Select current,damping ratio from

2-D damping ratio array

V

Select current steady state from 2-D

steady state array

> t

Plot the selected A.RVPhase vector

versus the frequency vector

> i

Output the current gain

Page 106: Graphical visualization of control system performance

J13.m

Amplitude

Make colormap pink

Replot 3-D Amplitude

response

Extract vector (column)

of data from 2-D

Amplitude array

JC

Create vector of

constant gain

Plot selected response

vector in green, overlayed

on3-D surface Amplitude

plot

Make colormap pink

Replot 3-D Bode (A.R.)

response

Extract vector (column)

of data from 2-D

Bode (A.R.) array

Create vector of

constant gain

Plot selected response

vector in green, overlayed

on 3-D surface Bode (A.R.)

plot

Bode (Phase)

Make colormap pink

\t

Replot Bode (Phase)

response

V

Extract vector (column)

of data from 2-D

Bode (Phase) array

\t

Create vector of

constant gain

v /

Plot selected response

vector in green, overelayed

on 3-D surface Bode (Phase)

plot

Page 107: Graphical visualization of control system performance

c/i

3

3

O.

3

o

Err

_=

2 S 2i= 3 tS

3

Q.

3 s

a.

3

o

u

s_j

CS

a

) *rf ca #C u u

1 ea

>l

a u c e

3.2

3CA

u3

CS

U3CA

ou

Page 108: Graphical visualization of control system performance

J15.m

Input a gain value

Current gain is

current gain + 1

TK

No

Yes

Determine active gain

based on current gain

Set active row for 3-D

plotting, based on current

gain

Page 109: Graphical visualization of control system performance

J17.m

Determine the real limits for

the overshoot lines, based on

the real part of the pole positions

Create a vector based on

these limits

Create a vector of imaginary values,

based on the damping ratio constraint

and the real vector

Plot the overshoot limit lines using

these real and imaginary vectors

Determine the imaginary limits for

the settling time line, based on the

imaginary part of pole positions

Create a vector based on

these limits

Create a vector of constant real

values, based on the constraint

for settling time

Plot the desired settling time

line using these real and

imaginary vectors

Page 110: Graphical visualization of control system performance

Appendix E

M-file Program Codes

Page 111: Graphical visualization of control system performance

7/5/96 10:27 AM jl.m E&ge 1

% This M-file is used to create the 3-D mesh plots of the Amplitude vs time

% response curves for both the step and impulse inputs

% Copyright 1996 Rochester Institute of Technology% Prograitrned by Jeffrey D. Marx; Advised by Dr. Mark H. Keitpski

hold off

colormap (hsv)

global flag;

flag=l;

Yl=[];

Whl = [] ;

Zl = [];

pl = [];

sstatel = [ ] ;

val = get(h,'Value'

) ;

t=[0:tinc:tfinal] ';

k2=[kinit:kspace:kfinal] ;

for kl-

kinit:kspace:kfinal

set_param(fnamel,'Gain'

,

'kl'

)

[A,B/C,D] = linmod(fname) ;

[num, den] = ss2tf (A,B,C,D) ;

[z,p,gain] = tf2zp (num, den) ;

pl = [pl p(:)];

[Wh, Z] = damp (A);

Vftll = [V__L Wh(:)];

Zl = [Zl Z(:)];

sstate = num (length (num) ) /den (length (den)

for rrm = 1: length (p)

if real (p (mn) ) > 0

sstate = 0;

and

axl

sstatel = [sstatel sstate ( : ) ] ;

if val = 1

[y,x, t] =step (num, den, t) ;

elseif val == 2

[y,x,t] = impulse (num,den, t) ;

end

Yl = [Yl y(:)];

end

Pl = pl';

Ylmax = max (max (Yl) ) ;

Ylmin = nun (min (Yl) ) ;

[K2 , T] = meshgrid (k2 , t ) ;

inesh(K2,T,Yl)

title ( 'Amplitude Plot with VariableGain'

) ,

xlabel('Gain') ,ylabel( 'time (sec) ') ,zlabel('Airplitude'

)

axis ( [kinit kfinal 0 tfinal YJmin Ylmax] )

axis ('

ij'

)

view(-50,27)

% set standard color map

% initialize matrix that will hold amplitudes

% initialize matrix that will hold natural frequenci

% initialize matrix that will hold damping ratios

% initialize matrix to hold the poles

% initialize matrix to hold DC Gain values

% determine whether step or impulse input is desired

% define the time vector

% define the gain vector

% for each value of gain, define the state

% space matrices

% determine the poles

% create matrix of poles

% find the natural frequency and damping

% of the system

% use final value theorem

% to determine DC Gain

% check for stability

% create array of DC Gain values

% create amplitude data with step or

% impulse function

% create a 2-D matrix of the amplitude data

% determine the limits for scaling the axes

% create the 3-D mesh plot

Page 112: Graphical visualization of control system performance

7/5/96 10:35 AMPage 1

% This M-file is used to create the root locus plot at the gain

% values specified

% Copyright 1996 Rochester Institute of Technology

% Prograimied by Jeffrey D. Marx; Advised by Dr. JMark H. Kempski

numrows = size(pl,l);

numcols = size(pl,2);

% determine dimensions of pole matrix

for a = l:numrows

for b = 1:numcols

real_pl = real(pl(a,b) ) ;

imacr pl = imag(pl(a,b) ) ;

plot (real_pl , imag pl ,'

x'

]

hold on

and

end

hold off

% plot all the poles as x's

xlabel ( 'Real Axis'

)

ylabel ('

Imaginary Axis'

title ('

Root Locus'

)

grid on

Page 113: Graphical visualization of control system performance

7/5/96 10:39 AM j3.m R^e 1

% This M-file is used to launch the program, create the figure windows, create

% the menus, and open a block diagram system to be analyzed

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Jferx; Advised by Dr. Mark H. Kempski

Yl=[]; % initialize amplitude matrix

gl = 0;

[fname,pname] = uigetfile(' *.m'

, 'Choose asystem'

) ; % use dialog box to input a

fnamel = fname; % block diagram

len = length ( fname ) ;

fname (len-l:len) = []; % truncate file name

fnamel (len-1: len) = '/K';

eval (fname) ; % make block diagram active

tfinal = input ( 'Enter the number of seconds to ccmpute response (default = 7 sec)'

) ;

if tfinal = []

tfinal = 7;

end

tine = input ('Enter'

the time spacing (default = 0.025 sec)... ');

if tine = []

tine = 0.025;

end

kinit = input ( 'Enter the initial value for the gain (default = 1) . . .

'

) ;

if kinit = []

kinit = 1;

end

kfinal = input ( 'Enter the final value for the gain (default = 6) . . .

'

) ;

if kfinal = []

kfinal = 6;

and

kspace = input ( 'Enter the spacing for the gain (default = 0.5) . . .

'

) ;

if kspace = []

kspace = 0.5;

and

desz = input ( 'Enter the desired damping ratio (default = 0.6) . . .

'

) ;

if desz = []

desz = 0.6;

erri

desset = input ( 'Enter the desired settling time (default = 3 sec) ...'

) ;

if desset = []

desset = 3;

axl

% create 2-D figure and menus

fig3 = figure('Name'

,

'2-D'

,

'NumberTitle'

, 'off'

,

'Position'

, [0 0 440 310] ) ;

d = uimenu(fig3,'Label'

,

'Output'

) ;

uimenu(d,'Label'

,

'Amplitude'

,

'Callback'

,

' j8'

) ;

uimenu(d, 'Label', 'Bode(Amp) ', 'Callback', 'jlO');

uimenu(d, 'Label', 'Bode(Phase) ', 'Callback', 'j9');

uimenu(d,'Label'

, 'PerformanceStats'

,

'Callback*

,

' jl4') ;

Page 114: Graphical visualization of control system performance

7/5/96 10:39 AM j3.m ^9e 2

% create root locus figure and menus

fig2 = figure('Name'

, 'RootLocus'

,

'NurrberTitle'

, 'off'

,

'Position'

, [0 150 410 310] ) ;

e = uimenu(fig2,'Label'

,

'Function'

) ;

uimenu (e,'Label'

, 'Plot Root Locus at Gainvalues'

,

'Callback'

,

'

j2'

)

uimenu(e,'Label'

, 'SelectPoint'

, 'Callback','

j7') ;

uimenu(e, 'Label', 'Gain vs DCGain'

,

'Callback'

,

'

jl6')

uimenu(e,'Label'

, 'Choose Open LoopGain'

,

'Callback'

,

' jl5'

)

uimenu(e, 'Label'

, 'Plot DesiredRegion'

,

'Callback'

,

'

jl7'

) ;

uimenu(e,'Label'

, 'Plot 2-DResponse'

,

'Callback'

,

'

jl3'

) ;

% create 3-D figure and menus

figl = figure('Name'

,

'3-D'

,

'NumberTitle'

, 'off'

,

'Position'

, [190 90 510 360] ) ;

f = uimenu(figl,'Label'

,

'Output'

) ;

uimenu(f ,'Label'

,

'Amplitude'

,

'Callback'

,

' jl'

) ;

uimenu (f, 'Label', 'Bode (Attp)'

,

'Callback'

, 'j4');

uimenu(f, 'Label', 'Bcde(Phase) ', 'Callback', 'j5');

g= uimenu (figl,

'Label'

,

'View'

) ;

uimenu(g, 'Label', '3-D', 'Callback', 'view(-50,27)'

) ;

uimenu (g, 'Label', '2-D 1', 'Callback', 'view(-90,0)'

) ;

uimenu(g, 'Label', '2-D 2', 'Callback', 'view(0,0) ');

h = uicontrol('Style

'

,

'popup'

,

'String'

, 'Step | Impulse');

j = uicontrol('Style

'

,

'popup'

,

'String'

, 'rad/s|Hz'

,

'Position'

, [20 0 60 20] ) ;

Page 115: Graphical visualization of control system performance

7/5/96 10:43 AM j4.m Page 1

% This M-file is used to create a 3-D Bode (Amp) plot

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

hold off

colorrrap (hsv)

magdbl = [ ] ;

vail = get ( j ,

'Value'

) ;

flag = 2;

wl = logspace(-l,2,100) ;

k2 = [kinit :kspace:kfinal ] ;

for kl = kinit:kspace:kfinal

set_param( fnamel,'Gain'

,

'kl'

) ;

[A,B,C,D] = linmod ( fname) ;

[num, den] = ss2tf (A,B,C,D) ;

[mag,phase,wl] = bode (num, den,wl) ;

magdb = 20*logl0 (mag) ;

magdbl = [magdbl magdb ( : ) ] ;

and

if vail = 2

wl = wl / (2*pi) ;

and

[K2, Wl] = meshgrid(k2,wl);

mesh (K2 ,Wl ,magdbl )

axis ('

ij'

)

if vail == 1

ylabel ('

freq (rad/sec)'

)

elseif vail == 2

ylabel ('freq(Hz) ')

and

xlabel('Gain')

zlabel ( 'AR (dB)'

)

set (gca,'

YScale'

,

'

log'

)

view(-50,27)

grid cn

% standard color map

% initialize matrix to hold Bode amplitude data

% determine whether to use rad/s or Hz

% define frequency vector

% define gain vector

% create 2-D Bode Amplitude matrix

% if necessary, convert to Hz

% create 3-D Bode(airp) plot

% change frequency axis to log scale

Page 116: Graphical visualization of control system performance

7/5/96 10:46 AM j5.m Page 1

% This M-file is used to create a 3-D Bode (phase) plot

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. lyjarx; Advised by Dr. Mark H. Kempski

hold off

colorrrBp (hsv)

phasel = [ ] ;

flag = 3;

vail = get ( j ,'Value'

) ;

wl = logspace(-l,2,100) ;

k2 = [kinit :kspace:kfinal ] ;

for kl = kinit:kspace:kfinal

set_param( fnamel,'Gain'

,

'kl'

) ;

[A,B,C,D] = linmod ( fname) ;

[num, den] = ss2tf (A,B,C,D) ;

[mag,phase,wl] = bode (num,den,wl) ;

phasel = [phasel phase ( : ) ] ;

and

if vail = 2

wl = wl / (2*pi) ;

and

[K2, Wl] = meshgrid(k2,wl);

mesh (K2 ,Wl , phasel )

axis ('

ij'

)

if vail = 1

ylabel ('

freq (rad/sec)'

)

elseif vail = 2

ylabel ('freq (Hz) ')

and

xlabel('Gain')

zlabel ('

Ehase (deg)'

)

set (gca,'

YScale'

,

'

log'

)

view(-50,27)

grid on

% initialize matrix to hold phase values

% create frequency vector

% create gain vector

% iteratively change gain parameter

% create 2-D Bode (phase) matrix

% convert frequency to Hz if necessary

% create 3-D Bode (phase) plot

% change frequency axis to log scale

Page 117: Graphical visualization of control system performance

7/5/96 10:50 AM j7.m Page 1

% This M-file is used to select poles off the root locus plot

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. iMark H. Kempski

tempdistance = 9999999; % Set a large temporary distance, such that it will

% always be bigger than the first computed distance

[x,y] = ginput(l);

for rowsl = l:numrows

for cols = 1:numcols

distance = sqrt (abs (x-real (pl (rowsl, cols) )) ~2 + abs (y-imag(pl (rowsl, cols) )) A2) ;

if distance < tempdistance

tempdistance = distance;

rows = rowsl;

and

and

end

hold on

for a = lmumrows

for b = 1:numcols

plot (real (pl (a,b) ) ,imag(pl(a,b) ) , 'xy')

and

and

for d = 1:numcols

plot (real (pl (rows, d) ) ,imag(pl(rows,d) ) ,

'xg'

)

and

% Erase the old value of the selected gain

text('Units', 'pixels', 'Position', [30,14], 'Color', [0,0,0],'String'

,num2str(gl) )

gl = k2 (rows) ;

text( 'Units', 'pixels', 'Position', [9,14], 'String', 'K = ')

text ( 'Units'

, 'pixels'

,

'

Position'

, [30 , 14] ,

'

String'

, num2str (gl) )

hold off

Page 118: Graphical visualization of control system performance

7/5/96 10:53 AM j8.m Page 1

% This M-file is used to create the 2-D amplitude response

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. j>__rk H. Kempski

global flag2;

flag2 = 1;

Ycurr = Yl ( : , rows) ;

Wncurr = Wnl(l,rows) ;

Zcurr = Zl(l,rows);

sscurr = sstatel ( : , rows) ;

plot(t,Ycurr, 'g')

grid on

xlabel ('

time (sec)'

)

ylabel ('

Anplitude'

)

title ( 'Amplitude Response')

% select the vector of amplitudes based on the gain

% select the natural frequency based on the gain

% select the damping ratio based on the gain

% select steady state based on gain

% create 2-D response plot

% print out the gain value

text( 'Units', 'pixels', 'Position", [71,36], 'String', 'K = ')

text('Units'

,

'pixels'

,

'Position'

, [94,36] .

'String'

,num2str(gl)

Page 119: Graphical visualization of control system performance

7/5/96 10:58 AM j9.m Page 1

% This M-file creates a 2-D Bode (Phase) plot based on the gain selected

% Copyright 1996 Rochester Institute of Technology

% Prograirmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

hold off

global flag2;

flag2 = 2;

Phcurr = phasel ( : , rows) ;

Wncurr = Wnl(l,rows) ;

Zcurr = Zl(l,rows);

sscurr = sstatel ( : , rows) ;

semilogx (wl , Phcurr,'

g'

)

grid on

if vail = 1

xlabel ('

frequency (rad/sec )

elseif vail == 2

xlabel ('

frequency (Hz)'

)

and

ylabel ('

Phase (deg)'

)

title ('

Bode Phase Response'

)

% create current phase vector based on the selected gain

% select current natural frequency

% select current damping ratio

% select current steady state

% create 2-D Bode (phase) plot

% Output value of gain

textCUnits'

, 'pixels', 'Position', [5,36] , 'String', 'K = ')

text( 'Units', 'pixels', 'Position', [25,36],'String'

,num2str(gl) )

Page 120: Graphical visualization of control system performance

7/5/96 10:31 AM jlO.m Page 1

% This M-file is used to create the 2-D amplitude Bode plot. Based on the value

% of the gain (K) selected off the root locus.

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. JVbrk H. Kempski

hold off

global flag2;

flag2 = 2;

Arrpcurr = magdbl ( : , rows) ;

Wncurr = Wnl(l,rows);

Zcurr = Zl(l,rows);

sscurr = sstatel ( : , rows) ;

sanilogx(wl, Ampcurr, 'g')

grid on

if vail = 1

xlabel ('

frequency (rad/sec)'

)

elseif vail = 2

xlabel ('

frequency (Hz)'

)

and

ylabel ( 'Amplitude Ratio (dB)'

)

title ('

Bode Amplitude Response'

)

% set the flag used in the statistics generating

% M-file

% determine the current amplitude

% determine the current natural frequency

% determine the current damping ratio

% determine current steady state

% create 2-D amplitude Bode plot

% output the current gain value

text( 'Units', 'pixels', 'Position', [5,36], 'String', 'K = ')

text('Units'

,

'pixels'

, 'Position', [25,36] ,

'String'

,num2str(gl) )

Page 121: Graphical visualization of control system performance

7/5/96 11:02 AM jl3.m Page 1

% This M-file is used to create a 2-D highlight of the gain selected on one of the

% 3-D plots (Amplitude, Bode (A.R. ), Bode (phase))

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

rr = [];

figure (figl)

if flag == 1

hold off

colormap (pink)

mesh(K2,T,Yl)

% initialize vector to hold constant gain values

% make 3-D figure active

% flag used to determine which 3-D figure is active

% if flag = 1, 3-D amplitude plot is active

% use pink colormap so green highlight can be seen easy

% re-create 3-D amplitude mesh

axis ( [kinit kfinal 0 tfinal Ylmin Ylmax] ) _

axis ('

ij'

)

view(-50,27)

grid on

title ( 'Amplitude Plot with VariableGain'

)

xlabel ('Gain'),ylabel ('time (sec)'), zlabel( 'Amplitude'

hold on

Ycurr = Yl ( : , rows) ;

for cc = l:length(t)

rr = [rr gl] ;

and

plot3 (rr, t,Ycurr,' *g'

)

elseif flag =2

hold off

colormap (pink)

mesh (K2 ,Wl ,magdbl )

axis ('

ij'

)

if vail == 1

ylabel ('

freq (rad/sec)'

)

elseif vail == 2

ylabel ('freq (Hz) ')

end

xlabel ( 'Gain'), zlabeK'AR (dB)

set(gca,'YScale'

,

'log'

)

view(-50,27)

grid on

hold on

Ampcurr = magdbl ( : , rows) ;

for cc = 1: length (wl)

rr = [rr gl] ;

and

plot3(rr,wl,Arrpcurr, '*g')

elseif flag ==3

hold off

colormap (pink)

mesh (K2 ,Wl ,phasel )

axis ('

ij'

)

% determine current vector of amplitudes

% create constant gain vector

% create 2-D highlight on 3-D plot

% if flag = 2, 3-D Bode (amp) plot is active

% if flag = 3, 3-D Bode (phase) plot is active

Page 122: Graphical visualization of control system performance

7/5/96 11:02AM jl3.m Page 2

if vail = 1

ylabel ('

freq (rad/sec)'

)

elseif vail == 2

ylabel ('

freq (Hz)'

)

end

xlabel ('Gain'

) , zlabel ('

Phase (deg)'

)

set(gca,'YScale'

,

'log'

)

view(-50,27)

grid on

hold on

Phcurr = phasel ( : , rows) ;

for cc = 1: length (wl)

rr = [rr gl] ;

and

plot3 (rr,wl, Phcurr,'

*g')

and

figure (fig3) % make 2-D figure active

Page 123: Graphical visualization of control system performance

7/5/96 11:05 AM jl4.m Rage 1

% This M-File is used to output statistics from the 2-D responses

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

hold off

div = [] ;

for jj-

1:100

div = [div 225] ;

and

kk = linspace(10,230,100);

% draw horizontal dividing line

plot (10,0, 'xk')

hold on

plot (10, 251, 'xk')

plot (kk, div, 'w')

axis off

if flag2

if numcols > 2

Ypeak = max (max (Ycurr) ) ;

for tl = l:length(t)

if Ycurr (tl) = Ypeak

break

end

end

tpeak = t(tl) ;

overshoot = ( (Ypeak/sscurr)- 1)*100;

if overshoot < 0

overshoot = 0;

end

for t2 = l:length(t)

if Ycurr (t2) > 0.9*sscurr

break

and

end

trise2 = t(t2);

% is 2-D Amplitude plot active?

% higher than second order ?

% determine peak time

% determine overshoot

% determine rise time

for t3 = l:length(t)

if Ycurr (t3) > 0.1*sscurr

break

end

end

trisel = t(t3);

trise = trise2 -

trisel;

Page 124: Graphical visualization of control system performance

7/5/96 11:05 AM jl4.m Page 2

sflag = 0;

hlim = 1.02*sscurr;

llim = 0.98*sscurr;

for t4 = 1: length (t) % Calculate settling time

if (Ycurr (t4) < hlim) & (Ycurr (t4) > llim) & (sflag == 0)

tsettle = t(t4);

sflag = 1;

and

if (sflag == 1) & (Ycurr(t4) > hlim) | (Ycurr(t4) < llim)

sflag = 0;

tsettle = NaN;

aid

end

if sscurr = 0 % if system is unstable, make stats infinite

trise = inf;

tpeak = inf;

overshoot = inf;

and

text('Units'

, 'pixels', 'Position', [85,200], 'String', 'NumericalApproximation'

)

text( 'Units', 'pixels', 'Position', [55,115], 'String', 'Peak Time')

text('Units'

,

'pixels'

,

'Position'

, [172,115] ,

'String'

,num2str( tpeak) )

text('Units'

,

'pixels'

,

'Position'

, [217,115] ,

'String'

,

'sec'

)

text('Units'

,

'pixels'

,

'Position'

, [55,95] ,

'String'

, 'PercentOvershoot'

)

chover = isnan (overshoot) ;

if chover = 1

text ('Units'

,

'pixels'

,

'Position'

, [172,95] ,

'String'

, 'Unable toCompute'

)

else

text('Units'

,

'pixels'

,

'Position'

, [172,95] ,

'String'

,num2str (overshoot) )

end

text( 'Units', 'pixels', 'Position', [55,155], 'String', 'DC Gain')

chdc = isnan (sscurr) ;

if sscurr = 0

chdc = 5;

erri

if chdc = 5

text('Units'

,

'pixels'

,

'Position'

, [172,155] ,

'String'

,

'unstable'

)

elseif chdc = 1

text('Units'

,

'pixels'

,

'Position'

, [172,155] ,

'String'

, 'Unable toCompute'

)

else

text('Units'

,

'pixels'

,

'Position'

, [172,155] ,

'String'

,num2str (sscurr) )

and

text('Units'

,

'pixels'

,

'Position'

, [55,135] ,

'String'

, 'RiseTime'

)

if trise = 0 & val = 1

text('Units'

,

'pixels'

,

'Position'

, [172,135] ,

'String'

, 'Unable toCompute'

)

Page 125: Graphical visualization of control system performance

7/5/96 11:05 AM jl4.m Page 4

% output first order amplitude statistics

text ('Units', 'pixels','Position'

, [85,200] ,

text('Units'

,

'pixels'

,

'Position'

, [55,160] ,

text ("Units', 'pixels', 'Position', [172,160]

text ('Units'

,

'pixels'

,

'Position'

, [55,140] ,

text('Units'

,

'pixels'

,

'Position'

, [172,140]

text('Units'

,

'pixels'

,

'Position'

, [215,140]

text ('Units', 'pixels', 'Position', [55,120],

text('Units'

,

'pixels'

,

'Position'

, [172,120]

text('Units'

,

'pixels'

,

'Position'

, [215,120]

text('Units'

,

'pixels'

,

'Position'

, [55,100] ,

if sscurr = 0

text ('Units'

,

'pixels'

,

'Position'

, [172,

else

text ('Units'

,

'pixels'

,

'Position'

, [172,

end

'String'

,'First Order

Approximation'

)

'String', 'Gain (K) ')

,

'

String'

,num2str (gl ) )

'String'

,'Break

Frequency'

)

,

'String'

,num2str (Wncurr) )

,

'

String'

,

'

rad/sec'

)'

String'

,

'

Time Constant'

)

,

'String'

,num2str(l/Wncurr) )

, 'String', 'sec')

'String', 'DC Gain')

100] ,

'String'

,

'unstable'

)

100] ,

'String'

,num2str(sscurr) )

and

and

if flag2 = 2

if numcols > 2

% is 2-D frequency response active

peakamp= max (max (Ampcurr) ) ;

for gg = 1: length (Arrpcurr)

if Ampcurr (gg) ==peakamp

break

and

and

peakfreq= wl (gg) ;

for gg= 1: length (Arrpcurr)

if Arrpcurr (gg) < -3

break

end

end

breakfreq = wl (gg) ;

% determine peak frequency

% determine break frequency

text(

text(

text(

text(

text(

text(

text(

text(

text(

'Units',

'Units',

'Units',

'Units',

'Units',

'Units',

Units',

'Units',

Units'

,

pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'

Position'

,

'Position

'

,

'

Position'

,

'

Position'

,

'

Position'

,

'Position'

,

'Position'

,

'

Position'

,

'Position'

,

[80,200],

[55,120],

[172,120]

[215,120]

[55,140],

[172,140]

[215,140]

[55,160],

[172,160]

'String'

, 'NumericalApproximation'

;'

String'

,

'

PeakFrequency'

)

,

'String'

,num2str (peakfreq) )

,

'String'

, 'rad/sec')'String'

, 'BandWidth'

)

,

'String'

,num2str (breakfreq) )

,

'

String'

,

'

rad/sec'

)

'String', 'Gain (K) ')

,

'String'

,num2str(gl) )

Page 126: Graphical visualization of control system performance

7/5/96 11:05 AM jl4.m Page 5

aid

if numcols == 2 % is sytem second order ?

breakfreq = Wncurr*((l - 2*ZcurrA2 + (2 - 4*ZcurrA2*(l - Zcurr^2) P0.5) A0.5) ;

if Zcurr < 0.707

peakfreq=Wncurr* ((1 -

2*Zcurr^2) A0.5) ;

else

peakfreq= 0;

and

% compute ststistics

% output second order frequency response statistics

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text ['Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text 'Units',

text ['Units',

text ['Units',

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

'pixels'

,

1

Position'

'

Position'

'

Position'

'

Position'

'Position'

'

Position'

'

Position'

'

Position'

'

Position'

'

Position'

1

Position'

'

Position'

'

Position'

'Position'

'Position'

'Position'

'Position'

[70,200],

[55,160],

[172,160]

[55,140],

[172,140]

[217,140]

[55,120],

[172,120]

[55,100],

[172,100]

[217,100][55,80],'

[172,80],

[217,80],

[55,60],'

[172,60],

[172,40],

String'

, 'Second OrderApproximation'

)

String', 'Gain (K) ')'

String'

, num2str (gl ) )String'

, 'NaturalFrequency'

)'

String'

, num2str (Wncurr) )'String'

, 'rad/sec')String'

, 'DampingRatio'

)'

String'

, num2str (Zcurr) )String'

, 'BandWidth'

)'

String'

, num2str (breakfreq) )'

String'

,

'

rad/sec'

)String'

, 'PeakFrequency'

)String'

,num2str (peakfreq) )

String'

,

'

rad/sec'

)String'

, 'Cut-OffRate'

)

String'

,

'- 40 dB/decade

'

)

String'

,

'

180 degrees'

)

end

if numcols == 1 % is system first order

% output first order frequency response statistics

text('Units'

,

'pixels'

,

'Position'

, [85,200] ,

'String'

, 'First OrderApproximation'

]

text(Units'

,

'pixels'

,

'Position'

, [55,160] ,

'String'

, 'Gain (K)'

)

text ('Units'

,

'pixels'

,

'Position'

, [172,160] ,

'String'

,num2str(gl) )

text ( 'Units'

, 'pixels'

,

' Position'

, [55, 140] ,

' String'

, 'BandWidth'

)

text('Units'

,

'pixels'

,

'Position'

, [172,140] ,

'String'

, num2str (Wncurr ) )

text('Units'

,

'pixels'

,

'Position'

, [210,140] ,

'String'

,

'rad/sec'

)

text('Units'

,

'pixels'

,

'Position'

, [55,120] ,

'String'

, 'Cut-OffRate'

)

text( 'Units', 'pixels', 'Position', [170,120], 'String','- 20 dB/decade')

text('Units'

,

'pixels'

,

'Position'

, [55,100] ,

'String'

, 'Max PhaseAngle'

)

text ( 'Units'

, 'pixels'

,

'

Position'

, [172 , 100] ,

'

String'

,

'

90 degrees'

)

end

and

Page 127: Graphical visualization of control system performance

7/5/96 11:09 AM jl5.m j^ L

% This M-file is used to select a gain value when dealing with an open loop system

% Copyright 1996 Rochester Institute of Technology% Programmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

count =1; % create index to store active gain

gaincurr = input ( 'Enter an open loop gain. . .

'

) ;for gainow = k2 % select index in gain vector based on

if gaincurr == gainow % inputted gain

break

end

count = count +1;

and

rows = count;

g}= ^ l-ci:ount) ; % pick desired gain from gain vector

figure (fig3) % M^g g^ ^,3 figure windows active

figure (figl)

figure (fig2)

Page 128: Graphical visualization of control system performance

7/5/96 11:12 AM jl6.m Page 1

% This M-file is used to create a plot of Gain vs DC Gain

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. Marx; Advised by Dr. Mark H. Kempski

hold off

plot (k2, sstatel) % plot gain vector vs. steady state vector

titleCGain vs DC Gain')

xlabel ('Gain')

ylabel ('DC Gain')

grid on

Page 129: Graphical visualization of control system performance

7/5/96 11:16 AM jl7.mPa^e 1

% This M-file is used to create the desired region lines on the root

% locus plot for overshoot and settling time.

% Copyright 1996 Rochester Institute of Technology

% Programmed by Jeffrey D. JViarx; Advised by Dr. Ifork H. Kempski

jraxr=iTax (max (real (pl) ) ) ; % create limits for the overshoot region

minr=min (min (real (pl) ) ) ; % lines

ggp=linspace(irBxr,munr,25) ;

if Onraxr-minr)=0

ggp=linspace (maxr+1 ,maxr-1 , 25 ) ;

and

jhhp=tan(acos(desz) )*ggp; % create y-coordinate for overshoot lines

hold on

plot (ggp, hhp, 'r ') % plot overshoot lines

plot (ggp, -hhp,'r

'

)

% create line for settling time region

kkp=linspace(jmin(min(imag(pl) ) ) ,max(max(imag(pl) ) ) ,25) ;

llp-linspace (-4 . 5/desset, -4 . 5/desset , 25) ;

plot (lip,kkp, 'r ') % plot the settling time lines

hold off

Page 130: Graphical visualization of control system performance

References

Boyd S. (1993)Xmath 's Interactive Control Design Module. ISIUsers'

Group

Conference, Santa Clara, CA

Chen C. (1993) Analog andDigital Control System Design: Transfer Function, State-

Space, andAlgebraic Methods. New York, Saunders College Publishing

Gallagher R.S., (1995) Computer Visualization. CRC Press

Hanselman D., Littlefield B. (1995) The Student Edition ofMatlab. New Jersey, Prentice-

Hall

Franklin G.F., Powell J.D., Emami-Naeini A. (1994) Feedback Control ofDynamic

Systems (third edition). Addison-Wesley Publishing Company

Van De Vegte J. (1990) Feedback Control Systems (second edition). New Jersey,

Prentice-Hall