Pole placement design
K = place(A,B,p) [K,prec,message] = place(A,B,p)
Description
Given the single- or multi-input system
? x = A x + B u
and a vector p of desired self-conjugate closed-loop pole locations, place computes a gain matrix K such that the state feedback u = – Kx places the closed-loop poles at the locations p . In other words, the eigenvalues of A – BK match the entries of p (up to the ordering).
K = place(A,B,p) places the desired closed-loop poles p by computing a state-feedback gain matrix K . All the inputs of the plant are assumed to be control inputs. The length of p must match the row size of A . place works for multi-input systems and is based on the algorithm from [1]. This algorithm uses the extra degrees of freedom to find a solution that minimizes the sensitivity of the closed-loop poles to perturbations in A or B .
[K,prec,message] = place(A,B,p) returns prec , an estimate of how closely the eigenvalues of A – BK match the specified locations p ( prec measures the number of accurate decimal digits in the actual closed-loop poles). If some nonzero closed-loop pole is more than 10% off from the desired location, message contains a warning message.
You can also use place for estimator gain selection by transposing the A matrix and substituting C' for B .
Pole Placement Design
Consider a state-space system (a,b,c,d) with two inputs, three outputs, and three states. You can compute the feedback gain matrix needed to place the closed-loop poles at p = [-1 -1.23 -5.0] by
place uses the algorithm of [1] which, for multi-input systems, optimizes the choice of eigenvectors for a robust solution.
In high-order problems, some choices of pole locations result in very large gains. The sensitivity problems attached with large gains suggest caution in the use of pole placement techniques. See [2] for results from numerical testing.
Matlabsolutions.com provides guaranteed satisfaction with a commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been empanelled after extensive research and quality check. Matlabsolutions.com provides undivided attention to each Matlab assignment order with a methodical approach to solution. Our network span is not restricted to US , UK and Australia rather extends to countries like Singapore , Canada and UAE . Our Matlab assignment help services include Image Processing Assignments , Electrical Engineering Assignments , Matlab homework help , Matlab Research Paper help , Matlab Simulink help . Get your work done at the best price in industry.
Our Services
Matlab assignment help, matlab simulation help, matlab projects help, matlab homework help, matlab research paper help, r programming help, python programming help, cnn assignment help.
Desktop Basics - MATLAB & Simulink
Matrices and Arrays
Array Indexing - MATLAB & Simulink
Workspace Variables - MATLAB & Simulink
Text and Characters - MATLAB & Simulink
Calling Functions - MATLAB & Simulink
2-D and 3-D Plots - MATLAB & Simulink
Programming and Scripts - MATLAB & Simulink
Help and Documentation - MATLAB & Simulink
Creating, Concatenating, and Expanding Matrices - MATLAB & Simulink
Removing Rows or Columns from a Matrix
Reshaping and Rearranging Arrays
Multidimensional Arrays
Numeric Types
Characters and Strings
Dates and Time
Cell Arrays
Function Handles
Data Type Conversion
Data Type Identification
Add Title and Axis Labels to Chart
Create Chart with Two y-Axes
Combine Multiple Plots
Specify Axis Limits
Scripts vs. Functions
Add Functions to Scripts
Create Functions in Files
Clipping in Plots and Graphs
Creating Colorbars
Change Color Scheme Using a Colormap
How Surface Plot Data Relates to a Colormap
How Image Data Relates to a Colormap
How Patch Data Relates to a Colormap
Create and Work with Tables
Linear (LTI) Models
Transfer Functions
State-Space Models
Discrete-Time Numeric Models
Time-Domain Response Data and Plots
Time-Domain Responses of Discrete-Time Model
Time-Domain Responses of MIMO Model
Time-Domain Responses of Multiple Models
Introduction: PID Controller Design
Introduction: Root Locus Controller Design
Introduction: Frequency Domain Methods for Controller Design
DC Motor Speed: PID Controller Design
DC Motor Position: PID Controller Design
Cruise Control: PID Controller Design
Suspension: Root Locus Controller Design
Aircraft Pitch: Root Locus Controller Design
Inverted Pendulum: Root Locus Controller Design
Ball & Beam: Root Locus Controller Design
Introduction: System Modeling
Get Started with Deep Network Designer
Create Simple Image Classification Network Using Deep Network Designer
Build Networks with Deep Network Designer
Classify Image Using GoogLeNet
Classify Webcam Images Using Deep Learning
Transfer Learning with Deep Network Designer
Train Deep Learning Network to Classify New Images
Deep Learning Processor Customization and IP Generation
Prototype Deep Learning Networks on FPGA
Deep Learning Processor Architecture
Deep Learning INT8 Quantization
Compiler Output
Quantization of Deep Neural Networks
Custom Processor Configuration Workflow
Estimate Performance of Deep Learning Network by Using Custom Processor Configuration
Generate Custom Bitstream
dlhdl.Workflow class
Preprocess Images for Deep Learning
Preprocess Volumes for Deep Learning
Transfer Learning Using AlexNet
Time Series Forecasting Using Deep Learning
Create Simple Sequence Classification Network Using Deep Network Designer
Classify Image Using Pretrained Network
Create Simple Image Classification Network
Design and simulation of a boost converter
Design and simulation of a boost converter 2
Machine Learning in MATLAB
Train Classification Models in Classification Learner App
Train Regression Models in Regression Learner App
Distribution Plots
Explore the Random Number Generation UI
Design of Experiments
Machine Learning Models
Logistic regression
Logistic regression create generalized linear regression model - MATLAB fitglm 2
Support Vector Machines for Binary Classification
Support Vector Machines for Binary Classification 2
Support Vector Machines for Binary Classification 3
Support Vector Machines for Binary Classification 4
Support Vector Machines for Binary Classification 5
Assess Neural Network Classifier Performance
Naive Bayes Classification
ClassificationTree class
Discriminant Analysis Classification
Ensemble classifier
ClassificationTree class 2
Train Generalized Additive Model for Binary Classification
Train Generalized Additive Model for Binary Classification 2
Classification Using Nearest Neighbors
Classification Using Nearest Neighbors 2
Classification Using Nearest Neighbors 3
Classification Using Nearest Neighbors 4
Classification Using Nearest Neighbors 5
Linear Regression
Linear Regression 2
Linear Regression 3
Linear Regression 4
Nonlinear Regression
Nonlinear Regression 2
Visualizing Multivariate Data
Generalized Linear Models
Generalized Linear Models 2
RegressionTree class
RegressionTree class 2
Neural networks
Gaussian Process Regression Models
Gaussian Process Regression Models 2
Understanding Support Vector Machine Regression
Understanding Support Vector Machine Regression 2
RegressionEnsemble
Using Signal Analyzer App
Extract Voices from Music Signal
Align Signals with Different Start Times
Find a Signal in a Measurement
Find Peaks in Data
Extract Features of a Clock Signal
Filtering Data With Signal Processing Toolbox Software
Take Derivatives of a Signal
Find Periodicity Using Frequency Analysis
Find and Track Ridges Using Reassigned Spectrogram
Classify ECG Signals Using Long Short-Term Memory Networks
Waveform Segmentation Using Deep Learning
Label Signal Attributes, Regions of Interest, and Points
Introduction to Streaming Signal Processing in MATLAB
Filter Frames of a Noisy Sine Wave Signal in MATLAB
Filter Frames of a Noisy Sine Wave Signal in Simulink
Lowpass Filter Design in MATLAB
Tunable Lowpass Filtering of Noisy Input in Simulink
Signal Processing Acceleration Through Code Generation
Signal Visualization and Measurements in MATLAB
Estimate the Power Spectrum in MATLAB
Design of Decimators and Interpolators
Multirate Filtering in MATLAB and Simulink
Estimate the Transfer Function of an Unknown System
View the Spectrogram Using Spectrum Analyzer
Get Instant 20% Off on Your Assignment
Matlab solutions.
Let's discuss about any of your MATLAB Project. You need not worry with your Matlab Project, when we are here.
Quick Links
Matlab Assignment Help Matlab Simulation Help Quantum Computing In Matlab Python Assignment Help MATLAB Exam Help Python Exam Help Maths Exam Help UAV Simulation
About Us Pay Now Blogs E-Books Answers Privacy Policy Careers Sitemap
Copyright 2016-2023 www.matlabsolutions.com - All Rights Reserved.
Disclaimer : Any type of help and guidance service given by us is just for reference purpose. We never ask any of our clients to submit our solution guide as it is, anywhere.
The closed-loop pole locations have a direct impact on time response characteristics such as rise time, settling time, and transient oscillations. Root locus uses compensator gains to move closed-loop poles to achieve design specifications for SISO systems. You can, however, use state-space techniques to assign closed-loop poles. This design technique is known as pole placement , which differs from root locus in the following ways:
- Using pole placement techniques, you can design dynamic compensators.
- Pole placement techniques are applicable to MIMO systems.
Pole placement requires a state-space model of the system (use ss to convert other model formats to state space). In continuous time, such models are of the form
For example, for state matrices A and B , and vector p that contains the desired locations of the closed loop poles,
- K = place(A,B,p);
computes an appropriate gain matrix K .
Use the place command to calculate the L matrix
- L = place(A',C',q)
where A and C are the state and output matrices, and q is the vector containing the desired closed-loop poles for the observer.
Note that the resulting closed-loop dynamics are
Example. Given a continuous-time state-space model
- sys_pp = ss(A,B,C,D)
with seven outputs and four inputs, suppose you have designed
- A state-feedback controller gain K using inputs 1, 2, and 4 of the plant as control inputs
- A state estimator with gain L using outputs 4, 7, and 1 of the plant as sensors
- Input 3 of the plant as an additional known input
You can then connect the controller and estimator and form the dynamic compensator using this code.
- controls = [1,2,4]; sensors = [4,7,1]; known = [3]; regulator = reg(sys_pp,K,L,sensors,known,controls)
The Control System Toolbox contains functions to
- Form the state estimator and dynamic compensator using these gains.
The function acker is limited to SISO systems and should only be used for systems with a small number of states. The function place is a more general and numerically robust alternative to acker .
Caution. Pole placement can be badly conditioned if you choose unrealistic pole locations. In particular, you should avoid
- Placing multiple poles at the same location.
- Moving poles that are weakly controllable or observable. This typically requires high gain, which in turn makes the entire closed-loop eigenstructure very sensitive to perturbations.
- LRC circuit
- BoostConverter
- NEXT ►
Inverted Pendulum: Digital Controller Design
Key MATLAB commands used in this tutorial are: ss , c2d , ctrb , obsv , dlqr , lsim , plotyy , eig , place
Related Tutorial Links
- Digital Control Intro
- Discrete Poles
- Sampling Activity
Related External Links
- MATLAB Example
- Implementation Video
Discrete state-space
Controllability and observability, control design via pole placement, precompensator design, observer design.
In this digital control version of the inverted pendulum problem, we will use the state-space method to design the digital controller. If you refer to the Inverted Pendulum: System Modeling page, the linearized state-space equations were derived as:
In choosing a sample time, note that it is desired that the sampling frequency be fast compared to the dynamics of the system. One measure of a system's "speed" is its closed-loop bandwidth. A good rule of thumb is that the sampling frequency be at least 30 times larger than the closed-loop bandwidth frequency which can be determined from the closed-loop Bode plot.
Assuming that the closed-loop bandwidth frequencies are around 1 rad/sec for both the cart and the pendulum, let the sampling time be 1/100 sec/sample. The discretization method we will use is the zero-order hold ( 'zoh' ). For further details, refer to the Introduction: Digital Controller Design page. Now we are ready to use c2d function. Enter the following commands into an m-file . Running this m-file in the MATLAB command window gives you the following four matrices representing the discrete time state-space model.
Now we have obtained the discrete state-space model of the form:
The next step is to check the controllability and the observability of the system. For the system to be completely state controllable, the controllability matrix
must have the rank of n . The rank of the matrix is the number of linearly independent rows (or columns). In the same token, for the system to be completely state observable, the observability matrix
must also have the rank of n . These tests for controllability and observability are identical to the situation of continuous control except that now the state space model is discrete.
Since the number of state variables in our system is 4, the rank of both matrices must be 4. The function rank can give you the rank of each matrix. Adding the following commands to your m-file and running in the MATLAB command window will generate the results shown below.
This proves that our discrete system is both completely state controllable and completely state observable.
The schematic of a full-state feedback control system is shown below.
The above response satisfies all of the design requirements, however, it was found assuming all state variables of the system are measurable. This assumption may not be valid for all systems. In this section, we develop a technique for estimating the state of the system based on the measured outputs and a model of the plant. The object that estimates the state of system is called an observer . Thus, in this section we will design a full-order state observer to estimate all of the system's state variables, including those that are measured. For further explanation on how an observer works, please consult your control textbook.
A basic schematic of the observer-based state-feedback system is shown below.
Now we will obtain the overall system response including the observer. Add the following commands to your m-file and run to generate the response shown below.
This response is almost identical to the response achieved when it was assumed that we had full access to the state variables. This is because the observer poles are fast, and because the model we assumed for the observer is identical to the model of the actual plant (including the same initial conditions). Therefore, all of the design requirements have been met with the minimal control effort expended. No further iteration is needed.
Published with MATLAB® 9.2
- school Campus Bookshelves
- menu_book Bookshelves
- perm_media Learning Objects
- login Login
- how_to_reg Request Instructor Account
- hub Instructor Commons
- Download Page (PDF)
- Download Full Book (PDF)
- Periodic Table
- Physics Constants
- Scientific Calculator
- Reference & Cite
- Tools expand_more
- Readability
selected template will load here
This action is not available.
10.2: Controllers for Discrete State Variable Models
- Last updated
- Save as PDF
- Page ID 24434
- Kamran Iqbal
- University of Arkansas at Little Rock
Emulating an Analog Controller
The pole placement controller designed for a continuous-time state variable model can be used with derived sampled-data system model. Successful controller emulation requires a high enough sampling rate that is at least ten times the frequency of the dominant closed-loop poles of the system.
In the following we illustrate the emulation of pole placement controller designed for the DC motor model (Example 8.3.4) for controlling the discrete-time model of the DC motor. The DC motor model is discretized at two different sampling rates for comparison, assuming ZOH at the plant input.
Example \(\PageIndex{1}\)
The state and output equations for a DC motor model are given as:
\[\frac{\rm d}{\rm dt} \left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right]=\left[\begin{array}{cc} {-100} & {-5} \\ {5} & {-10} \end{array}\right]\left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right]+\left[\begin{array}{c} {100} \\ {0} \end{array}\right]V_a , \;\;\omega =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_a } \\ {\omega } \end{array}\right]. \nonumber \]
The motor model is discretized at two different sampling rates in MATLAB. The results are:
\[T=0.01s: A_{\rm d} =\left[\begin{array}{cc} {0.367} & {-0.030} \\ {0.030} & {0.904} \end{array}\right],\; \; B_{\rm d} =\left[\begin{array}{c} {0.632} \\ {0.018} \end{array}\right],\; \; C_{\rm d} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]. \nonumber \]
\[T=0.02s: A_{\rm d} =\left[\begin{array}{cc} {0.134} & {-0.038} \\ {0.038} & {0.816} \end{array}\right],\; \; B_{\rm d} =\left[\begin{array}{c} {0.863} \\ {0.053} \end{array}\right],\; \; C_{\rm d} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]. \nonumber \]
For a desired characteristic polynomial: \(\Delta _{\rm des} (s)=s^{2} +150\,s+5000\), a state feedback controller for the continous-time state variable model was obtained as (Example 9.1.1): \(k^{T} =\left[\begin{array}{cc} {0.4} & {7.15} \end{array}\right]\).
We can use the same controller to control the corresponding sample-data system models.
The unit-step response of the closed-loop system is simulated in Figure 10.2.1, where both state variables, \(i_a\left(t\right)\) and \(\omega \left(t\right)\), are plotted.
We observe from the figure that the armature current has a higher overshoot at the lower sampling rate, though both models display similar settling time of about 100 msec.
Pole Placement Design of Digital Controller
Given a discrete state variable model \(\left\{A_{\rm d},\ B_{\rm d}\right\}\), and a desired pulse characteristic polynomial \(\Delta _{\rm des} (z)\), a state feedback controller for the system can be designed using pole placement similar to that of the continuous-time system (Sec. 9.1.1).
Let the discrete-time model of a SISO system be given as:
\[{\bf x}_{k+1} ={\bf A}_{\rm d} {\bf x}_{k} +{\bf b}_{\rm d} u_{k} , \;\; y_{k} ={\bf c}^T {\bf x}_{k} \nonumber \]
A state feedback controller for the discrete state variable model is defined as:
\[u_k=-{\bf k}^T{\bf x}_k+r_k \nonumber \]
where \({\bf k}^{T}\) represents a row vector of constant feedback gains and \(r_k\) is a reference input sequence. The controller gains can be obtained by equating the coefficients of the characteristic polynomial with those of a desired polynomial:
\[\Delta (z)=\left|z{\bf I-A}_{\rm d} \right|=\Delta _{\rm des} (z) \nonumber \]
The \(\Delta _{\rm des} (z)\) above is a Hurwitz polynomial (in \(z\)), with roots inside the unit circle that meet given performance (damping ratio and/or settling time) requirements. Assuming that desired \(s\)-plane root locations are known, the corresponding \(z\)-plane root locations can be obtained from the equivalence: \(z=e^{Ts}\).
Closed-loop System
The closed-loop system model is given as:
\[{\bf x}_{k+1} ={\bf A}_{\rm cl} {\bf x}_{k} +{\bf b}_{\rm d} r_{k} , \;\; y_{k} ={\bf c}^T {\bf x}_{k} \nonumber \]
where \({\bf A}_{\rm cl} =({\bf A}_{\rm d}-{\bf b}_{\rm d}{\bf k}^T)\).
Assuming closed-loop stability, for a constant input \(r_k=r_{\rm ss}\), the steady-state response, \({\bf x}_{\rm ss}\), of the system obeys:
\[{\bf x}_{ss} ={\bf A}_{\rm cl} {\bf x}_{ss} +{\bf b}_{\rm d} r_{ss} ,\;\; y_{\rm ss} ={\bf c}^T {\bf x}_{ss} \nonumber \]
Hence, \(y_{\rm ss}={\bf c}^T\,({\bf A}_{\rm cl}-{\bf I})^{-1}\,{\bf b}_{\rm d}\,r_{\rm ss}\).
Example \(\PageIndex{2}\)
The discrete state variable model of a DC motor (\(T=0.02\)s) is given as: \[\left[\begin{array}{c} {i_{k+1} } \\ {\omega _{k+1} } \end{array}\right]=\left[\begin{array}{cc} {0.134} & {-0.038} \\ {0.038} & {0.816} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right]+\left[\begin{array}{c} {0.863} \\ {0.053} \end{array}\right]V_{k} , \;\; y_{k} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right] \nonumber \]
The desired \(s\)-plane root locations for the model are given as: \(s=-50,\; -100.\)
The corresponding \(z\)-plane roots (\(T=0.02s\)) are obtained as: \(z=e^{-1} ,\; e^{-2}\).
The desired characteristic polynomial is given as: \(\Delta _{\rm des} (z)=z^{2} -0.95z+0.05.\)
The feedback gains \(k^T =[k_{1} ,\; k_{2} ]\), computed using the MATLAB ‘place’ command, are given as: \(k_{1} =0.247,\; k_{2} =4.435.\)
The closed-loop system matrix is given as: \(A_\rm d)= \left[\begin{array}{cc} {-0.080} & {-3.867} \\ {0.025} & {0.583} \end{array}\right]\).
An update rule for implementation of the controller on computer is obtained as: \(u_{k} =-0.247\, i_{k} -4.435\, \omega _{k} .\)
The closed-loop response has steady-state value of \(\omega _{\rm ss}=0.143 \;\rm rad/s\).
The step response of the closed-loop system is plotted in Figure 10.2.2, where the discrete system response was scaled to match the analog system response. The step response of the continuous-time system and that for the emulated controller gains are plotted alongside.
Deadbeat Controller Design
A discrete-time system is called deadbeat if all closed-loop poles are placed at the origin \((z=0)\).
A deadbeat system has the remarkable property that its response reaches steady-state in \(n\)-steps, where \(n\) represents the model dimension.
The desired closed-loop pulse characteristic polynomial is selected as \(\Delta _{\rm des} (z)=z^{n}\).
To design a deadbeat controller, let the closed-loop pulse transfer function be defined as: \[T(z)=\frac{K(z)G(z)}{1+K(z)G(z)} \nonumber \]
The above equation is solved for \(K(z)\) to obtain: \[K(z)=\frac{1}{G(z)} \frac{T(z)}{1-T(z)} \nonumber \]
Let the desired \(T(z)=z^{-n}\); then, the deadbeat controller is given as: \[K(z)=\frac{1}{G(z)(z^{n} -1)} \nonumber \]
Example \(\PageIndex{3}\)
Let \(G(s)=\frac{1}{s+1} ;\) then \(G(z)=\frac{1-e^{-T} }{z-e^{-T} }\).
A deadbeat controller for the model is obtained as: \(K(z)=\frac{z-e^{-T} }{(1-e^{-T} )(z-1)}\).
Example \(\PageIndex{4}\)
The discrete state variable model of a DC motor for \(T=0.02\; \rm s\) is given as: \[\left[\begin{array}{c} {i_{k+1} } \\ {\omega _{k+1} } \end{array}\right]=\left[\begin{array}{cc} {0.134} & {-0.038} \\ {0.038} & {0.816} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right]+\left[\begin{array}{c} {0.863} \\ {0.053} \end{array}\right]V_{k} , \;\;y_{k} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right] \nonumber \]
The state feedback controller is given as: \(u_{k} =-\left[k_{1} ,\, \, k_{2} \right]x_{k}\).
The closed-loop characteristic polynomial is obtained as: \[\Delta (z)=z^{2} +(0.863k_{1} +0.053k_{2} -0.95)z-0.707k_{1} +0.026k_{2} +0.111 \nonumber \]
For pole placement design, let \(\Delta _{\rm des} (z)=z^{2}\). By equating the polynomial coefficients, the deadbeat controller gains are obtained as: \(k_{1} =0.501,\; k_{2} =9.702\).
The update rule for controller implementation is given as: \[u_{k} =0.501\, \, i_{k} +9.702\, \, \omega _{k} \nonumber \]
The step response of the deadbeat controller (Figure 10.2.3) settles in two time periods. The response was scaled to match that of the continuous-time system.
An approximate deadbeat design can be performed by choosing distinct closed-loop eigenvalues close to the origin, e.g., \(z=\pm {10}^{-5}\), and using the 'place' command from the MATLAB Control Systems Toolbox.
The feedback gains for the approximate design are obtained as: \(k_{1} =0.509,\; k_{2} =9.702\). The resulting closed-loop system response is still deadbeat.
Feedforward Tracking System Design
A tracking system was previously designed by using feedforward cancelation of the error signal (Section 9.2.1). A similar design can be performed in the case of discrete systems.
Towards this end, let the discrete state variable model be given as: \[{\bf x}_{k+1} ={\bf A}_{\rm d} {\bf x}_{k} +{\bf b}_{\rm d} u_{k} , \;\;y_{k} ={\bf c}^T {\bf x}_{k} \nonumber \]
A tracking controller for the model is defined as: \[u_k=-{\bf k}^T{\bf x}_k+k_rr_k \nonumber \] where \({\bf k}^{T}\) represents a row vector of feedback gains, \(k_r\) is a feedforward gain, and \(r_k\) is a reference input sequence.
Assuming that a pole placement controller for the discrete system has been designed, the closed-loop system is given as: \[{\bf x}_{k+1}=\left({\bf A}_{\rm d}-{\bf b}_{\rm d}{\bf k}^T\right){\bf x}_k+{\bf b}_{\rm d}k_rr_k \nonumber \]
The closed-loop pulse transfer function is obtained as: \[T\left(z\right)={\bf c}^T_{\rm d}{\left(z{\bf I-A}_{\rm d}+{\bf b}_{\rm d}{\bf k}^T\right)}^{-1}{\bf b}_{\rm d}k_r \nonumber \] where \({\bf I}\) denotes an identity matrix. The condition for asymptotic tracking is given as: \[T\left(1\right)={\bf c}^T_{\rm d}{\left({\bf I-A}_{\rm d}+{\bf b}_{\rm d}{\bf k}^T\right)}^{-1}{\bf b}_{\rm d}k_r=1 \nonumber \]
The feedforward gain for error cancelation is obtained as: \(k_r=\frac{1}{T\left(1\right)}\).
Example \(\PageIndex{5}\)
The discrete state variable model of a DC motor (\(T=0.02\)s) is given as: \[\left[\begin{array}{c} {i_{k+1} } \\ {\omega _{k+1} } \end{array}\right]=\left[\begin{array}{cc} {0.134} & {-0.038} \\ {0.038} & {0.816} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right]+\left[\begin{array}{c} {0.863} \\ {0.053} \end{array}\right]V_{k} , \;\;y_{k} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right] \nonumber \]
A state feedback controller for the motor model was previously designed as: \(k^T =[k_{1} ,\; k_{2} ]\), where \(k_{1} =0.247,\; k_{2} =4.435.\)
The closed-loop system is defined as: \[T\left(z\right)=\frac{0.367z+0.179}{z^2-0.503z+0.05}k_r \nonumber \]
From the asymptotic condition, the feedforward gain is solved as: \(k_r=6.98\).
The step response of the closed-loop system is shown in Figure 10.2.4.
Example \(\PageIndex{6}\)
The discrete state variable model of a DC motor (\(T=0.02\)s) is given as:
\[\left[\begin{array}{c} {i_{k+1} } \\ {\omega _{k+1} } \end{array}\right]=\left[\begin{array}{cc} {0.134} & {-0.038} \\ {0.038} & {0.816} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right]+\left[\begin{array}{c} {0.863} \\ {0.053} \end{array}\right]V_{k} , \;\;y_{k} =\left[\begin{array}{cc} {0} & {1} \end{array}\right]\left[\begin{array}{c} {i_{k} } \\ {\omega _{k} } \end{array}\right] \nonumber \]
A dead-beat controller for the motor model was designed as: \(k^T =[k_{1} ,\; k_{2} ]\), where \(k_{1} =0.501,\; k_{2} =9.702\).
The closed-loop system is defined as: \[T\left(z\right)=\frac{0.672z+0.328}{z^2}k_r \nonumber \]
From the asymptotic condition, the feedforward gain is solved as: \(k_r=12.77\).
The step response of the closed-loop system is shown in Figure 10.2.5.
Tracking PI Controller Design
A tracking PI controller for the discrete state variable model is designed similar to the design of continuous-time system (Figure 9.3.1). The tracking PI controller places an integrator in the feedback loop, thus ensuring that the tracking error goes to zero in the steady-state.
In the case of continuous-time system, the tracking PI controller was defined as: \(u=-{\bf k}^{T} {\bf x}+k_{i} \int (r-y)\rm dt\).
Using the forward difference approximation to the integrator, given as: \(v_k=v_{k-1}+Te_k\), an augmented discrete-time system model including the integrator state variable is formed as:
\[\left[\begin{array}{c} {{\bf x}(k+1)} \\ {v(k+1)} \end{array}\right]=\left[\begin{array}{cc} {{\bf A}_{\rm d} } & {\bf 0} \\ {-{\bf c}^T T} & {1} \end{array}\right] \left[\begin{array}{c} {{\bf x}(k)} \\ {v(k)} \end{array}\right]+\left[\begin{array}{c} {{\bf b}_{\rm d} } \\ {0} \end{array}\right]u+\left[\begin{array}{c} {\bf 0} \\ {T} \end{array}\right]r \nonumber \]
The state feedback controller for the augmented system is defined as:
\[u(k)=\left[\begin{array}{cc} {-{\bf k}^T } & {k_ i } \end{array}\right]\, \left[\begin{array}{c} {{\bf x}(k)} \\ {v(k)} \end{array}\right] \nonumber \]
where \(k_ i\) represents the integral gain. With the addition of the above controller, the closed-loop system is described as:
\[\left[\begin{array}{c} {{\bf x}(k+1)} \\ {v(k+1)} \end{array}\right]=\left[\begin{array}{cc} {{\bf A}_{\rm d} -{\bf b}_{\rm d} k^{T} } & {{\bf b}_{\rm d} k_{i} } \\ {-{\bf c}^T T} & {1} \end{array}\right] \left[\begin{array}{c} {{\bf x}(k)} \\ {v(k)} \end{array}\right]+\left[\begin{array}{c} {\bf 0} \\ {T} \end{array}\right]r(k) \nonumber \]
The closed-loop characteristic polynomial of the augmented system is formed as:
\[{\mathit{\Delta}}_a\left(z\right)=\left| \begin{array}{cc} z{\bf I-A}_{\rm d}+{\bf b}_{\rm d}k^T & -{\bf b}_{\rm d}k_i \\ -{\bf c}^T_{\rm d}T & z-1 \end{array} \right| \nonumber \]
where \({\bf I}\) denotes an identity matrix of order \(n\).
Next, we choose a desired characteristic polynomial of \((n+1)\) order, and perform pole placement design for the augmented system. The location of the integrator pole in the \(z\)-plane may be selected keeping in view the desired peformance criteria for the closed-loop system.
\[\left[ \begin{array}{c} i_{k+1} \\ {\omega }_{k+1} \end{array} \right]=\left[ \begin{array}{cc} 0.134 & -0.038 \\ 0.038 & 0.816 \end{array} \right]\left[ \begin{array}{c} i_k \\ {\omega }_k \end{array} \right]+\left[ \begin{array}{c} 0.863 \\ 0.053 \end{array} \right]V_k,\ \ {\omega }_k=\left[ \begin{array}{cc} 0 & 1 \end{array} \right]\left[ \begin{array}{c} i_k \\ {\omega }_k \end{array} \right] \nonumber \]
The control law for the tracking PI controller is defined as:
\[u_k=-k_1i_k-k_2{\omega }_k+k_iv_k \nonumber \]
where \(v_{k} =v_{k-1} +T(r_{k} -\omega _{k} )\) describes the output of the integrator. The augmented system model for the pole placement design using integral control is given as:
\[\left[ \begin{array}{c} i_{k+1} \\ {\omega }_{k+1} \\ v_{k+1} \end{array} \right]=\left[ \begin{array}{ccc} 0.134 & -0.038 & 0 \\ 0.038 & 0.816 & 0 \\ 0 & -0.02 & 1 \end{array} \right]\left[ \begin{array}{c} i_k \\ {\omega }_k \\ v_k \end{array} \right]+\left[ \begin{array}{c} 0.863 \\ 0.053 \\ 0 \end{array} \right]V_k+\left[ \begin{array}{c} 0 \\ 0 \\ 0.02 \end{array} \right]r_k \nonumber \]
The desired \(z\)-plane pole locations for a desired \(\zeta=0.7\) are selected as: \(z=e^{-1} ,\; e^{-1\pm j1}\).
The controller gains, obtained using the MATLAB ‘place’ command, are given as: \(k_{1} =0.43,k_{2} =15.44,\; k_{i} =-297.79.\)
An update rule for controller implementation on computer is given as:
\[u_k=-0.43i_k-15.44{\omega }_k+297.8v_k \nonumber \]
\[v_k=v_{k-1}+0.02\left(r_k-{\omega }_k\right) \nonumber \]
The step response of the closed-loop system is plotted in Figure 10.2.6. The step response of the continuous-time system (Example 9.1.1) is plotted alongside. The output in both cases attains steady-state value of unity in about 0.12sec.
Fusion of Engineering, Control, Coding, Machine Learning, and Science
Aleksandar Haber
Pole Placement With Integral Control Action to Eliminate Steady-State Error (State-Space Control Design)
In this post, we explain how to integrate an integral control action into a pole placement control design in order to eliminate a steady-state error. The YouTube video accompanying this post is given below
First, we explain the main motivation for creating this tutorial. When designing control algorithms, we are primarily concerned with two design challenges. First of all, we have to make sure that our control algorithm behaves well during the transient response. That is, as designers we specify the acceptable behavior of the closed-loop system during the transient response. For example, we want to make sure that the rise time (settling time) is within a certain time interval specified by the user. Also, we want to ensure that the system’s overshoot is below a certain value. For example, below 10 or 15 percent of the steady-state value. Secondly, we want to make sure that the control algorithm is able to eliminate the steady-state control error.
In your introductory course on control systems, you have probably heard of a pole placement problem and the solutions. The classical pole placement method is used to stabilize the system or for improving the transient response. This method finds a state feedback control matrix that assigns the poles of the closed-loop system to desired locations specified by the user. However, it is not obvious how to use the pole placement method for set-point tracking and for eliminating steady-state error in set-point tracking design problems. This tutorial explains how to combine the pole placement method with an integral control action in order to eliminate steady-state error and achieve a desired transient response. The technique presented in this lecture is very important for designing control algorithms.
Consider the following state-space model:
is stable and that the poles are placed at the desired locations (that are specified by the designer). The issue with this approach is that although we can place the poles at the desired locations, we do not have full control of steady-state error.
The basic idea for tackling this problem is to augment the original system ( 2 ) with an integrator of the error:
We can write ( 5 ) compactly
From the last system of equations, we can observe that we have formed a new state-space model, with the state variable:
The state-feedback controller now has the following form
By substituting the feedback control algorithm ( 8 ) in the state-space model ( 6 ), we obtain the following system
The new system matrix
Next, we present MATLAB codes for implementing this control approach. The following code lines define the system, compute eigenvalues of the open-loop system, perform basic diagnostics, and compute the open-loop response.
The open-loop step response is given below.
The open-loop system is asymptotically stable. However, we can observe that we have a significant steady-state error. To eliminate the steady-state error, we use the developed approach.
Next, we define the augmented system for pole placement, define desired closed-loop poles, compute the feedback control gain, define the close-loop system, compute the transfer function of the system, and compute the step response. The following code lines are used to perform these tasks.
The resulting step response of the system is shown in the figure below.
A few comments about the presented code are in order. In code line 13, we define the closed-loop poles. We shift the open-loop poles to left compared to their original location in order to ensure a faster response. Also, we set an additional pole corresponding to the introduced integral action to be a shifted version of the open-loop pole with the minimal real part (maximal absolute distance from the imaginary axis). From the step response of the closed-loop system, we can observe that the steady-state error has been eliminated. Consequently, our control system with the additional integral action is able to successfully track reference set points. The computer transfer function of the closed-loop system is
That would be all. A related post to this post and tutorial is a tutorial on how to compute a Linear Quadratic Regulator (LQR) optimal controller. That tutorial can be found here .
You might also like
Clear and concise explanation of fourier series with solved examples and python code, convert state-space models into transfer functions with matlab codes, clear and concise particle filter tutorial with python implementation- part 3: python implementation of particle filter algorithm.
MATLAB Answers
- Trial software
You are now following this question
- You will see updates in your followed content feed .
- You may receive emails, depending on your communication preferences .
Pole placement design using place()
Direct link to this question
https://www.mathworks.com/matlabcentral/answers/59676-pole-placement-design-using-place
1 Comment Show -1 older comments Hide -1 older comments
Direct link to this comment
https://www.mathworks.com/matlabcentral/answers/59676-pole-placement-design-using-place#comment_124568
Sign in to comment.
Sign in to answer this question.
Answers (0)
- pole placement with prescribe a area for the eigenvalue
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
- América Latina (Español)
- Canada (English)
- United States (English)
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 简体中文 Chinese
- 日本 Japanese (日本語)
- 한국 Korean (한국어)
Contact your local office
IMAGES
VIDEO
COMMENTS
Pole placement is a method of calculating the optimum gain matrix used to assign closed-loop poles to specified locations, thereby ensuring system stability. Closed-loop pole locations have a direct impact on time response characteristics such as rise time, settling time, and transient oscillations. For more information, see Pole Placement.
This design technique is known as pole placement, which differs from root locus in the following ways: Using pole placement techniques, you can design dynamic compensators. Pole placement techniques are applicable to MIMO systems. Pole placement requires a state-space model of the system (use ss to convert other model formats to state space).
Description Full Transcript Related Resources Pole Placement | State Space, Part 2 From the series: State Space Brian Douglas This video provides an intuitive understanding of pole placement, also known as full state feedback.
Control Design Using Pole Placement Introducing the Reference Input Observer Design Modeling There are several different ways to describe a system of linear differential equations. The state-space representation was introduced in the Introduction: System Modeling section. For a SISO LTI system, the state-space form is given below: (1) (2)
The pole placement design is facilitated if the system model is in the controller form (Section 8.3.1). In the controller form structure, the coefficients of the characteristic polynomial appear in reverse order in the last row of \(A\) matrix. ... The MATLAB Control System Toolbox includes the 'place' command that uses Ackermann's ...
Pole Placement Design Technique 8.2 State Feedback and Pole Placement Consider a linear dynamic system in the state space form In some cases one is able to achieve the goal (e.g. stabilizing the system or improving its transient response) by using the full state feedback, which represents a linear combination of the state variables, that is
place. Pole placement design. Syntax. K = place(A,B,p) [K,prec,message] = place(A,B,p) Description. Given the single- or multi-input system. and a vector p of desired self-conjugate closed-loop pole locations, place computes a gain matrix K such that the state feedback places the closed-loop poles at the locations p.In other words, the eigenvalues of match the entries of p (up to the ordering).
Description Given the single- or multi-input system ?x=Ax+Bu and a vector p of desired self-conjugate closed-loop pole locations, place computes a gain matrix K such that the state feedback u = - Kx places the closed-loop poles at the locations p. In other words, the eigenvalues of A - BK match the entries of p (up to the ordering).
Using pole placement techniques, you can design dynamic compensators. Pole placement techniques are applicable to MIMO systems. Pole placement requires a state-space model of the system (use to convert other model formats to state space). In continuous time, such models are of the form. is the vector of control inputs, is the state vector, and ...
Design a fEEdback gain controller for a 2nd and 3rd order system that's modeled in state-space representation via pole placement in Matlab.My video on conver...
State Feedback Design using Pole Placement with MATLAB/SimulinkIn this video we will discuss the concept of pole placement technique, which is also known as ...
Design LQR Servo Controller in Simulink. Design an LQR controller for a system modeled in Simulink ®. Pole Placement. Closed-loop pole locations have a direct impact on time response characteristics such as rise time, settling time, and transient oscillations. Pole placement uses state-space techniques to assign closed-loop poles.
The video describes the basic concept of pole placement. The video then demonstrates the MATLAB simulation of pole placement in stabilizing the magnetic ball...
Based on the poles found above, we will place the observer poles at [-0.2 -0.21 -0.22 -0.23]. These poles can be modified later, if necessary. We will use the MATLAB function place to find the matrix. Add the following code to your m-file and re-run in the command window to generate the observer gain matrix shown below.
Figure 10.2.1 10.2. 1: The step response of the DC motor model with analog controller emulation: armature current (top); motor speed (bottom) We observe from the figure that the armature current has a higher overshoot at the lower sampling rate, though both models display similar settling time of about 100 msec.
Some more results on pole placement using different approaches can be seen in [8] and [4]. However in best of our knowledge there is no study on State feedback controller design using MATLAB. This paper has provided the generalized method and technique for solving pole placement problem by given algorithm which is much less
Find the simplest controller C(s) such that the dominant closed-loop poles are at ¡3§j. Any other poles should be at ¡12. Solution: The plant is of order n = 2. A proper controller of order 1 exists that can place the poles arbitrarily. It has the form: C(s) = p1s+p0 l1s+l0 The characteristic polynomial has degree n + m = 2 + 1 = 3. Thus, we ...
Using the pole placement technique, you can design a controller so that closed-loop system poles are placed in desired locations to meet design requirements such as rise time, overshoot, and settling time. This video shows how you can: Determine if a system is controllable by computing the rank of a controllability matrix.
Here we use the 'place' command in Matlab to design full-state feedback gains to specify the eigenvalues of the closed-loop system. This is demonstrated on ...
The classical pole placement design finds the feedback control matrix and the control law such that the closed-loop system (2) ... Next, we present MATLAB codes for implementing this control approach. The following code lines define the system, compute eigenvalues of the open-loop system, perform basic diagnostics, and compute the open-loop ...
I am about to design a low-pass filter with a zero/pole placement method in such a way that rejected frequencies are placed at $500\,\text{Hz}$ and their multiples. Are there any simple instructions to do it Matlab? Expected freq. response fo LPF with rejection exact freqs ...
Pole placement design using place () Follow 3 views (last 30 days) Show older comments sami on 23 Jan 2013 Vote 0 Link hi, i have this m.file : Theme Copy ew_place= [-8, -3, -3, -5, -6+5i, -6-5i]; K=place (A,B,ew_place);