主要内容

pid

PID控制器并联形式

    描述

    使用pid创建并行形式的比例-积分-导数(PID)控制器模型对象,或进行转换动态系统模型并联PID控制器形式。

    pid控制器模型对象可以表示连续时间或离散时间的并行形式的PID控制器。

    • 连续时间- C K p + K 年代 + K d 年代 T f 年代 + 1

    • 离散时间—— C K p + K F z + K d T f + D F z

    在这里:

    • Kp是比例增益。

    • K是积分增益。

    • Kd是导数增益。

    • Tf为一阶导数滤波时间常数。

    • 如果z)是离散控制器中计算积分的积分器方法。

    • DFz)是计算离散控制器中导数滤波器的积分器方法。

    然后,您可以将该对象与控制体系结构的其他组件结合起来,例如设备、执行器和传感器,以表示您的控制系统。有关更多信息,请参见使用模型对象进行控制系统建模

    您可以通过直接指定控制器参数或转换其他类型的模型(例如传递函数模型)来创建PID控制器模型对象特遣部队)到PID控制器形式。

    你也可以使用pid要创建广义状态空间(一族)模型或不确定状态空间(号航空母舰(鲁棒控制工具箱))模型。

    创建

    你可以获得pid控制器以下列方式之一建模。

    • 属性创建模型pid函数。

    • 使用pidtune函数来调整PID控制器的工厂模型。控件中指定1-DOF PID控制器类型类型的参数pidtune函数得到一个并行形式的PID控制器。例如:

      Sys = zpk([],[-1 -1 -1],1);C = pidtune(sys,“PID”);
    • 交互整定PID控制器的工厂模型使用:

    描述

    例子

    C= pid (KpKiKd特遣部队创建一个连续时间并行形式的PID控制器模型并设置属性KpKiKd,特遣部队.其余属性具有默认值。

    例子

    C= pid (KpKiKd特遣部队Ts建立了具有采样时间的离散PID控制器模型Ts

    例子

    C= pid (Kp创建一个连续时间比例(P)控制器。

    例子

    C= pid (KpKi创建一个比例积分(PI)控制器。

    例子

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

    例子

    C= pid (___名称,值的属性。pid使用一个或多个指定的控制器对象名称,值前面任何输入参数组合的参数。

    例子

    C= pid创建具有默认属性值的控制器对象。要修改控制器模型的属性,请使用点表示法。

    例子

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

    输入参数

    全部展开

    动态系统,指定为SISO动态系统模型或SISO动态系统模型的数组。您可以使用的动态系统包括:

    • 连续时间或离散时间数值LTI模型,例如特遣部队zpk党卫军,或pidstd模型。

    • 广义的或不确定的LTI模型,如一族号航空母舰(鲁棒控制工具箱)模型。(使用不确定模型需要鲁棒控制工具箱™软件。)

      得到的PID控制器假设

      • 可调控制设计块的可调组件的当前值。

      • 不确定控制设计块的标称模型值。

    • 确定的LTI模型,例如idtf(系统识别工具箱)中的难点(系统识别工具箱)idproc(系统识别工具箱)idpoly(系统识别工具箱),idgrey(系统识别工具箱)模型。(使用识别的模型需要系统识别工具箱™软件。)

    输出参数

    全部展开

    PID控制器模型,返回为:

    • 并联式PID控制器(pid)模型对象,当所有增益都有数值时。当增益是数值数组时,C的数组。pid控制器对象。

    • 广义状态空间模型(一族)对象,当分子分母输入参数包括可调参数,例如realp参数或广义矩阵(genmat).

    • 不确定状态空间模型(号航空母舰)对象,当分子分母输入参数包含不确定参数。使用不确定模型需要鲁棒控制工具箱软件。

    属性

    全部展开

    比例增益,指定为实数和有限值或可调对象。

    • 要创建pid控制器对象,使用一个实数和有限标量值。

    • 的数组创建pid控制器对象,使用实数和有限值的数组。

    • 若要创建可调控制器模型,请使用可调参数(realp)或广义矩阵(genmat).

    • 若要创建可调增益调度控制器模型,请使用使用tunableSurface

    积分增益,指定为实数和有限值或可调对象。

    • 要创建pid控制器对象,使用一个实数和有限标量值。

    • 的数组创建pid控制器对象,使用实数和有限值的数组。

    • 若要创建可调控制器模型,请使用可调参数(realp)或广义矩阵(genmat).

    • 若要创建可调增益调度控制器模型,请使用使用tunableSurface

    导数增益,指定为实数和有限值或可调对象。

    • 要创建pid控制器对象,使用一个实数和有限标量值。

    • 的数组创建pid控制器对象,使用实数和有限值的数组。

    • 若要创建可调控制器模型,请使用可调参数(realp)或广义矩阵(genmat).

    • 若要创建可调增益调度控制器模型,请使用使用tunableSurface

    一阶导数滤波器的时间常数,指定为实数和有限值或可调对象。

    • 要创建pid控制器对象,使用一个实数和有限标量值。

    • 的数组创建pid控制器对象,使用实数和有限值的数组。

    • 若要创建可调控制器模型,请使用可调参数(realp)或广义矩阵(genmat).

    • 若要创建可调增益调度控制器模型,请使用使用tunableSurface

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

    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

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

    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

    此属性是只读的。

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

    此属性是只读的。

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

    采样时间,指定为:

    • 0对于连续时间系统。

    • 表示离散时间系统采样周期的正标量。指定Ts方法指定的时间单位TimeUnit财产。

    PID控制器型号不支持不指定采样时间(金宝appTs = -1).

    请注意

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

    离散控制器的离散积分器公式依赖于汇集您使用的离散化方法,如此表所示。

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

    欲了解更多有关汇集离散化方法,参见汇集

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

    时间变量单位,指定为下列之一:

    • “纳秒”

    • 微秒的

    • 的毫秒

    • “秒”

    • “分钟”

    • “小时”

    • “天”

    • “周”

    • “月”

    • “年”

    改变TimeUnit对其他属性没有影响,但会改变整个系统行为。使用chgTimeUnit在时间单位之间转换而不修改系统行为。

    输入通道名称,指定为以下之一:

    • 一个字符向量。

    • ,没有指定名称。

    或者,分配名称错误控制器模型的输入C如下。

    C.InputName =“错误”

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

    使用InputName:

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

    • 对接模型时,请指定连接点。

    输入通道单位,指定为下列之一:

    • 一个字符向量。

    • ,没有指定单位。

    使用InputUnit指定输入信号单位。InputUnit对系统行为没有影响。

    例如,指定浓度单位《摩尔/ m ^ 3》控制器模型的输入C如下。

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

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

    默认情况下,InputGroup是一个没有字段的结构。

    输出通道名称,指定为以下之一:

    • 一个字符向量。

    • ,没有指定名称。

    例如,分配名称“控制”控制器模型的输出C如下。

    C.OutputName =“控制”

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

    使用OutputName:

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

    • 对接模型时,请指定连接点。

    输出通道单位,指定为下列之一:

    • 一个字符向量。

    • ,没有指定单位。

    使用OutputUnit指定输出信号单位。OutputUnit对系统行为没有影响。

    例如,分配单元“伏”控制器模型的输出C如下。

    C.OutputUnit =“伏”

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

    默认情况下,OutputGroup是一个没有字段的结构。

    希望与系统关联的用户指定文本,指定为字符向量或字符向量的单元格数组。例如,“系统是MIMO”

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

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

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

    使用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是一个没有字段的结构。

    对象的功能

    下面的列表包含您可以使用的函数的一个代表性子集pid模型。一般来说,任何函数都适用于动态系统模型适用于pid对象。

    全部展开

    一步 动态系统的阶跃响应图;阶跃响应数据
    冲动 动态系统的脉冲响应图;脉冲响应数据
    lsim 绘制动态系统对任意输入的模拟时间响应图;模拟响应数据
    波德 波德图的频率响应,或幅度和相位数据
    尼奎斯特 频率响应的奈奎斯特图
    尼克尔斯 尼克尔斯频率响应图
    带宽 频响带宽
    动力系统的极点
    SISO动态系统的零点和增益
    pzplot 动态系统模型的极点零图,具有额外的图定制选项
    保证金 增益裕度、相位裕度和交叉频率
    zpk Zero-pole-gain模型
    党卫军 状态空间模型
    汇集 将模型从连续时间转换为离散时间
    d2c 将模型从离散时间转换为连续时间
    d2d 重新采样离散时间模型
    反馈 多型号反馈连接
    连接 动态系统连接的框图
    系列 两种型号串联
    平行 两种型号并联
    pidtune 线性植物模型的PID整定算法
    rlocus 动态系统的根轨迹图
    piddata 并联式PID控制器的存取系数
    make2DOF 将1-DOF PID控制器转换为2-DOF控制器
    pidTuner 打开PID调谐器进行PID整定
    tunablePID PID控制器可调

    例子

    全部折叠

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

    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控制器。

    版本历史

    在R2010b中引入