Control Tutorials for MATLAB and Simulink (2024)

Key MATLAB commands used in this tutorial are: ss , ctrb , rank , lqr , step

Related Tutorial Links

  • State Space Intro
  • LQR Animation 1
  • LQR Animation 2

Related External Links

Contents

  • Controllability
  • Control design via pole placement
  • Linear quadratic regulation
  • Adding precompensation

In the Aircraft Pitch: System Modeling page. the state-space model of the plant was derived as

(1)Control Tutorials for MATLAB and Simulink (1)

(2)Control Tutorials for MATLAB and Simulink (2)

where the input is elevator deflection angle Control Tutorials for MATLAB and Simulink (3) and the output is the aircraft pitch angle Control Tutorials for MATLAB and Simulink (4). The above equations match the general, linear state-space form.

(3)Control Tutorials for MATLAB and Simulink (5)

(4)Control Tutorials for MATLAB and Simulink (6)

For a step reference of 0.2 radians, the design criteria are the following.

  • Overshoot less than 10%
  • Rise time less than 2 seconds
  • Settling time less than 10 seconds
  • Steady-state error less than 2%

In this page we will apply a state-space controller design technique. In particular, we will attempt to place the closed-loop poles of the system by designing a controller that calculates its control based on the states of the system.

Controllability

In order to apply our state-space controller design techniques we need to first verify an important property, controllability. The controllability property is necessary to guarantee that we have the authority to drive the state of the system anywhere we like. This corresponds to the ability to place the closed-loop poles of the system anywhere in the complex s-plane.

For the system to be completely state controllable, the controllability matrix

(5)Control Tutorials for MATLAB and Simulink (7)

must have rank Control Tutorials for MATLAB and Simulink (8). The rank of a matrix is the number of linearly independent rows (or columns). The number Control Tutorials for MATLAB and Simulink (9) corresponds to the number of state variables of the system. Adding additional terms to the controllability matrix with higher powers of the matrix Control Tutorials for MATLAB and Simulink (10) will not increase the rank of the controllability matrix since these additional terms will just be linear combinations of the earlier terms.

Since our controllability matrix is 3x3, the rank of the matrix must be 3. The MATLAB command rank can give you the rank of this matrix. Create a new m-file and enter the following commands. Running this m-file in the MATLAB command window, will produce the following output.

A = [-0.313 56.7 0; -0.0139 -0.426 0; 0 56.7 0];B = [0.232; 0.0203; 0];C = [0 0 1];D = [0];co = ctrb(A,B);Controllability = rank(co)
Controllability = 3

Therefore, our system is completely state controllable since the controllability matrix has rank 3.

Control design via pole placement

The schematic of a full-state feedback control system is shown below (with Control Tutorials for MATLAB and Simulink (11) = 0).

Control Tutorials for MATLAB and Simulink (12)

where

  • Control Tutorials for MATLAB and Simulink (13) = control gain matrix
  • Control Tutorials for MATLAB and Simulink (14) = Control Tutorials for MATLAB and Simulink (15) = state vector
  • Control Tutorials for MATLAB and Simulink (16) = reference (Control Tutorials for MATLAB and Simulink (17))
  • Control Tutorials for MATLAB and Simulink (18) = Control Tutorials for MATLAB and Simulink (19) = control input (Control Tutorials for MATLAB and Simulink (20))
  • Control Tutorials for MATLAB and Simulink (21) = output (Control Tutorials for MATLAB and Simulink (22))

Referring back to the state-space equations at the top of the page, we see that substituting the state-feedback law Control Tutorials for MATLAB and Simulink (23) for Control Tutorials for MATLAB and Simulink (24) leads to the following.

(6)Control Tutorials for MATLAB and Simulink (25)

(7)Control Tutorials for MATLAB and Simulink (26)

Based on the above, matrix Control Tutorials for MATLAB and Simulink (27) determines the closed-loop dynamics of our system. Specfically, the roots of the determinant of the matrix Control Tutorials for MATLAB and Simulink (28) are the closed-loop poles of the system. Since the determinant of Control Tutorials for MATLAB and Simulink (29) is a third-order polynomial, there are three poles we can place and since our system is completely state controllable, we can place the poles anywhere we like. Recall from the Introduction: State-Space Methods for Controller Design page that a "pole-placement" technique can be used to find the control gain matrix Control Tutorials for MATLAB and Simulink (30) to place the closed-loop poles in the desired locations. Note that this feedback law presumes that all of the state variables in the vector Control Tutorials for MATLAB and Simulink (31) are measured, even though Control Tutorials for MATLAB and Simulink (32) is our only output. If this is not the case, then an observer needs to be designed to estimate the other state variables.

We know from the above that we can place the closed-loop poles of the system anywhere we would like. The question then that is left is, where should we place them? If we have a standard first- or second-order system, we then have relationships that directly relate pole locations to characteristics of the step response and can use these relations to place the poles in order to meet our given requirements. This process becomes more difficult if we have a higher-order system or zeros. With a higher-order system, one approach is to place the higher-order poles 5-10 times farther to the left in the complex plane than the dominant poles, thereby leading them to have negligible contribution to the transient response. The effect of zeros is more difficult to address using a pole-placement approach to control. Another limitation of this pole-placement approach is that it doesn't explicitly take into account other factors like the amount of required control effort.

Linear quadratic regulation

We will use a technique called the Linear Quadratic Regulator (LQR) method to generate the "best" gain matrix Control Tutorials for MATLAB and Simulink (33), without explicitly choosing to place the closed-loop poles in particular locations. This type of control technique optimally balances the system error and the control effort based on a cost that the designer specifies that defines the relative importance of minimizing errors and minimimizing control effort. In the case of the regulator problem, it is assumed that the reference is zero. Therefore, in this case the magnitude of the error is equal to the magnitude of the state. Please consult your control textbook for details. To use this LQR method, we need to define two parameters: the state-cost weighted matrix (Control Tutorials for MATLAB and Simulink (34)) and the control weighted matrix (Control Tutorials for MATLAB and Simulink (35)). For simplicity, we will choose the control weighted matrix equal to 1 (Control Tutorials for MATLAB and Simulink (36) = 1), and the state-cost matrix (Control Tutorials for MATLAB and Simulink (37)) equal to Control Tutorials for MATLAB and Simulink (38). Employing the vector Control Tutorials for MATLAB and Simulink (39) from the output equation means that we will only consider those states in the output in defining our cost. In this case, Control Tutorials for MATLAB and Simulink (40) is the only state variable in the output. The weighting factor (Control Tutorials for MATLAB and Simulink (41)) will be varied in order to modify the step response. In this case, Control Tutorials for MATLAB and Simulink (42) is a scalar since we have a single input system.

Now we are ready to find the control matrix (Control Tutorials for MATLAB and Simulink (43)) employing the MATLAB command lqr. We will first let the weighting factor (Control Tutorials for MATLAB and Simulink (44)) equal 2. Add the following commands to your m-file and run it in the MATLAB command window.

p = 2;Q = p*C'*CR = 1;[K] = lqr(A,B,Q,R)
Q = 0 0 0 0 0 0 0 0 2K = -0.5034 52.8645 1.4142

Note the structure of the weighting matrix Control Tutorials for MATLAB and Simulink (45) and the resulting gain matrix Control Tutorials for MATLAB and Simulink (46). Referring to the closed-loop state equations given above assuming a control law with non-zero reference, Control Tutorials for MATLAB and Simulink (47), we can then generate the closed-loop step response by adding the following commands to your m-file and running it in the MATLAB command window. Note that the response is scaled to model the fact that the pitch angle reference is a 0.2 radian (11 degree) step. The step response shown below should then be generated.

sys_cl = ss(A-B*K, B, C, D);step(0.2*sys_cl)ylabel('pitch angle (rad)');title('Closed-Loop Step Response: LQR');

Control Tutorials for MATLAB and Simulink (48)

Examination of the above demonstrates that the response is too slow. We can tune the performance of our system to be faster by weighting the importance of the error more heavily than the importance of the control effort. More specifically, this can be done by increasing the weighting factor Control Tutorials for MATLAB and Simulink (49). After some trial and error, we settle on a value of Control Tutorials for MATLAB and Simulink (50) = 50. Modify the code of your m-file as follows and then run at the command line to produce the following step response.

p = 50;Q = p*C'*C;R = 1;[K] = lqr(A,B,Q,R)sys_cl = ss(A-B*K, B, C, D);step(0.2*sys_cl)ylabel('pitch angle (rad)');title('Closed-Loop Step Response: LQR');
K = -0.6435 169.6950 7.0711

Control Tutorials for MATLAB and Simulink (51)

Examination of the above demonstrates that the rise time, overshoot, and settling time are satisfactory. However, there is a large steady-state error. One way to correct this is by introducing a precompensator (Control Tutorials for MATLAB and Simulink (52)) to scale the overall output.

Adding precompensation

Unlike other design methods, the full-state feedback system does not compare the output to the reference; instead, it compares all states multiplied by the control matrix (Control Tutorials for MATLAB and Simulink (53)) to the reference (see the schematic shown above). Thus, we should not expect the output to equal the commanded reference. To obtain the desired output, we can scale the reference input so that the output does equal the reference in steady state. This can be done by introducing a precompensator scaling factor called Control Tutorials for MATLAB and Simulink (54). The basic schematic of our state-feedback system with scaling factor (Control Tutorials for MATLAB and Simulink (55)) is shown below.

Control Tutorials for MATLAB and Simulink (56)

We can easily find Control Tutorials for MATLAB and Simulink (57) from the MATLAB function rscale.m. Since rscale.m is a user-defined function, you need to copy and save the function to your directory. For further assistance in using user-defined functions, refer to the function page. After you have saved the rscale.m file to your directory, modify the code of your m-file as follows and run it in the MATLAB command window.

p = 50;Q = p*C'*C;R = 1;[K] = lqr(A,B,Q,R);Nbar = rscale(A,B,C,D,K)
Nbar = 7.0711

Adding the following code and rerunning your m-file will then generate the response shown below.

sys_cl = ss(A-B*K,B*Nbar,C,D);step(0.2*sys_cl)ylabel('pitch angle (rad)');title('Closed-Loop Step Response: LQR with Precompensation');

Control Tutorials for MATLAB and Simulink (58)

Now the steady-state error has been eliminated and all design requirements are satisfied.

Note that the precompensator Control Tutorials for MATLAB and Simulink (59) employed above is calculated based on the model of the plant and further that the precompensator is located outside of the feedback loop. Therefore, if there are errors in the model (or unknown disturbances) the precompensator will not correct for them and there will be steady-state error. You may recall that the addition of integral control may also be used to eliminate steady-state error, even in the presence of model uncertainty and step disturbances. For an example of how to implement integral control in the state space setting, see the DC Motor Position: State-Space Methods for Controller Design page. The tradeoff with using integral control is that the error must first develop before it can be corrected for, therefore, the system may be slow to respond. The precompensator on the other hand is able to anticipitate the steady-state offset using knowledge of the plant model. A useful technique is to combine the precompensator with integral control to leverage the advantages of each approach.


Published with MATLAB® 9.2

Control Tutorials for MATLAB and Simulink (2024)

FAQs

How to use MATLAB with Simulink? ›

Create a Simulink Model
  1. In the MATLAB® Home tab, click the Simulink button.
  2. Click Blank Model, and then Create Model. ...
  3. On the Simulation tab, click Library Browser.
  4. In the Library Browser: ...
  5. Make the following block-to-block connections: ...
  6. Double-click the Transfer Fcn block. ...
  7. Double-click the Signal Generator block.

How is MATLAB used in control systems? ›

Control system engineers use MATLAB and Simulink at all stages of development – from plant modeling to designing and tuning control algorithms and supervisory logic, all the way to deployment with automatic code generation and system verification, validation, and test.

What is the control model in Simulink? ›

Simulink Control Design™ lets you design and analyze control systems modeled in Simulink®. You can automatically tune arbitrary SISO and MIMO control architectures, including PID controllers.

What is the best way to learn MATLAB? ›

Get Started with Introductory Videos

See common applications and workflows, and discover new product capabilities. Get started with MATLAB by walking through an example. This video shows you the basics, and it gives you an idea of what working in MATLAB is like.

Is MATLAB Simulink hard to learn? ›

Is MATLAB Hard to Learn? MATLAB is designed for the way you think and the work you do, so learning is accessible whether you are a novice or an expert. The Help Center is always available to guide you with robust documentation, community answers, and how-to videos.

What is the difference between MATLAB and Simulink? ›

Simulink is a graphical programming environment that allows you to create and simulate dynamic systems using blocks and connections. MATLAB is a numerical computing language that enables you to perform calculations, data analysis, and scripting.

What is MATLAB control system toolbox? ›

Control System Toolbox™ provides algorithms and apps for systematically analyzing, designing, and tuning linear control systems. You can specify your system as a transfer function, state-space, zero-pole-gain, or frequency-response model.

What is MATLAB most useful for? ›

MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation. Typical uses include: Math and computation.

Why is MATLAB so widely used? ›

The software was popularized largely thanks to toolboxes created by experts in various fields for performing specialized mathematical tasks. Many of the toolboxes were developed as a result of Stanford students that used MATLAB in academia, then brought the software with them to the private sector.

How to make a controller in Simulink? ›

This is accomplished by first clicking on the Add Blocks button, and then selecting the PID Controller block from the resulting window as shown below. Next click the OK button. Note that controllers represented by other types of blocks (Transfer Function, State Space, etc.)

How to understand Simulink model? ›

In Simulink, systems are drawn on screen as block diagrams. Many elements of block diagrams are available, such as transfer functions, summing junctions, etc., as well as virtual input and output devices such as function generators and oscilloscopes.

How to design a controller in MATLAB? ›

To design a controller, first select the controller sample time and horizons, and specify any required constraints. For more information, see Choose Sample Time and Horizons and Specify Constraints. You can then adjust the controller weights to achieve your desired performance. See Tune Weights for more information.

Which is harder MATLAB or Python? ›

Learning curve: Python is significantly simpler than Matlab and doesn't require as much background knowledge. Matlab is structured in a very logical and comprehensible way but is aimed at users with a deep knowledge of math.

What coding language is MATLAB most like? ›

Language Comparison

The language of Python and MATLAB can be used interactively (a single command at a time) or to develop large-scale applications.

How many days will it take to learn MATLAB? ›

If you're a novice programmer, you can expect it to take a little longer than if you were a more seasoned programmer. Someone who can afford to devote all their time to MATLAB can finish learning the language in two weeks. If you have a lot of other responsibilities, however, it will take you longer to complete.

How do you integrate MATLAB code into Simulink? ›

You can integrate your MATLAB code into Simulink using the MATLAB Function block and MATLAB System block. Use MATLAB Function block to integrate simple functions. Use the MATLAB System block to integrate code that requires state dynamics, large streaming data interface, and interaction with the Simulink engine.

How to run Simulink simulation from MATLAB? ›

When you want to simulate the model using the current values for all model configuration parameter values, block parameter values, variable values, and so on, use the most basic syntax, specifying only the name of the model as an input argument. out = sim("ModelName"); This syntax returns a single Simulink.

Can I add Simulink to MATLAB? ›

Download and install MATLAB, Simulink, and accompanying toolboxes and blocksets on a personal computer. Add toolboxes, products, apps, support packages, and other add-ons to an existing installation of MATLAB. Add products, update your current MATLAB installation, and update your license.

References

Top Articles
Wir über uns Bike Store Haßfurt | Bamberg | Ebern | Baunach
August's rare Super Blue Moon, the biggest full moon of 2023, rises tonight
Ohio Houses With Land for Sale - 1,591 Properties
Custom Screensaver On The Non-touch Kindle 4
Hannaford Weekly Flyer Manchester Nh
Trabestis En Beaumont
Braums Pay Per Hour
Heska Ulite
Jet Ski Rental Conneaut Lake Pa
Culvers Tartar Sauce
Dumb Money
Discover Westchester's Top Towns — And What Makes Them So Unique
Animal Eye Clinic Huntersville Nc
Raleigh Craigs List
iLuv Aud Click: Tragbarer Wi-Fi-Lautsprecher für Amazons Alexa - Portable Echo Alternative
Jenn Pellegrino Photos
Skyward Login Jennings County
Cambridge Assessor Database
[Cheryll Glotfelty, Harold Fromm] The Ecocriticism(z-lib.org)
CVS Near Me | Columbus, NE
Decosmo Industrial Auctions
Atdhe Net
Craigslist Houses For Rent In Milan Tennessee
Craigslist Alo
Hannaford Weekly Flyer Manchester Nh
Sound Of Freedom Showtimes Near Movie Tavern Brookfield Square
Local Collector Buying Old Motorcycles Z1 KZ900 KZ 900 KZ1000 Kawasaki - wanted - by dealer - sale - craigslist
Unable to receive sms verification codes
Cars & Trucks - By Owner near Kissimmee, FL - craigslist
Utexas Baseball Schedule 2023
15 Downer Way, Crosswicks, NJ 08515 - MLS NJBL2072416 - Coldwell Banker
Fox And Friends Mega Morning Deals July 2022
Teenbeautyfitness
Shaman's Path Puzzle
Joplin Pets Craigslist
The Best Carry-On Suitcases 2024, Tested and Reviewed by Travel Editors | SmarterTravel
Craigslist Red Wing Mn
Ny Post Front Page Cover Today
How to Destroy Rule 34
October 31St Weather
Reborn Rich Ep 12 Eng Sub
Check From Po Box 1111 Charlotte Nc 28201
Sam's Club Gas Prices Deptford Nj
Cl Bellingham
Alston – Travel guide at Wikivoyage
Gon Deer Forum
Craigslist Houses For Rent Little River Sc
Hampton In And Suites Near Me
The Sports Academy - 101 Glenwest Drive, Glen Carbon, Illinois 62034 - Guide
O'reilly's Eastman Georgia
San Pedro Sula To Miami Google Flights
Guidance | GreenStar™ 3 2630 Display
Latest Posts
Article information

Author: Annamae Dooley

Last Updated:

Views: 5740

Rating: 4.4 / 5 (65 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Annamae Dooley

Birthday: 2001-07-26

Address: 9687 Tambra Meadow, Bradleyhaven, TN 53219

Phone: +9316045904039

Job: Future Coordinator

Hobby: Archery, Couponing, Poi, Kite flying, Knitting, Rappelling, Baseball

Introduction: My name is Annamae Dooley, I am a witty, quaint, lovely, clever, rich, sparkling, powerful person who loves writing and wants to share my knowledge and understanding with you.