pidstd
标准形式的PID控制器
描述
使用pidstd
创建标准形式的PID控制器对象,或进行转换动态系统模型到标准PID控制器形式。
的pidstd
控制器模型对象可以表示连续时间或离散时间的标准形式PID控制器。
连续时间——
离散时间——
在这里:
Kp是比例增益。
T我是积分时间。
Td是时间的导数。
N为一阶导数滤波器除数。
如果(z)是离散时间控制器中计算积分的积分器方法。
DF(z)是计算离散时间控制器中导数滤波器的积分器方法。
然后,可以将该对象与控制体系结构的其他组件(如设备、执行器和传感器)结合起来,以表示控制系统。有关更多信息,请参见使用模型对象的控制系统建模.
您可以通过直接指定控制器参数,或通过转换另一类型的模型(如传递函数模型)来创建PID控制器模型对象特遣部队
)变为PID控制器形式。
创建
你可以pidstd
控制器以下列方式之一建模。
创建一个模型
pidstd
函数。使用
pidtune
功能调优PID控制器的一个工厂模型。参数指定基准标准形式的PID控制器类型C0
的论证pidtune
函数。例如:Sys = zpk([],[-1 -1 -1],1);C0 = pidstd(1,1,1);C = pidtune(sys,C0)
交互式整定PID控制器的工厂模型使用:
语法
描述
输入参数
sys
- - - - - -成比例增加
动态系统模型|模型组
动态系统,指定为SISO动态系统模型或SISO动态系统模型的数组。您可以使用的动态系统包括:
属性
Kp
- - - - - -成比例增加
1
(默认)|标量|向量|矩阵|realp
对象
比例增益,指定为实数和有限值或可调对象。
要创建一个
pidstd
对象,则使用实数和有限标量值。的数组
pidstd
控制器对象使用实数和有限值的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).要创建可调增益计划控制器模型,请使用使用创建的可调曲面
tunableSurface
.
“透明国际”
- - - - - -积分时间
正
(默认)|标量|向量|矩阵|realp
对象
整数时间,指定为实数和正值或可调对象。
要创建一个
pidstd
控制器对象,则使用实数和正标量值。的数组
pidstd
控制器对象,使用实数和正数的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).要创建可调增益计划控制器模型,请使用使用创建的可调曲面
tunableSurface
.
道明
- - - - - -微分时间
0
(默认)|标量|向量|矩阵|realp
对象
导数时间,指定为实数、有限且非负值或可调对象。
要创建一个
pidstd
控制器对象使用实数、有限且非负标量值。的数组
pidstd
控制器对象使用实数、有限值和非负值组成的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).要创建可调增益计划控制器模型,请使用使用创建的可调曲面
tunableSurface
.
N
- - - - - -导数滤波器除数
正
(默认)|标量|向量|矩阵|realp
对象
一阶导数滤波器除数,指定为实数和正数或可调对象。
要创建一个
pidstd
控制器对象,则使用实数和正标量值。的数组
pidstd
控制器对象,如果是实数和正数,则使用数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).要创建可调增益计划控制器模型,请使用使用创建的可调曲面
tunableSurface
.
当N
=正
,控制器对导数动作没有过滤器。
IFormula
- - - - - -离散时间控制器中积分的计算方法
“ForwardEuler”
(默认)|“BackwardEuler”
|“梯形”
离散积分器公式如果(z)为离散时间的积分器pidstd
控制器:
指定IFormula
作为以下之一:
“ForwardEuler”
- - - - - -如果(z) =该公式适用于小采样时间,其中奈奎斯特极限比控制器的带宽大。对于较大的采样时间,
ForwardEuler
公式可以导致不稳定,即使离散一个连续时间稳定的系统。“BackwardEuler”
- - - - - -如果(z) =的一个优势
BackwardEuler
用这个公式对一个稳定的连续时间系统进行离散化,总能得到一个稳定的离散时间结果。“梯形”
- - - - - -如果(z) =的一个优势
梯形
用这个公式对一个稳定的连续时间系统进行离散化,总能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形
公式得到离散系统的频域特性与相应连续时间系统的频域特性最接近的匹配。
当C
是一个连续时间控制器,IFormula
是”
.
DFormula
- - - - - -离散时间控制器中导数的计算方法
“ForwardEuler”
(默认)|“BackwardEuler”
|“梯形”
离散积分器公式DF(z)为离散时间的导数滤波器pidstd
控制器:
指定DFormula
作为以下之一:
“ForwardEuler”
- - - - - -DF(z) =该公式适用于小采样时间,其中奈奎斯特极限比控制器的带宽大。对于较大的采样时间,
ForwardEuler
公式可以导致不稳定,即使离散一个连续时间稳定的系统。“BackwardEuler”
- - - - - -DF(z) =的一个优势
BackwardEuler
用这个公式对一个稳定的连续时间系统进行离散化,总能得到一个稳定的离散时间结果。“梯形”
- - - - - -DF(z) =的一个优势
梯形
用这个公式对一个稳定的连续时间系统进行离散化,总能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形
公式得到离散系统的频域特性与相应连续时间系统的频域特性最接近的匹配。的
梯形
值DFormula
是不是有一个pidstd
无导数滤波器的控制器(N = Inf
).
当C
是一个连续时间控制器,DFormula
是”
.
InputDelay
- - - - - -输入延迟
0(默认)
此属性是只读的。
系统输入延时。InputDelay
a总是0吗pidstd
控制器对象。
OutputDelay
- - - - - -输出延迟
0(默认)
此属性是只读的。
系统输出时延。OutputDelay
a总是0吗pidstd
控制器对象。
Ts
- - - - - -样品时间
0
(默认)|积极的标量
采样时间,指定为:
0
对于连续时间系统。一种表示离散时间系统采样周期的正标量。指定
Ts
指定的时间单位TimeUnit
财产。
PID控制器模型不支持不指定采样时间(Ts = -1
).
离散化控制器的离散积分器公式依赖于汇集
您使用的离散化方法,如本表所示。
汇集 离散化方法 |
IFormula |
DFormula |
---|---|---|
“zoh” |
ForwardEuler |
ForwardEuler |
“呸” |
梯形 |
梯形 |
“tustin” |
梯形 |
梯形 |
“冲动” |
ForwardEuler |
ForwardEuler |
“匹配” |
ForwardEuler |
ForwardEuler |
有关汇集
离散化方法,见汇集
.
如果你需要不同的离散积分器公式,你可以通过直接设置离散控制器Ts
,IFormula
,DFormula
到想要的值。然而,该方法不计算新的增益和滤波器常数值离散化控制器。因此,该方法在连续时间和离散时间PID控制器之间的匹配可能比传统方法差汇集
.
TimeUnit
- - - - - -时间变量单位
“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
|……
时间变量单位,指定为以下之一:
“纳秒”
微秒的
的毫秒
“秒”
“分钟”
“小时”
“天”
“周”
“月”
“年”
改变TimeUnit
对其他属性没有影响,但会改变整个系统行为。使用chgTimeUnit
在不修改系统行为的情况下在时间单位之间进行转换。
InputName
- - - - - -输入通道名称
”(默认)|特征向量
输入通道名,指定为以下之一:
一个字符向量。
”
,没有指定名称。
或者,指定名称错误
到控制器模型的输入C
如下。
C.InputName =“错误”;
你可以使用速记符号u
请参阅InputName
财产。例如,C.u
等于C.InputName
.
使用InputName
:
确定模型显示和图上的通道。
在连接模型时指定连接点。
InputUnit
- - - - - -输入通道单位
”
(默认)|特征向量
输入通道单位,指定为以下之一:
一个字符向量。
”
,没有指定单位。
使用InputUnit
指定输入信号单位。InputUnit
对系统行为没有影响。
例如,指定浓度单位《摩尔/ m ^ 3》
到控制器模型的输入C
如下。
C.InputUnit =《摩尔/ m ^ 3》;
InputGroup
- - - - - -输入通道组
结构
输入通道组。PID控制器模型不需要此属性。
默认情况下,InputGroup
是一个没有字段的结构。
OutputName
- - - - - -输出通道名称
”
(默认)|特征向量
输出通道名,指定为以下之一:
一个字符向量。
”
,没有指定名称。
例如,分配名称“控制”
到控制器模型的输出C
如下。
C.OutputName =“控制”;
您也可以使用简写符号y
请参阅OutputName
财产。例如,研讨会
等于C.OutputName
.
使用OutputName
:
确定模型显示和图上的通道。
在连接模型时指定连接点。
OutputUnit
- - - - - -输出通道单元
”
(默认)|特征向量
输出通道单位,指定为以下之一:
一个字符向量。
”
,没有指定单位。
使用OutputUnit
指定输出信号单位。OutputUnit
对系统行为没有影响。
例如,分配单元“伏”
到控制器模型的输出C
如下。
C.OutputUnit =“伏”;
OutputGroup
- - - - - -输出通道组
结构
输出通道组。PID控制器模型不需要此属性。
默认情况下,OutputGroup
是一个没有字段的结构。
笔记
- - - - - -指定的文本
{}
(默认)|特征向量|字符向量的单元格数组
希望与系统关联的用户指定的文本,指定为字符向量或字符向量的单元格数组。例如,“系统是MIMO”
.
用户数据
- - - - - -用户指定的数据
[]
(默认)|任何MATLAB®数据类型
您想要与系统关联的用户指定的数据,指定为任何MATLAB数据类型。
的名字
- - - - - -系统名称
”
(默认)|特征向量
系统名称,指定为字符向量。例如,“system_1”
.
SamplingGrid
- - - - - -模型阵列的采样网格
结构数组
用于模型数组的采样网格,指定为结构数组。
使用SamplingGrid
跟踪与模型数组中每个模型相关的变量值,包括已识别的线性时不变(IDLTI)模型数组。
将结构的字段名设置为采样变量的名称。将字段值设置为与数组中每个模型关联的采样变量值。所有采样变量必须是数值标量,所有采样值的数组必须与模型数组的尺寸相匹配。
例如,你可以创建一个11 × 1的线性模型数组,sysarr
,通过对线性时变系统进行快照T = 0:10
.下面的代码使用线性模型存储时间样本。
sysarr。SamplingGrid = struct(“时间”0:10)
类似地,你可以创建一个6乘9的模型数组,米
,通过独立抽样两个变量,ζ
而且w
.下面的代码映射(ζ,w)
值米
.
[zeta,w] = ndgrid(zeta> <6个值,w > <9个值)“ζ”ζ,' w 'w)
当你显示米
,数组中的每个条目都包含相应的ζ
而且w
值。
米
(:: 1, - 1)(ζ= 0.3 w = 5) = 25 -------------- s ^ 2 + 3 s + 25米(:,:,2,1)[ζ= 0.35 w = 5] = 25 ---------------- s ^ 2 + 3.5 s + 25…
用于通过线性化Simulink生成的模型数组®在多个参数值或操作点建模时,软件进行填充SamplingGrid
自动使用与数组中每个条目对应的变量值。例如,Simulink控制设计™命令线性化
(Simulink控制设计)而且slLinearizer
(Simulink控制设计)填充SamplingGrid
自动。
默认情况下,SamplingGrid
是一个没有字段的结构。
对象的功能
下面的列表包含您可以使用的函数的一个代表性子集pidstd
模型。一般来说,任何函数都适用于动态系统模型适用于pidstd
对象。
线性分析
控制器设计
pidtune |
线性植物模型的PID整定算法 |
rlocus |
动态系统的根轨迹图 |
pidstddata |
标准型PID控制器的访问系数 |
make2DOF |
将1-DOF PID控制器转换为2-DOF控制器 |
pidTuner |
打开PID调谐器进行PID整定 |
tunablePID |
可调PID控制器 |
例子
创建连续时间标准表单PDF控制器
创建一个连续时间标准格式PDF控制器,其中包含比例和导数项,以及过滤器除数。为此,将积分时间设置为无穷大。将其他增益和滤波器除数常数设置为所需值。
Kp = 1;Ti = Inf;Td = 3;N = 6;C = pidstd(Kp,Ti,Td,N)
C = s Kp * (1 + Td * ------------) (Td/N)*s+1,其中Kp = 1, Td = 3, N = 6标准形式连续时间PDF控制器
显示器显示控制器类型、公式和参数值,并验证控制器是否有积分器项。
离散时间标准形式PI控制器
利用梯形离散化公式建立离散时间标准形式PI控制器。
若要创建离散时间PI控制器,请设置的值Ts
并利用离散化公式名称,值
语法。
C2 = pidstd(1,0.5,“t”, 0.1,“IFormula”,“梯形”)% Ts = 0.1s
C2 = 1 Ts*(z+1) Kp *(1 + ---- * --------) Ti 2*(z-1) with Kp = 1, Ti = 0.5, Ts = 0.1采样时间:0.1秒标准形式离散时间PI控制器
或者,您可以通过提供来创建相同的离散时间控制器Ts
作为所有四个PID参数之后的第五个输入参数,Kp
,“透明国际”
,道明
,N
.因为你只想要一个PI控制器,设置道明
到零和N
无限。
C2 = pidstd(5,2.4,0,Inf,0.1,“IFormula”,“梯形”)
C2 = 1 Ts*(z+1) Kp *(1 + ---- * --------) Ti 2*(z-1),其中Kp = 5, Ti = 2.4, Ts = 0.1采样时间:0.1秒标准形式离散时间PI控制器
显示屏显示C1
而且C2
都是一样的。
具有命名输入和输出的标准形式PID控制器
创建PID控制器时,需要设置动态系统属性InputName
而且OutputName
.方法将PID控制器与其他动态系统模型互连时,这是有用的连接
命令。
C = pidstd(1,2,3,“InputName”,“e”,“OutputName”,“u”)
C = 1 1 Kp *(1 + ---- *——+ Td * s) Ti s,其中Kp = 1, Ti = 2, Td = 3标准形式的连续时间PID控制器
显示器不显示PID控制器的输入和输出名称,但您可以检查属性值。例如,验证控制器的输入名称。
C.InputName
ans =1x1单元阵列{' e '}
标准形式PID控制器阵列
创建一个2 × 3的PI控制器网格,阵列行上的比例增益范围为1-2,列上的积分增益范围为5-9。
要构建PID控制器的数组,从表示增益的数组开始。
Kp = [1 1 1;2 2];Ti = [5:2:9;5:2:9];
将这些数组传递给pidstd
命令,该命令返回一个控制器数组。
pi_array = pidstd(Kp,Ti,“t”, 0.1,“IFormula”,“BackwardEuler”);大小(pi_array)
PID控制器的2x3阵列。每个PID有1个输出和1个输入。
或者,使用堆栈
命令来构建一个PID控制器数组。
创建PID控制器。
C = pidstd(1,5,0.1)
C = 1 1 Kp *(1 + ---- *——+ Td * s) Ti s,其中Kp = 1, Ti = 5, Td = 0.1标准形式的连续时间PID控制器
创建PIDF控制器。
Cf = pidstd(1,5,0.1,0.5)
Cf = 1 1 s Kp *(1 + ---- *——+ Td * ------------) Ti s (Td/N)*s+1,其中Kp = 1, Ti = 5, Td = 0.1, N = 0.5标准形式连续时间PIDF控制器
沿着第二个数组维度堆叠控制器。
pid_array = stack(2,C,Cf);
这个命令返回一个1 × 2的控制器数组。
大小(pid_array)
PID控制器的1x2数组。每个PID有1个输出和1个输入。
阵列中的所有PID控制器必须具有相同的采样时间、离散积分器公式和动态系统属性,如InputName
而且OutputName
.
将PID控制器从并联形式转换为标准形式
转换一个并行形式pid
控制器到标准形式。
并行PID形式表示控制器动作的总体比例,积分和导数增益Kp
,Ki
而且Kd
,和滤波器时间常数特遣部队
.控件可以将任何并行形式的控制器转换为标准形式pidstd
命令,条件是:
并行式控制器不是单纯的积分器。
的收益
Kp
,Ki
而且Kd
都有相同的符号。
例如,考虑以下并行形式的控制器。
Kp = 2;Ki = 3;Kd = 4;Tf = 5;C_par = pid(Kp,Ki,Kd,Tf)
C_par = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1,其中Kp = 2, Ki = 3, Kd = 4, Tf = 5并行形式的连续时间PIDF控制器。
使用将此控制器转换为标准形式pidstd
.
C_std = pidstd(C_par)
C_std = 1 1 s Kp *(1 + ---- *——+ Td * ------------) Ti s (Td/N)*s+1,其中Kp = 2, Ti = 0.667, Td = 2, N = 0.4标准形式连续时间PIDF控制器
将动态系统转换为标准形式PID控制器
将表示PID控制器的连续时间动态系统转换为标准pidstd
的形式。
下面的动态系统,有一个积分器和两个零,相当于一个PID控制器。
创建一个zpk
模型H.然后使用pidstd
获取命令HPID增益Kp
,“透明国际”
,道明
.
H = zpk([-1,-2],0,3);C = pidstd(H)
C = 1 1 Kp *(1 + ---- *——+ Td * s) Ti s,其中Kp = 9, Ti = 1.5, Td = 0.333标准形式的连续时间PID控制器
离散时间动态系统转换为标准形式PID控制器
将具有微分滤波器的PID控制器的离散时间动态系统转换为标准系统pidstd
的形式。
创建一个离散时间zpk
表示PIDF控制器(两个零和两个极点,包括积分器极点)的模型z
= 1)。
Sys = zpk([-0.5,-0.6],[1 -0.2],3,“t”, 0.1);
当你转换时sys
到PID形式,结果取决于你为转换指定的离散积分器公式。例如,使用默认值,ForwardEuler
,对于积分器和导数。
C = pidstd(sys)
C = 1 Ts 1 Kp * (1 + ---- * ------ + Td * ---------------) Ti z-1 (Td/N)+Ts/(z-1) with Kp = 2.75, Ti = 0.0458, Td = 0.00758, N = 0.0909, Ts = 0.1采样时间:0.1秒标准形式的离散时间PIDF控制器
对于这个特殊的动态系统,你不能写sys
在标准PID形式使用BackwardEuler
导数滤波器的公式。这样做会导致N
< 0,不允许。在这种情况下,pidstd
返回一个错误。
同样,你不能写sys
在标准PID形式使用梯形
公式。这样做的结果是消极的“透明国际”
而且道明
,这也是不允许的。
离散连续时间标准形PID控制器
对连续时间PID控制器进行离散化,设定积分和导数滤波公式。
创建一个连续时间的PIDF控制器,并使用零阶保持方法对其离散化汇集
命令。
Ccon = pidstd(1,2,3,4);Cdis1 = c2d(Ccon,0.1,“zoh”)
Cdis1 = 1 Ts 1 Kp * (1 + ---- * ------ + Td * ---------------) Ti z-1 (Td/N)+Ts/(z-1) with Kp = 1, Ti = 2, Td = 3.2, N = 4, Ts = 0.1采样时间:0.1秒标准形式的离散时间PIDF控制器
显示屏显示汇集
为离散时间控制器计算新的PID增益。
离散化控制器的离散积分器公式依赖于汇集
离散化方法。为zoh
方法,IFormula
而且DFormula
是ForwardEuler
.
Cdis1。如果或mula
ans = 'ForwardEuler'
Cdis1。DF或mula
ans = 'ForwardEuler'
如果你想使用不同于返回的公式汇集
,然后可以直接设置Ts
,IFormula
,DFormula
属性设置为所需的值。
Cdis2 = Ccon;Cdis2。Ts=0.1;Cdis2。如果或mula =“BackwardEuler”;Cdis2。DF或mula =“BackwardEuler”;
然而,这些命令不会为离散化控制器计算新的PID增益。要了解这一点,请检查Cdis2
然后比较系数Ccon
而且Cdis1
.
Cdis2
Cdis2 = 1 Ts*z 1 Kp * (1 + ---- * ------ + Td * -----------------) Ti z-1 (Td/N)+Ts*z/(z-1) with Kp = 1, Ti = 2, Td = 3, N = 4, Ts = 0.1采样时间:0.1秒标准形式的离散时间PIDF控制器
版本历史
在R2010b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。