ComputePoles - MapleSim Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


ControlDesign

  

ComputePoles

  

compute the poles used in an Ackermann pole placement design based on a desired time constant of the closed-loop system

 

Calling Sequence

Parameters

Options

Description

Examples

Calling Sequence

ComputePoles(sys, Tc, opts)

Parameters

sys

-

System; system object

Tc

-

And(positive, numeric); desired closed-loop time constant (in seconds)

opts

-

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

Options

• 

parameters = {list, set}(name = complexcons)

  

Specifies numeric values for the parameters of sys. These values override any parameters previously specified for sys. The numeric value on the right-hand side of each equation is substituted for the name on the left-hand side in the sys equations. The default is the value of sys given by DynamicSystems:-SystemOptions(parameters).

Description

• 

The ComputePoles command returns a list of poles needed to design a state feedback controller for sys by pole placement with the Ackermann command. The returned list will contain as many poles as the number of states of sys.

• 

The computation of the poles is done based on the desired time constant, Tc (seconds), of the closed-loop system.

• 

The system sys is a continuous or discrete-time linear system object created using the DynamicSystems package. The system object must have a single input and must be controllable and in state-space (SS) form.

• 

If sys is uncontrollable, try the ReduceSystem command to remove any structurally uncontrollable states of sys.

Examples

withControlDesign:

withDynamicSystems:

Use parameters option

• 

Consider a state-space system corresponding to a DC Motor:

sys_aMatrixdJ,KJ,0,KL,RL,0,1,0,0:

sys_bMatrix0,1J,1L,0,0,0:

sys_cMatrix0,1,0,1,0,0,0,0,1:

sys_dMatrix0,0,0,0,0,0:

sys1StateSpacesys_a,sys_b,sys_c,sys_d,inputvariable=Vt,Tt,outputvariable=i_outt,omega_outt,theta_outt,statevariable=ωt,it,θt:

PrintSystemsys1

State Spacecontinuous3 output(s); 2 input(s); 3 state(s)inputvariable=Vt,Ttoutputvariable=i_outt,omega_outt,theta_outtstatevariable=ωt,it,θta=dJKJ0KLRL0100b=01J1L000c=010100001d=000000

(1)
• 

The numeric values of the model parameters are as follows:

params1J=0.01,K=0.01,L=0.5,R=1,d=0.1:

• 

Extract a subsystem with the desired input and output.

subsys1Subsystemsys1,1,2:PrintSystemsubsys1

State Spacecontinuous1 output(s); 1 input(s); 3 state(s)inputvariable=Vtoutputvariable=omega_outtstatevariable=ωt,it,θta=dJKJ0KLRL0100b=01L0c=100d=0

(2)
• 

Check if the subsystem is controllable:

Controllablesubsys1,parameters=params1

true

(3)
• 

Compute the poles for a desired time constant of 1 second:

τ1:

p1ComputePolessubsys1,τ,parameters=params1

p1−1.,−1.,−1.

(4)
• 

Use the previous results to compute the state feedback gain:

KcStateFeedback:-Ackermannsubsys1,p1,parameters=params1

Kc36.49000000−4.5000000000.5000000000

(5)

Use ReduceSystem

• 

Consider the following state-space system

AmMatrixδ,1,φ,σ,3,0,0,3,1,0,1,1,0,0,0,0:

BmMatrix5,z,1,1,3,x,0,2,y,0,0,z:

CmMatrix1,0,3,5,3,0,σ,7:

DmMatrix1,0,0,0,1,1:

• 

The numeric values of the system parameters are

params2δ=2,φ=7,σ=3,z=4:

• 

Create the state-space model, using the parameters option so that they do not have to be later passed to subsequent function calls as was done in the previous example.

sys2StateSpaceAm,Bm,Cm,Dm,parameters=params2:PrintSystemsys2

State Spacecontinuous2 output(s); 3 input(s); 4 state(s)inputvariable=u1t,u2t,u3toutputvariable=y1t,y2tstatevariable=x1t,x2t,x3t,x4ta=δ1φσ300310−110000b=5z−113x02y00zc=1035−30σ7d=100011

(6)
• 

Extract a subsystem with the desired input and output.

subsys2Subsystemsys2,1:PrintSystemsubsys2

State Spacecontinuous2 output(s); 1 input(s); 4 state(s)inputvariable=u1toutputvariable=y1t,y2tstatevariable=x1t,x2t,x3t,x4ta=δ1φσ300310−110000b=5100c=1035−30σ7d=10

(7)
• 

Check if the system is controllable:

Controllablesubsys2

false

(8)

Observablesubsys2

true

(9)
• 

The subsystem is observable but uncontrollable. Try removing structural uncontrollable states

rsysReduceSystemsubsys2:PrintSystemrsys

State Spacecontinuous2 output(s); 1 input(s); 3 state(s)inputvariable=u1toutputvariable=y1t,y2tstatevariable=x1t,x2t,x3ta=δ1φ30010−1b=510c=103−30σd=10

(10)

Controllablersys

true

(11)

Observablersys

true

(12)
• 

Compute the poles for a desired time constant of 1 second:

τ1:

p2ComputePolesrsys,τ

p2−1.049223528+0.2188673555I,−1.0492235280.2188673555I,−0.043808373

(13)

KcStateFeedback:-Ackermannrsys,p2

Kc0.58984464030.1930322270−1.400163308

(14)

See Also

ControlDesign

ControlDesign[StateFeedback][Ackermann]