# loopshapingPID
选择 pid 控制器的参数 (并联形式),频率
函数库: TyControlSystems
# 描述
选择 pid 控制器的参数使开环传函数 L = PC 在频率 ω 处的 Nyquist 曲线与 T = PC / (1+PC) 的幅值为 Mt 时的圆相切。 ϕt 表示实轴与切点之间的正夹角,以度数为单位。
对于具有惯性的过程,选择 Mt 和 ϕt 的默认值是为了给出良好的设计,对于更简单的过程可能需要调优。
所得控制器的增益通常随着 ω 和 Mt 的增加而增加。
# 语法
C, kp, ki, kd, CF = loopshapingPID(P0, ω; form, Mt, ϕt, lb, ub, Tf, verbose, F)
# 说明
loopshapingPID 通过调整 PID 控制器参数使开环传函数 L = PC 在频率 ω 处的 Nyquist 曲线与 T = PC/(1+PC) 的幅值为 Mt 时的圆相切。ϕt 表示实轴与切点之间的正夹角,以度数为单位。
Mt 是闭环系统幅频特性的谐振峰值(最大幅值)。通过使 Nyquist 曲线与 Mt 圆相切,可以确保闭环系统在频率 ω 处具有准确的幅值 Mt,并且由于相切条件,该点是幅频特性的极值点(通常是最大值)。Mt 影响了系统的超调量和阻尼特性。
频率 ω 是谐振频率,即闭环系统响应达到峰值时的频率。通过选择 ω,可以调整系统的带宽和响应速度。
角度 ϕt 定义了切点处开环频率响应的相位。这个相位角影响了系统的稳定性和鲁棒性,并与PID控制器的相位贡献相关。通过适当选择 Mt 和 ϕt,可以间接确保足够的相位裕度和增益裕度,提高系统稳定性。
相切条件意味着在频率 ω 处,闭环幅值响应是平坦的(即导数为零),这表明系统对该频率附近的参数变化最不敏感,从而增强了鲁棒性。同时,与 Mt 圆相切通常对应着闭环灵敏度函数的最小化,减少了系统对扰动和模型不确定性的敏感性。
# 示例
通过指定频率确定 PID 控制器参数
考虑以下被控对象模型
using TyControlSystems
using TyPlot
pkg_dir = pkgdir(TyControlSystems)
source_path = pkg_dir * "/examples/resources/System Synthesis/Classical Control Method/LoopshapingPID/DoubleMassModel.jl"
include(source_path)
sys;
ω = 100;
根据系统在给定频率下的响应特性计算PID控制器
C, kp, ki, kd, CF = loopshapingPID(tf(sys), ω);
C为控制器对象,CF为控制器与被控对象的串联,可视为系统的开环传递函数。
查看闭环系统的阶跃响应
csys = feedback(CF)
step(csys)
xlim(0,3e-12)

通过指定频率及对应的幅值相角确定控制器
考虑以下被控对象模型
using TyControlSystems
using TyPlot
pkg_dir = pkgdir(TyControlSystems)
source_path = pkg_dir * "/examples/resources/System Synthesis/Classical Control Method/LoopshapingPID/DoubleMassModel.jl"
include(source_path)
sys;
ω = 5;
Mt = 1.3;
phit = 80;
根据系统在给定频率下的响应特性计算PID控制器
C, kp, ki, kd, CF = loopshapingPID(tf(sys), ω; Mt, phit);
C为控制器对象,CF为控制器与被控对象的串联,可视为系统的开环传递函数。
查看闭环系统的阶跃响应
csys = feedback(CF)
step(csys)
xlim(0,1e-8)

# 输入参数
P0 - 动态系统传递函数模型 | 零极点增益模型 | 状态空间模型
ω - 谐振频率正实数
谐振频率,即闭环系统响应达到峰值时的频率,指定为正实数。通过选择 ω,可以调整系统的带宽和响应速度。
数据类型: Float | Int
# 名称-值对组参数
form - PID 控制器的形式字符串 | 符号
所生成 PID 控制器的形式,指定为以下字符串或符号之一::standard、:parallel,默认为 :standard。
数据类型: String | Symbol
Mt - 谐振峰值正实数
闭环系统幅频特性的谐振峰值(最大幅值),指定为正实数,默认为 1.3。通过使 Nyquist 曲线与 Mt 圆相切,可以确保闭环系统在频率 ω 处具有准确的幅值 Mt,并且由于相切条件,该点是幅频特性的极值点(通常是最大值)。通过选择 Mt,可以控制系统的超调量和阻尼特性。
数据类型: Float | Int
ϕt - 相位条件实数
角度 ϕt 定义了切点处开环频率响应的相位,指定为实数,默认为 75。相位条件 ϕt 影响了系统的稳定性和鲁棒性,并与 PID 控制器的相位贡献相关。
数据类型: Float | Int
lb - PID 控制器微分增益下界实数
PID 控制器微分增益的下界,以 10 为底的对数表示,指定为实数,默认为 -10。
数据类型: Float | Int
ub - PID 控制器微分增益上界实数
PID 控制器微分增益的上界,以 10 为底的对数表示,指定为实数,默认为 10。
数据类型: Float | Int
Tf - 二阶滤波器的时间常数实数
二阶滤波器的时间常数或参数,指定为实数,默认为 ω/1000。Tf 可以使所生成的 PID 控制器严格因果,对于物理控制器,所设置的 Tf 通常比默认值慢。所使用二阶滤波器的形式由关键字参数 F 决定。
数据类型: Float | Int
verbose - 参数检测标志布尔值
进行参数检测的标志位,指定为布尔值,默认为 true。
数据类型: Bool
F - 预设计滤波器传递函数模型 | 零极点增益模型 | 状态空间模型
# 输出参数
C - PID 控制器单自由度并联型 PID 控制器 | 单自由度标准型 PID 控制器模型
PID 控制器,返回为单自由度并联型 PID 控制器或单自由度标准型 PID 控制器模型,其类型由 form 关键字参数指定。
kp - PID 控制器的比例增益实数
PID 控制器的比例增益,返回为实数。
数据类型: Float | Int
ki - PID 控制器的积分系数实数
PID 控制器的积分增益或积分时间常数,返回为实数,其含义由 form 关键字参数决定。
数据类型: Float | Int
kd - PID 控制器的微分系数实数
PID 控制器的微分增益或微分时间常数,返回为实数,其含义由 form 关键字参数决定。
数据类型: Float | Int
CF - 开环系统传递函数模型 | 零极点增益模型 | 状态空间模型
开环系统,返回为与 P0 类型相同的动态系统模型。