DominantPole - MapleSim Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


ControlDesign

  

DominantPole

  

PID controller design for (dominant) pole placement

 

Calling Sequence

Parameters

Options

Description

Examples

Calling Sequence

DominantPole(sys, p, opts)

Parameters

sys

-

System; system object

p

-

list; desired (dominant) 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.

opts

-

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

Options

• 

controller = PI or PID

  

Specifies the controller type. The default value is PID.

• 

factored  = true or false

  

True means return the factored version of the controller gains (K=Kp, Ti=KpKi, Td=KdKp). False means return the controller gains (Kp, Ki, Kd). The default is false.

• 

returntype =  list or record or system

  

Specifies the returned type. If list is specified, the command returns a sequence of two lists; the first contains the controller parameters and the second contains the closed-loop poles. If a record is specified, the command returns a record containing the controller parameters and the closed-loop poles. If system is specified, the command returns a System (DynamicSystems system object) containing the transfer function of the specified controller type (PI, PID). The default value is list.

Description

• 

The DominantPole command calculates the controller parameters for the closed-loop (dominant) pole placement.

• 

The system sys is a continuous-time linear system object created using the DynamicSystems package. The system object must single-input single-output (SISO) and one of the following types: TransferFunction (tf), ZeroPoleGain(zpk), Coefficients(coeff), StateSpace(ss), DiffEquations (de).

• 

The DominantPole command returns a sequence of two lists. The first list contains controller parameters and the second one contains closed-loop poles when the control loop is closed with a unity negative feedback.

• 

Using a PI controller, two closed-loop poles can be assigned. The (dominant) closed-loop poles (p) must be specified as a complex conjugate pair.

• 

Using a PID controller, three closed-loop poles can be assigned. The (dominant) closed-loop poles (p) must be specified as a single real pole and a complex conjugate pair.

• 

If the factored option is false, the controller parameters are returned as a list of the form Kp,Ki for a PI controller or Kp,Ki,Kd for a PID controller, where Kp is the proportional gain, Ki is the integral gain, and Kd is the derivative gain. The controller transfer function is then obtained as:

– 

PI: C⁡s=Kp+Kis

– 

PID: C⁡s=Kp+Kis+Kd⁢s

  

The three parameters can independently vary and one or more could be zero for a specific problem. If the solution to the specified pole placement problem requires one or more negative gains, a warning is generated.

• 

If the factored option is true, the controller parameters are returned as a list of the form Ki,Ti for a PI controller or K,Ti,Td for a PID controller, where K is the proportional gain, Ti is the integral time, and Td is the derivative time. The controller transfer function is then obtained as:

– 

PI: C⁡s=K⁡1+1Ti⁢s

– 

PID: C⁡s=K⁡1+1Ti⁢s+Td⁢s 

  

The factored parameters can be calculated only if Ki is nonzero for a PI controller and both Kp and Ki are nonzero for a PID controller.

• 

As only two (with a PI) or three (with a PID) closed-loop poles are assignable, for higher order systems, the positions of the rest of the poles are dictated by the system dynamics and must be verified separately to ensure overall stability and performance.

Examples

> 

with⁡ControlDesign:

> 

with⁡DynamicSystems:

Example: Numeric system

> 

sys1≔NewSystem⁡s+1s3+s2+13⁢s+12:

> 

p1≔−3+2⁢I,−3−2⁢I,−10:

> 

DominantPole⁡sys1,p1,controller=PID

144524,474536,115372,−10,−7372,−3−2⁢I,−3+2⁢I

(1)
> 

DominantPole⁡sys1,p1,controller=PID,factored=true

144524,8671898,11534335,−10,−7372,−3−2⁢I,−3+2⁢I

(2)
> 

pid≔DominantPole⁡sys1,p1,controller=PID,returntype=record

pid≔Recordpacked⁡Kp=144524,Ki=474536,Kd=115372,closedPoles=−10,−7372,−3−2⁢I,−3+2⁢I

(3)
> 

pid≔DominantPole⁡sys1,p1,controller=PID,factored=true,returntype=record

pid≔Recordpacked⁡K=144524,Ti=8671898,Td=11534335,closedPoles=−10,−7372,−3−2⁢I,−3+2⁢I

(4)
> 

pidsys≔DominantPole⁡sys1,p1,controller=PID,returntype=system:

Warning, improper transfer-function, degree(num) > degree(den)

> 

PrintSystem⁡pidsys

Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=1153⁢s2+4335⁢s+949072⁢s

(5)
• 

Get the closed-loop poles

> 

zpksys≔PIDClosedLoop⁡sys1,pidsys,outputtype=zpk:

Warning, improper transfer-function, degree(num) > degree(den)

> 

PrintSystem⁡zpksys

Zero Pole Gaincontinuous1 output(s); 1 input(s)inputvariable=y1_ref⁡soutputvariable=y1⁡sz1,1=−43352306−I⁢249756552306,−43352306+I⁢249756552306,−1p1,1=−10,−3−2⁢I,−3+2⁢I,−7372k1,1=115372

(6)
> 

p1≔−3+2⁢I,−3−2⁢I:

> 

DominantPole⁡sys1,p1,controller=Π

Warning, controller synthesis requires negative gain(s)

−2878,−6118,52−1944,52+1944,−3−2⁢I,−3+2⁢I

(7)
> 

PIpars≔DominantPole⁡sys1,p1,controller=Π,returntype=record

Warning, controller synthesis requires negative gain(s)

PIpars≔Recordpacked⁡Kp=−2878,Ki=−6118,closedPoles=52−1944,52+1944,−3−2⁢I,−3+2⁢I

(8)
> 

PIsys≔DominantPole⁡sys1,p1,controller=Π,returntype=system:

Warning, controller synthesis requires negative gain(s)

> 

PrintSystem⁡PIsys

Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=−287⁢s−6118⁢s

(9)
• 

Get the closed-loop poles

> 

zpksys≔PIDClosedLoop⁡sys1,PIsys,outputtype=zpk:

> 

PrintSystem⁡zpksys

Zero Pole Gaincontinuous1 output(s); 1 input(s)inputvariable=y1_ref⁡soutputvariable=y1⁡sz1,1=−611287,−1p1,1=−3−2⁢I,−3+2⁢I,52−1944,52+1944k1,1=−2878

(10)

Symbolic systems

> 

sys2≔NewSystem⁡s+as4+5⁢s3+s2+b⁢s+12:

> 

p2≔−3+b⁢I,−3−b⁢I,−7:

• 

Get a sequence of two lists with the PID controller gains and closed-loop poles

> 

DominantPole⁡sys2,p2

−b4−53⁢b2+2238⁢a2+6⁢b4−b3+17⁢b2−51⁢b−14289⁢a+7⁢b2+9⁢b2+b+345−7+a⁢a2+b2−6⁢a+9,−7⁢b2+9⁢b2−54⁢a2+b2+b+345⁢a−56⁢b2−516−7+a⁢a2+b2−6⁢a+9,−14⁢b2−b+357⁢a2+b4+53⁢b2−2238⁢a−7⁢b4+315⁢b2+3402−7+a⁢a2+b2−6⁢a+9,−7,−3+I⁢b,−3−I⁢b,4⁢a3+4⁢a⁢b2−52⁢a2−28⁢b2+a6⁢b2+a4⁢b4−12⁢a5⁢b2−6⁢a3⁢b4−38⁢a6+a5⁢b−40⁢a4⁢b2+a3⁢b3−47⁢a2⁢b4+631⁢a5−13⁢a4⁢b+799⁢a3⁢b2−7⁢a2⁢b3+168⁢a⁢b4−3419⁢a4+51⁢a3⁢b−1306⁢a2⁢b2+784⁢b4+4473⁢a3−63⁢a2⁢b−6300⁢a⁢b2+19773⁢a2+14112⁢b2−70308⁢a+63504+204⁢a−252a3+a⁢b2−13⁢a2−7⁢b2+51⁢a−63,−−4⁢a3−4⁢a⁢b2+52⁢a2+28⁢b2+a6⁢b2+a4⁢b4−12⁢a5⁢b2−6⁢a3⁢b4−38⁢a6+a5⁢b−40⁢a4⁢b2+a3⁢b3−47⁢a2⁢b4+631⁢a5−13⁢a4⁢b+799⁢a3⁢b2−7⁢a2⁢b3+168⁢a⁢b4−3419⁢a4+51⁢a3⁢b−1306⁢a2⁢b2+784⁢b4+4473⁢a3−63⁢a2⁢b−6300⁢a⁢b2+19773⁢a2+14112⁢b2−70308⁢a+63504−204⁢a+252a3+a⁢b2−13⁢a2−7⁢b2+51⁢a−63

(11)
> 

sys3≔NewSystem⁡s+as3+s2+b⁢s+c:

> 

p3≔−2+I,−2−I:

• 

Get a record with the PI controller gains and closed-loop poles

> 

PIrec≔DominantPole⁡sys3,p3,controller=Π,returntype=record

PIrec≔Recordpacked⁡Kp=4⁢b−c+13⁢a−5⁢b−35a2−4⁢a+5,Ki=5⁢b+35⁢a−5⁢c−75a2−4⁢a+5,closedPoles=−2+I,−2−I,3⁢a2−12⁢a+15+−4⁢a4⁢b−19⁢a4+16⁢a3⁢b+4⁢a3⁢c+100⁢a3−20⁢a2⁢b−16⁢a2⁢c−146⁢a2+20⁢a⁢c−60⁢a+2252⁢a2−4⁢a+5,−−3⁢a2+−4⁢a4⁢b−19⁢a4+16⁢a3⁢b+4⁢a3⁢c+100⁢a3−20⁢a2⁢b−16⁢a2⁢c−146⁢a2+20⁢a⁢c−60⁢a+225+12⁢a−152⁢a2−4⁢a+5

(12)
• 

Get the PI controller transfer function

> 

PIsys≔DominantPole⁡sys3,p3,controller=Π,returntype=system:

> 

PrintSystem⁡PIsys

Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=4⁢a⁢b−a⁢c+13⁢a−5⁢b−35⁢s+5⁢a⁢b+35⁢a−5⁢c−75a2−4⁢a+5⁢s

(13)
• 

Get the closed-loop poles

> 

zpksys≔PIDClosedLoop⁡sys3,PIsys,outputtype=zpk:

> 

PrintSystem⁡zpksys

Zero Pole Gaincontinuous1 output(s); 1 input(s)inputvariable=y1_ref⁡soutputvariable=y1⁡sz1,1=−a,−5⁢a⁢b+7⁢a−c−154⁢a⁢b−a⁢c+13⁢a−5⁢b−35p1,1={[−2+I, −2−I, 3⁢a2−12⁢a+15+−4⁢a4⁢b−19⁢a4+16⁢a3⁢b+4⁢a3⁢c+100⁢a3−20⁢a2⁢b−16⁢a2⁢c−146⁢a2+20⁢a⁢c−60⁢a+2252⁢a2−4⁢a+5, −−3⁢a2+−4⁢a4⁢b−19⁢a4+16⁢a3⁢b+4⁢a3⁢c+100⁢a3−20⁢a2⁢b−16⁢a2⁢c−146⁢a2+20⁢a⁢c−60⁢a+225+12⁢a−152⁢a2−4⁢a+5]k1,1=4⁢a⁢b−14⁢a⁢c+134⁢a−54⁢b−354a2−4⁢a+5

(14)

See Also

ControlDesign

ControlDesign[CohenCoon]

ControlDesign[GainPhaseMargin]

ControlDesign[ZNFreq]

ControlDesign[ZNTimeModified]