ControlDesign
GainPhaseMargin
PID tuning based on gain-phase margin specifications
Calling Sequence
Parameters
Options
Description
Examples
References
GainPhaseMargin(sys, GM, PM, opts)
sys
-
System; system object
GM
realcons; desired gain margin
PM
realcons; desired phase margin
opts
(optional) equation(s) of the form option = value; specify options for the GainPhaseMargin command
controller = PI or PID
Specifies the controller type. The default value is PID.
decibels = true or false
Specifies whether the desired gain margin is given in decibels, i.e. 20⁢log10⁡GM. The default is the value of decibels in SystemOptions⁡decibels.
radians = true or false
Specifies whether the desired phase margin is given in radians. The default is the value of radians in SystemOptions⁡radians.
alpha = realcons and positive
Specifies the ratio between the derivative time and the integral time of the PID controller as Td=α⁢Ti, in the numerical solution, where Td=KdKp and Ti=KpKi. The default value is 14.
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 (or record) is specified, a list (or record) containing the controller parameters is returned. If system is specified, a System (DynamicSystems system object) containing the transfer function of the specified controller type (P, PI, PID) is returned. The default value is list.
The GainPhaseMargin calculates the controller parameters to meet the specified gain and phase margins. The gain-phase margin specifications correspond to a set of nonlinear equations based on the controller structure. The algorithm first tries to find a numerical solution to the original problem. If no such solution exists, an approximate analytical solution is used.
The numerical solution is found by solving the set of nonlinear equations associated to the selected controller type. For the PI controller, there are four equations (two magnitude equations and two phase equations) and four unknowns (two controller parameters and two crossover frequencies for gain and phase margins) to be solved for. For the PID controller, there are four equations as in the PI case but five unknowns (three controller parameters and the two crossover frequencies). In this case, one extra equation is provided by establishing a ratio between the PID integral and derivative times as Td=α⁢Ti. The ratio α is a design parameter whose value can be specified by the user. The default value of this parameter is 14 as suggested in Astrom et al. (1984), Hang et al. (1991) and Ho et al. (1999).
If a numerical solution to the original problem does not exist for the selected controller type and the specified gain-phase margins, then the approximate analytical solutions for the PI and PID controller designs are used as described in Ho et al. (1995). Since the analytical method is based on lower order approximations of the system, the performance of the designed controller must be verified and fine tuned if necessary.
Note: The numerical solution is applied to both stable and unstable systems, but the approximate analytical solution is only applicable to stable systems.
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 GainPhaseMargin command returns 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
with⁡ControlDesign:
with⁡DynamicSystems:
Build a transfer function for a SISO system sys1
sys1≔NewSystem⁡2⁢s+15s4+8⁢s3+20⁢s2+21⁢s+6:
GainMargin⁡sys1,decibels=false
1.500000001,1.732050808
PhaseMargin⁡sys1
19.84519766,1.395724232
Design a PI controller (desired gain margin equal to 25 decibels and desired phase margin equal to 60 degrees)
PIpars≔GainPhaseMargin⁡sys1,25,60,controller=Π,decibels=true,radians=false
PIpars≔0.03833922655,0.01796181549
PI controller transfer function
Gc≔GainPhaseMargin⁡sys1,25,60,controller=Π,decibels=true,radians=false,returntype=system:
PrintSystem⁡Gc
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=0.4684970749⁢0.08183450571⁢s+0.03833922655s
sys_loop≔NewSystem⁡sys1:-tf1,1⁢Gc:-tf1,1:
GainMargin⁡sys_loop,decibels=true
28.13997618,1.420339299
PhaseMargin⁡sys_loop,radians=false
83.37149660,0.08945084112
Design a PID controller with the same gain-phase margin specifications
pid≔GainPhaseMargin⁡sys1,25,60,controller=PID,decibels=true,radians=false,returntype=record
pid≔Recordpacked⁡Kp=0.05930671873,Ki=0.04693334343,Kd=0.08729712630
PID controller transfer function
Gc≔GainPhaseMargin⁡sys1,25,60,controller=PID,decibels=true,radians=false,returntype=system:
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=0.7913663821⁢0.1103118963⁢s2+0.07494217606⁢s+0.05930671873s
37.51046156,5.276553296
67.31441788,0.2025962852
Build a transfer function for a SISO system sys2
sys2≔NewSystem⁡120s+25:
GainMargin⁡sys2,decibels=false
0.7694501862,1.453085056
PhaseMargin⁡sys2
−19.25926810,1.669405996
Gc≔GainPhaseMargin⁡sys2,25,60,controller=Π,decibels=true,radians=false,factored=false,returntype=system:
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=0.9294072756⁢0.02018355823⁢s+0.01875874587s
sys_loop≔NewSystem⁡sys2:-tf1,1⁢Gc:-tf1,1:
25.82711900,1.049870847
84.66335908,0.06536623176
Gc≔GainPhaseMargin⁡sys2,25,60,controller=PID,decibels=true,radians=false,factored=true,returntype=system:
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=1.114039676⁢0.02145238872⁢s2+0.02270181307⁢s+0.02529072048s
32.12602020,2.176177693
80.45980564,0.1044325480
Build a transfer function for a SISO system sys3
sys3≔NewSystem⁡120⁢s−1s+25:
GainMargin⁡sys3,decibels=false
1.812938848,3.142987870
PhaseMargin⁡sys3
38.06739594,2.454043910
PIpars3≔GainPhaseMargin⁡sys3,25,60,controller=Π,decibels=true,radians=false,factored=true,returntype=record
PIpars3≔Recordpacked⁡K=−0.003864514182,Ti=0.4960037565
Gc≔GainPhaseMargin⁡sys3,25,60,controller=Π,decibels=true,radians=false,factored=true,returntype=system
Gc≔Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡s
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=2.016113763⁢−0.001916813551⁢s−0.003864514182s
sys_loop≔NewSystem⁡sys3:-tf1,1⁢Gc:-tf1,1:
25.57023890,0.5471290232
84.97193810,0.02921732225
params≔GainPhaseMargin⁡sys3,25,60,controller=PID,decibels=true,radians=false,factored=false
params≔−0.005161515110,−0.01070504302,−0.002515442705
Kp≔params1;Ki≔params2;Kd≔params3
Kp≔−0.005161515110
Ki≔−0.01070504302
Kd≔−0.002515442705
Gc≔NewSystem⁡Kp+Kis+Kd⁢s:
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=−0.002515442705⁢s2−0.005161515110⁢s−0.01070504302s
23.50129588,0.5516567517
83.06374234,0.04012814203
[1] K. J. Astrom and T. Hagglund, Automatic Tuning of Simple Regulators with Specifications on Phase and Amplitude Margins, Automatica, Vol. 20, No. 5, pp. 645-651, 1984.
[2] C. C. Hang, K. J. Astrom, and W. K. Ho, Refinements of the Ziegler-Nichols Tuning Formula, IEE Proceedings D, Control Theory and Applications, Vol. 138, No. 2, pp. 111-118, 1991.
[3] W. K. Ho, K. W. Lim, C. C. Hang and L. Y. Ni, Getting more Phase Margin and Performance out of PID Controllers, Automatica, Vol. 35, No. 9, pp. 1579-1585, 1999.
[4] W. K. Ho, C. C. Hang, L. S. Cao, Tuning of PID Controllers Based on Gain and Phase Margin Specifications Automatica, Vol 31, No. 3, pp. 497-502, 1995.
See Also
ControlDesign[CohenCoon]
ControlDesign[ZNFreq]
ControlDesign[ZNTimeModified]
Download Help Document