pid
PID控制器并联形式
描述
使用pid
创建并行形式的比例-积分-导数(PID)控制器模型对象,或进行转换动态系统模型并联PID控制器形式。
的pid
控制器模型对象可以表示连续时间或离散时间的并行形式的PID控制器。
连续时间-
离散时间——
在这里:
Kp是比例增益。
K我是积分增益。
Kd是导数增益。
Tf为一阶导数滤波时间常数。
如果(z)是离散控制器中计算积分的积分器方法。
DF(z)是计算离散控制器中导数滤波器的积分器方法。
然后,您可以将该对象与控制体系结构的其他组件结合起来,例如设备、执行器和传感器,以表示您的控制系统。有关更多信息,请参见使用模型对象进行控制系统建模.
您可以通过直接指定控制器参数或转换其他类型的模型(例如传递函数模型)来创建PID控制器模型对象特遣部队
)到PID控制器形式。
创建
你可以获得pid
控制器以下列方式之一建模。
属性创建模型
pid
函数。使用
pidtune
函数来调整PID控制器的工厂模型。控件中指定1-DOF PID控制器类型类型
的参数pidtune
函数得到一个并行形式的PID控制器。例如:Sys = zpk([],[-1 -1 -1],1);C = pidtune(sys,“PID”);
交互整定PID控制器的工厂模型使用:
语法
描述
输入参数
sys
- - - - - -成比例增加
动态系统模型|模型组
动态系统,指定为SISO动态系统模型或SISO动态系统模型的数组。您可以使用的动态系统包括:
属性
Kp
- - - - - -成比例增加
1
(默认)|标量|向量|矩阵|realp
对象
比例增益,指定为实数和有限值或可调对象。
要创建
pid
控制器对象,使用一个实数和有限标量值。的数组创建
pid
控制器对象,使用实数和有限值的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).若要创建可调增益调度控制器模型,请使用使用
tunableSurface
.
Ki
- - - - - -积分增益
0
(默认)|标量|向量|矩阵|realp
对象
积分增益,指定为实数和有限值或可调对象。
要创建
pid
控制器对象,使用一个实数和有限标量值。的数组创建
pid
控制器对象,使用实数和有限值的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).若要创建可调增益调度控制器模型,请使用使用
tunableSurface
.
Kd
- - - - - -微分增益
0
(默认)|标量|向量|矩阵|realp
对象
导数增益,指定为实数和有限值或可调对象。
要创建
pid
控制器对象,使用一个实数和有限标量值。的数组创建
pid
控制器对象,使用实数和有限值的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).若要创建可调增益调度控制器模型,请使用使用
tunableSurface
.
特遣部队
- - - - - -导数滤波时间常数
0
(默认)|标量|向量|矩阵|realp
对象
一阶导数滤波器的时间常数,指定为实数和有限值或可调对象。
要创建
pid
控制器对象,使用一个实数和有限标量值。的数组创建
pid
控制器对象,使用实数和有限值的数组。若要创建可调控制器模型,请使用可调参数(
realp
)或广义矩阵(genmat
).若要创建可调增益调度控制器模型,请使用使用
tunableSurface
.
IFormula
- - - - - -离散控制器中计算积分的方法
“ForwardEuler”
(默认)|“BackwardEuler”
|“梯形”
离散积分公式如果(z)为离散时间积分器pid
控制器:
指定IFormula
作为下列之一:
“ForwardEuler”
- - - - - -如果(z) =该公式适用于小采样时间,其中奈奎斯特极限与控制器带宽相比较大。对于更大的采样时间,
ForwardEuler
公式会导致不稳定性,即使离散一个连续时间稳定的系统。“BackwardEuler”
- - - - - -如果(z) =的一个优势
BackwardEuler
用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。“梯形”
- - - - - -如果(z) =的一个优势
梯形
用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形
公式给出离散系统的频域特性与相应的连续时间系统频域特性最接近的匹配。
当C
是连续时间控制器,IFormula
是”
.
DFormula
- - - - - -离散时间控制器中导数的计算方法
“ForwardEuler”
(默认)|“BackwardEuler”
|“梯形”
离散积分公式DF(z)为离散时间的导数滤波器pid
控制器:
指定DFormula
作为下列之一:
“ForwardEuler”
- - - - - -DF(z) =该公式适用于小采样时间,其中奈奎斯特极限与控制器带宽相比较大。对于更大的采样时间,
ForwardEuler
公式会导致不稳定性,即使离散一个连续时间稳定的系统。“BackwardEuler”
- - - - - -DF(z) =的一个优势
BackwardEuler
用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。“梯形”
- - - - - -DF(z) =的一个优势
梯形
用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形
公式给出离散系统的频域特性与相应的连续时间系统频域特性最接近的匹配。的
梯形
值DFormula
是一个不可用的pid
没有导数滤波器的控制器(Tf = 0
).
当C
是连续时间控制器,DFormula
是”
.
InputDelay
- - - - - -输入延迟
0(默认)
此属性是只读的。
系统输入的时间延迟。InputDelay
a总是0pid
控制器对象。
OutputDelay
- - - - - -输出延迟
0(默认)
此属性是只读的。
系统输出的时间延迟。OutputDelay
a总是0pid
控制器对象。
Ts
- - - - - -样品时间
0
(默认)|积极的标量
采样时间,指定为:
0
对于连续时间系统。表示离散时间系统采样周期的正标量。指定
Ts
方法指定的时间单位TimeUnit
财产。
PID控制器型号不支持不指定采样时间(金宝appTs = -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生成的模型数组金宝app®在多个参数值或工作点建模,软件进行填充SamplingGrid
自动使用对应于数组中每个条目的变量值。例如,金宝appSimulink控制设计™命令线性化
(金宝appSimulink控制设计)而且slLinearizer
(金宝appSimulink控制设计)填充SamplingGrid
自动。
默认情况下,SamplingGrid
是一个没有字段的结构。
例子
PDF控制器
创建一个具有比例增益和导数增益的连续时间控制器,并在导数项上创建一个过滤器。为此,将积分增益设置为零。将其他增益和滤波时间常数设置为所需值。
Kp = 1;Ki = 0;%无积分器Kd = 3;Tf = 0.5;C = pid(Kp,Ki,Kd,Tf)
C = s Kp + Kd * -------- Tf*s+1与Kp = 1, Kd = 3, Tf = 0.5连续时间PDF控制器的并行形式。
显示器显示控制器类型、公式和参数值,并验证控制器没有积分器项。
离散时间PI控制器
用梯形离散公式创建一个离散时间PI控制器。
如果要创建离散PI控制器,请设置的值Ts
并采用离散化公式名称,值
语法。
C1 = pid(5,2.4,“t”, 0.1,“IFormula”,“梯形”)% Ts = 0.1s
C1 = Ts*(z+1) Kp + Ki * -------- 2*(z-1) with Kp = 5, Ki = 2.4, Ts = 0.1采样时间:0.1秒离散时间PI控制器并联形式。
或者,您也可以创建相同的离散时间控制器Ts
作为四个PID参数之后的第五个输入参数,Kp
,Ki
,Kd
,特遣部队
.因为你只想要一个PI控制器,设置Kd
而且特遣部队
为零。
C2 = pid(5,2.4,0,0,0.1,“IFormula”,“梯形”)
C2 = Ts*(z+1) Kp + Ki * -------- 2*(z-1) with Kp = 5, Ki = 2.4, Ts = 0.1采样时间:0.1秒离散时间PI控制器并行形式。
显示屏显示C1
而且C2
都是一样的。
具有命名输入和输出的PID控制器
在创建PID控制器时,需要设置系统的动态属性InputName
而且OutputName
.这是有用的,例如,当你互连PID控制器与其他动态系统模型使用连接
命令。
C = pid(1,2,3,“InputName”,“e”,“OutputName”,“u”)
C = 1 Kp + Ki *—+ Kd * s s与Kp = 1, Ki = 2, Kd = 3并行形式的连续时间PID控制器。
显示器不显示PID控制器的输入和输出名称,但您可以检查属性值。例如,验证控制器的输入名称。
C.InputName
ans =1x1单元阵列{' e '}
PID控制器阵列
创建一个2乘3的PI控制器网格,在数组行上的比例增益范围为1-2,在列上的积分增益范围为5-9。
要构建PID控制器数组,首先从表示增益的数组开始。
Kp = [1 1 1;2 2 2];Ki = [5:2:9;5:2:9];
将这些数组传递给pid
命令时,该命令返回数组。
pi_array = pid(Kp,Ki,“t”, 0.1,“IFormula”,“BackwardEuler”);大小(pi_array)
2x3阵列PID控制器。每个PID有1个输出和1个输入。
或者,使用堆栈
命令构建PID控制器数组。
C = pid(1,5,0.1)% PID控制器
C = 1 Kp + Ki *—+ Kd * s s与Kp = 1, Ki = 5, Kd = 0.1并行形式的连续时间PID控制器。
Cf = pid(1,5,0.1,0.5)带过滤器的PID控制器
Cf = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1与Kp = 1, Ki = 5, Kd = 0.1, Tf = 0.5并行形式连续时间PIDF控制器。
pid_array = stack(2,C,Cf);%沿第二数组维度堆栈
这些命令返回一个1 × 2的控制器数组。
大小(pid_array)
PID控制器的1x2数组。每个PID有1个输出和1个输入。
数组中的所有PID控制器必须具有相同的采样时间、离散积分器公式和动态系统属性,例如InputName
而且OutputName
.
将PID控制器从标准转换为并行形式
转换标准表单pidstd
控制器变为并行形式。
标准的PID形式以总体比例增益表达控制器的动作Kp
,积分和导数时间常数“透明国际”
而且道明
,和过滤除数N
.控件可以将任何标准形式的控制器转换为并行形式pid
命令。例如,考虑以下标准形式的控制器。
Kp = 2;Ti = 3;Td = 4;N = 50;C_std = pidstd(Kp,Ti,Td,N)
C_std = 1 1 s Kp *(1 + ---- *——+ Td * ------------) Ti s (Td/N)*s+1 with Kp = 2, Ti = 3, Td = 4, N = 50连续时间PIDF控制器的标准形式
使用将该控制器转换为并行形式pid
.
C_par = pid
C_par = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1 with Kp = 2, Ki = 0.667, Kd = 8, Tf = 0.08并行形式的连续时间PIDF控制器。
动态系统转换为并行形式PID控制器
将表示PID控制器的连续动态系统转换为并行系统pid
的形式。
下面的动态系统,有一个积分器和两个零,相当于一个PID控制器。
创建一个zpk
模型H.然后使用pid
获取命令HPID增益Kp
,Ki
,Kd
.
H = zpk([-1,-2],0,3);C = pid(H)
C = 1 Kp + Ki *—+ Kd * s s与Kp = 9, Ki = 6, Kd = 3并行形式的连续时间PID控制器。
将离散动态系统转换为并行形式PID控制器
将带有导数滤波器的PID控制器的离散动态系统转换为并行系统pid
的形式。
创建一个表示PIDF控制器的离散时间zpk模型(两个零和两个极点,包括积分器极点)z
= 1)。
Sys = zpk([-0.5,-0.6],[1 -0.2],3,“t”, 0.1);
当你转换时sys
转换为PID形式时,结果取决于为转换指定的离散积分器公式。例如,使用默认值,ForwardEuler
,对于积分器和导数。
Cfe = pid(sys)
Cfe = Ts 1 Kp + Ki * ------ + Kd * ----------- z-1 Tf+Ts/(z-1) with Kp = 2.75, Ki = 60, Kd = 0.0208, Tf = 0.0833, Ts = 0.1采样时间:0.1秒并行形式的离散PIDF控制器。
现在使用梯形
公式。
Ctrap = pid(sys,“IFormula”,“梯形”,“DFormula”,“梯形”)
Ctrap = t * (z + 1) 1 Kp +吻 * -------- + Kd * ------------------- 2 * (z 1) Tf + Ts / 2 * (z + 1) / (z 1) Kp = -0.25, Ki = 60 Kd = 0.0208, Tf = 0.0333, t = 0.1样品时间:0.1秒离散PIDF控制器并联形式。
显示结果的系数值和函数形式的差异。
对于这个特殊的动态系统,你不能写sys
并行PID形式使用BackwardEuler
导数滤波器的公式。这样做会导致Tf < 0
,这是不允许的。这样的话,pid
返回一个错误。
离散化连续时间PID控制器
离散一个连续时间PID控制器,设置积分和导数滤波公式。
类的零阶保持方法创建连续时间控制器并对其进行离散化汇集
命令。
Ccon = pid(1,2,3,4);%连续时间PIDF控制器Cdis1 = c2d(Ccon,0.1,“zoh”)
Cdis1 = Ts 1 Kp + Ki * ------ + Kd * ----------- z-1 Tf+Ts/(z-1) with Kp = 1, Ki = 2, Kd = 3.04, Tf = 4.05, 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 = Ts*z 1 Kp + Ki * ------ + Kd * ------------- z-1 Tf+Ts*z/(z-1) with Kp = 1, Ki = 2, Kd = 3, Tf = 4, Ts = 0.1采样时间:0.1秒并行形式的离散PIDF控制器。
版本历史
在R2010b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。