主要内容

pid

创建并行式PID控制器,转换为并行式PID控制器

语法

C = pid(Kp,Ki,Kd,Tf)
C = pid(Kp,Ki,Kd,Tf,Ts)
C = pid(sys)
C = pid(Kp)
C = pid(Kp,Ki)
C = pid(Kp,Ki,Kd)
C = pid(…,名称,值)
C = pid

描述

C= pid (KpKiKd特遣部队创建一个连续时间PID控制器的比例,积分和导数增益KpKi,Kd和一阶导数滤波时间常数特遣部队

C K p + K 年代 + K d 年代 T f 年代 + 1

这个表示在平行的形式.如果所有的KpKiKd,特遣部队都是真实的,那么结果呢C是一个pid控制器对象。如果这些系数中的一个或多个是可调的(realpgenmat),然后C是可调的广义状态空间(一族)模型对象。

C= pid (KpKiKd特遣部队Ts创建一个具有采样时间的离散PID控制器Ts.控制器为:

C K p + K F z + K d T f + D F z

如果z),DFz)是离散积分公式对于积分器和导数滤波器。默认情况下,

F z D F z T 年代 z 1

要选择不同的离散积分器公式,请使用IFormula而且DFormula属性。(见属性欲了解更多有关IFormula而且DFormula).如果DFormula“ForwardEuler”(默认值)和特遣部队≠0,则Ts而且特遣部队必须满足Tf > Ts/2.这一要求确保了一个稳定的导数滤波器极。

C= pid (sys转换动态系统sys平行形式pid控制器对象。

C= pid (Kp创建一个连续时间比例(P)控制器Ki= 0,Kd= 0,和特遣部队= 0。

C= pid (KpKi创建一个比例积分(PI)控制器Kd= 0和特遣部队= 0。

C= pid (KpKiKd创建一个比例,积分和导数(PID)控制器特遣部队= 0。

C= pid(…名称,值创建控制器或将动态系统转换为pid具有一个或多个指定的附加选项的控制器对象名称,值对参数。

C= pid创建一个P控制器Kp= 1。

输入参数

Kp

比例增益。

Kp可以是:

  • 一个实数和有限值。

  • 实数和有限值的数组。

  • 可调参数(realp)或广义矩阵(genmat).

  • 用于增益计划调谐的可调谐表面,使用tunableSurface

Kp= 0时,控制器无比例动作。

默认值:1

Ki

获得积分。

Ki可以是:

  • 一个实数和有限值。

  • 实数和有限值的数组。

  • 可调参数(realp)或广义矩阵(genmat).

  • 用于增益计划调谐的可调谐表面,使用tunableSurface

Ki= 0时,控制器无积分动作。

默认值:0

Kd

衍生品收益。

Kd可以是:

  • 一个实数和有限值。

  • 实数和有限值的数组。

  • 可调参数(realp)或广义矩阵(genmat).

  • 用于增益计划调谐的可调谐表面,使用tunableSurface

Kd= 0时,控制器无导数动作。

默认值:0

特遣部队

一阶导数滤波器的时间常数。

特遣部队可以是:

  • 一个实数,有限的,非负值

  • 一组实数、有限值和非负值的数组。

  • 可调参数(realp)或广义矩阵(genmat).

  • 用于增益计划调谐的可调谐表面,使用tunableSurface

特遣部队= 0时,控制器对导数动作没有滤波。

默认值:0

Ts

样品时间。

创建一个离散时间pid控制器,提供一个正的实值(Ts > 0).pid不支持离散时间控制金宝app器与未指定的采样时间(Ts = -1).

Ts必须为标量值。在数组中pid控制器,每个控制器必须有相同的Ts

默认值:0(连续时间)

sys

将SISO动态系统转换为并行系统pid的形式。

sys必须表示一个有效的PID控制器,可以写在并行形式特遣部队≥0。

sys也可以是一组SISO动态系统。

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

使用名称,值语法来设置数值积分公式IFormula而且DFormula离散时间的pid控制器,或设置其他对象属性,如InputName而且OutputName.的可用属性的信息pid控制器对象,请参见属性

输出参数

C

PID控制器,表示为pid对象的数组pid控制器对象,一个一族对象,或一族数组中。

  • 如果所有的收益KpKiKd,特遣部队有数值吗C是一个pid控制器对象。当增益是数值数组时,C的数组。pid控制器对象。控制器类型(P, I, PI, PD, PDF, PID, PIDF)取决于增益的值。例如,当Kd= 0,但是Kp而且Ki非零,C是PI控制器。

  • 如果一个或多个增益是可调参数(realp),广义矩阵(genmat),或可调增益面(tunableSurface),然后C是广义状态空间模型(一族).

属性

Kp Ki Kd

PID控制器增益。

KpKi,Kd属性分别存储比例增益、积分增益和导数增益。KpKi,Kd都是真实而有限的。

特遣部队

导数滤波时间常数。

特遣部队属性的导数筛选器时间常数pid控制器对象。特遣部队是实的,有限的,非负的。

IFormula

离散积分公式如果z)为离散时间积分器pid控制器C

C K p + K F z + K d T f + D F z

IFormula可以取以下值:

  • “ForwardEuler”- - - - - -如果z) = T 年代 z 1

    该公式适用于小采样时间,其中奈奎斯特极限与控制器带宽相比较大。对于更大的采样时间,ForwardEuler公式会导致不稳定性,即使离散一个连续时间稳定的系统。

  • “BackwardEuler”- - - - - -如果z) = T 年代 z z 1

    的一个优势BackwardEuler用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。

  • “梯形”- - - - - -如果z) = T 年代 2 z + 1 z 1

    的一个优势梯形用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形公式给出离散系统的频域特性与相应的连续时间系统频域特性最接近的匹配。

C是连续时间控制器,IFormula

默认值:“ForwardEuler”

DFormula

离散积分公式DFz)为离散时间的导数滤波器pid控制器C

C K p + K F z + K d T f + D F z

DFormula可以取以下值:

  • “ForwardEuler”- - - - - -DFz) = T 年代 z 1

    该公式适用于小采样时间,其中奈奎斯特极限与控制器带宽相比较大。对于更大的采样时间,ForwardEuler公式会导致不稳定性,即使离散一个连续时间稳定的系统。

  • “BackwardEuler”- - - - - -DFz) = T 年代 z z 1

    的一个优势BackwardEuler用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。

  • “梯形”- - - - - -DFz) = T 年代 2 z + 1 z 1

    的一个优势梯形用这个公式离散一个稳定的连续时间系统总是能得到一个稳定的离散时间结果。在所有可用的积分公式中梯形公式给出离散系统的频域特性与相应的连续时间系统频域特性最接近的匹配。

    梯形DFormula是一个不可用的pid没有导数滤波器的控制器(Tf = 0).

C是连续时间控制器,DFormula

默认值:“ForwardEuler”

InputDelay

系统输入的时间延迟。InputDelaya总是0pid控制器对象。

OutputDelay

系统输出的时间延迟。OutputDelaya总是0pid控制器对象。

Ts

样品时间。对于连续时间模型,Ts = 0.对于离散时间模型,Ts表示采样周期的正标量。属性指定的单位表示此值TimeUnit模型的属性。PID控制器型号不支持不指定采样时间(金宝appTs = -1).

更改此属性不会对模型进行离散化或重新采样。使用汇集而且d2c在连续时间表示和离散时间表示之间进行转换。使用d2d改变离散时间系统的采样时间。

默认值:0(持续时间)

TimeUnit

时间变量的单位是采样时间Ts,以及模型中的任何时间延迟,指定为以下值之一:

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用chgTimeUnit在时间单位之间转换而不修改系统行为。

默认值:“秒”

InputName

输入通道名称,指定为字符向量。使用此属性可命名控制器模型的输入通道。例如,分配名称错误控制器模型的输入C如下。

C.InputName =“错误”

你可以用速记法u请参阅InputName财产。例如,C.u等于C.InputName

输入通道名有几种用途,包括:

  • 识别模型显示和图上的通道

  • 在连接模型时指定连接点

默认值:空字符向量,

InputUnit

输入通道单位,指定为字符向量。使用此属性跟踪输入信号单位。例如,指定浓度单位摩尔/ m ^ 3控制器模型的输入C如下。

C.InputUnit =《摩尔/ m ^ 3》

InputUnit对系统行为没有影响。

默认值:空字符向量,

InputGroup

输入通道组。PID控制器模型不需要此属性。

默认值:结构体没有字段

OutputName

输出通道名称,指定为字符向量。使用此属性可命名控制器模型的输出通道。例如,分配名称控制控制器模型的输出C如下。

C.OutputName =“控制”

你可以用速记法y请参阅OutputName财产。例如,研讨会等于C.OutputName

输入通道名有几种用途,包括:

  • 识别模型显示和图上的通道

  • 在连接模型时指定连接点

默认值:空字符向量,

OutputUnit

输出通道单位,指定为字符向量。使用此属性跟踪输出信号单元。例如,分配单元控制器模型的输出C如下。

C.OutputUnit =“伏”

OutputUnit对系统行为没有影响。

默认值:空字符向量,

OutputGroup

输出通道组。PID控制器模型不需要此属性。

默认值:结构体没有字段

的名字

系统名称,指定为字符向量。例如,“system_1”

默认值:

笔记

希望与系统关联的任何文本,存储为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1而且sys2系统模型都是动态的,你可以自己设置吗笔记属性如下:

sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量;sys1。笔记sys2。笔记
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"

默认值:(0×1的字符串)

用户数据

您希望与系统关联的任何类型的数据,指定为任何MATLAB®数据类型。

默认值:[]

SamplingGrid

模型数组的采样网格,指定为数据结构。

对于通过对一个或多个自变量采样而得到的模型数组,此属性跟踪与数组中每个模型相关的变量值。当您显示或绘制模型数组时,将显示此信息。使用这些信息将结果追溯到自变量。

将数据结构的字段名设置为采样变量的名称。将字段值设置为与数组中的每个模型相关联的采样变量值。所有抽样变量都应该是数值和标量值,所有抽样值的数组都应该匹配模型数组的维度。

例如,假设你创建了一个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这样。

默认值:[]

例子

全部折叠

创建一个具有比例增益和导数增益的连续时间控制器,并在导数项上创建一个过滤器。为此,将积分增益设置为零。将其他增益和滤波时间常数设置为所需值。

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控制器,请设置的值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参数之后的第五个输入参数,KpKiKd,特遣部队.因为你只想要一个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控制器时,需要设置系统的动态属性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 '}

创建一个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

转换标准表单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控制器。

H 年代 3. 年代 + 1 年代 + 2 年代

创建一个zpk模型H.然后使用pid获取命令HPID增益KpKi,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的形式。

创建一个表示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控制器,设置积分和导数滤波公式。

类的零阶保持方法创建连续时间控制器并对其进行离散化汇集命令。

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而且DFormulaForwardEuler

Cdis1。如果或mula
ans = 'ForwardEuler'
Cdis1。DF或mula
ans = 'ForwardEuler'

如果您想使用不同于返回的公式汇集,则可以直接设置TsIFormula,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控制器。

提示

  • 使用pid:

    • 创建一个pid控制器对象由已知PID增益和滤波时间常数组成。

    • 把一个pidstd控制器对象转换为标准表单pid控制器对象。

    • 将其他类型的动态系统模型转换为pid控制器对象。

  • 为特定的工厂设计PID控制器,使用pidtunepidTuner.要创建一个可调PID控制器作为控制设计块,使用tunablePID

  • 创建数组pid控制器对象:

    • 为指定数组值KpKiKd,特遣部队

    • 指定动态系统的数组sys转换为pid控制器对象

    • 使用堆栈从单独的控制器或较小的数组构建数组

    在数组中pid控制器,每个控制器必须有相同的采样时间Ts和离散积分公式IFormula而且DFormula

  • 若要创建或转换为标准格式控制器,请使用pidstd.标准形式以总比例增益表示控制器动作Kp,积分和导数的时间T而且Td,和过滤除数N

    C K p 1 + 1 T 1 年代 + T d 年代 T d N 年代 + 1

  • 离散连续时间函数有两种方法pid控制器:

    • 使用汇集命令。汇集为离散化控制器计算新的参数值。离散控制器的离散积分器公式依赖于汇集您使用的离散化方法,如下表所示。

      汇集离散化方法 IFormula DFormula
      “zoh” ForwardEuler ForwardEuler
      “呸” 梯形 梯形
      “tustin” 梯形 梯形
      “冲动” ForwardEuler ForwardEuler
      “匹配” ForwardEuler ForwardEuler

      欲了解更多有关汇集离散化方法,请参见汇集参考页面。欲了解更多有关IFormula而且DFormula,请参阅属性

    • 如果你需要不同的离散积分器公式,你可以通过直接设置离散控制器TsIFormula,DFormula到期望的值。(见离散一个连续时间PID控制器)。但是,该方法不需要为离散控制器计算新的增益和滤波常数值。因此,这种方法可能会在连续时间和离散时间之间产生较差的匹配pid控制器比使用汇集

版本历史

在R2010b中引入