calculate the state feedback gain for single-input systems using Ackermann's formula - MapleSim Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : MapleSim Toolboxes : MapleSim Control Design Toolbox : ControlDesign Package : State Feedback : ControlDesign/StateFeedback/Ackermann

ControlDesign[StateFeedback][Ackermann] - calculate the state feedback gain for single-input systems using Ackermann's formula

Calling Sequence

Ackermann(sys, p, opts)

Ackermann(Amat, Bmat, p, opts)

Parameters

sys

-

System; system object

p

-

list; list of desired closed-loop poles (real or complex). Complex poles including those containing symbolic parameters must be given in complex conjugate pairs. All symbolic parameters in the list are assumed to be real.

Amat

-

Matrix; system matrix of a state-space system

Bmat

-

Matrix or Vector; input matrix of a state-space system

opts

-

(optional) equation(s) of the form option = value; specify options for the Ackermann command

Description

• 

The Ackermann command calculates the state feedback gain Kc for single-input systems using Ackermann's formula to place the closed-loop poles in the desired locations.  

• 

The system sys is a continuous or discrete-time linear system object created using the DynamicSystems package. The system object must be in state-space (SS) form and must be controllable. If Amat and Bmat matrices are specified, the (Amat, Bmat) pair must be controllable.

• 

The closed-loop system matrix is then Ac=AB.Kc where Kc is the calculated feedback gain.

• 

When the syntax Ackermann(sys, p, return_Kr) is used, the feed-forward or direct gain Kr is computed as follows:

CD.Kc.1A+B.Kc.B+D (continuous time)

CD.Kc.1A+I+B.Kc.B+D (discrete time)

• 

If sys contains structural uncontrollable states, use ReduceSystem to remove them before computing the state feedback gain Kc.

Examples

withControlDesign:

withDynamicSystems:

Numeric example

• 

State-space system matrix Amat and input matrix Bmat (5 states and 1 input)

Amat:=Matrix1,2,3,5,12,0,4,1,2,3,2,5,7,4,3,2,4,3,8,7,3,4,1,4,7:

Bmat:=Matrix3,9,5,4,6:

• 

Desired poles

p1:=1+I,0.1,2.44,1I,7.77:

• 

Obtain the state feedback gain Kc:

Kc:=StateFeedback:-AckermannAmat,Bmat,p1

Kc:=3.3676962193.2894237634.0305593368.6441974645.820218623

(1)
• 

Verify the closed-loop system matrix has the desired poles

LinearAlgebra:-EigenvaluesAmatBmat.Kc

7.77000009752227+0.I2.43999927357318+0.I1.00000013420801+0.999999523526135I1.000000134208010.999999523526135I0.100000368488507+0.I

(2)

Symbolic example

• 

System object sys with symbolic entries (3 states, 1 input, 3 outputs)

sys:=StateSpaceMatrix1,y,3,x,4,1,2,5,7,Matrix3,9,5,Matrix1,0,0,0,1,0,0,0,1,Matrix3,1:

PrintSystemsys

State Spacecontinuous3 output(s); 1 input(s); 3 state(s)inputvariable=u1toutputvariable=y1t,y2t,y3tstatevariable=x1t,x2t,x3ta=1y3x4−1257b=395c=100010001d=000

(3)
• 

Desired poles

p2:=4,5+3I,53I

p2:=4,5+3I,53I

(4)
• 

Obtain the state feedback gain Kc and the feed-forward gain Kr:

Kc,Kr:=StateFeedback:-Ackermannsys,p2,'return_Kr'=true,'parameters'=x=0,y=2

Kc,Kr:=4.3839620090.24887070002.121655535,3.081693500003580.6487775789481221.05426356579070

(5)
• 

Verify the closed-loop system matrix has the desired poles

sys:-a:=evalsys:-a,x=0,y=2:

eigen:=LinearAlgebra:-Eigenvaluessys:-asys:-b.Kc

eigen:=5.00000000205003+2.99999999901670I5.000000002050032.99999999901670I3.99999999789992+0.I

(6)

Use ReduceSystem

sys1:=StateSpaceMatrix4,0,3,5,3,0,0,3,1,0,1,1,0,0,0,0,Matrix1,3,2,0,Matrix1,0,3,5,3,0,5,7,Matrix1,0:

PrintSystemsys1

State Spacecontinuous2 output(s); 1 input(s); 4 state(s)inputvariable=u1toutputvariable=y1t,y2tstatevariable=x1t,x2t,x3t,x4ta=40−35300310−110000b=1320c=1035−3057d=10

(7)
• 

Desired poles

p3:=a+I3,aI3,b+I9,bI9

p3:=a+3I,a3I,b+9I,b9I

(8)
• 

Get the state-feedback gain

Kc:=StateFeedback:-Ackermannsys1,p3

Error, (in ControlDesign:-StateFeedback:-Ackermann) the given state-space realization is not controllable

• 

Remove the uncontrollable states if possible. ReduceSystem will remove the structural uncontrollable states.

rsys:=ReduceSystemsys1,'reducedtype'=controllable:

PrintSystemrsys

State Spacecontinuous2 output(s); 1 input(s); 3 state(s)inputvariable=u1toutputvariable=y1t,y2tstatevariable=x1t,x2t,x3ta=40−330010−1b=132c=103−305d=10

(9)
• 

Verify the resulting subsystem is controllable

Controllablersys,'method'=rank

true

(10)
• 

Desired poles for the controllable subsystem

p4:=a,b+I9,bI9:

Kc:=StateFeedback:-Ackermannrsys,p4

Kc:=16ab243ab23b2956a143b1853118ab292a16ab2+23ab+13b2+916a+103b+973

(11)

See Also

ControlDesign, ControlDesign[StateFeedback][PolePlacement]

References

  

[1] T. Kailath, Linear Systems, Prentice-Hall, 1980.

  

[2] C. T. Chen, Linear System Theory and Design, 3rd Ed., Oxford University Press, 1999.


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam