主要内容

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控制器的工厂模型。中指定一自由度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总是0吗pid控制器对象。

    此属性是只读的。

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

    采样时间,指定为:

    • 0对于连续时间系统。

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

    PID控制器模型不支持不指定采样时间(Ts = -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生成的模型数组®在多个参数值或操作点建模时,软件进行填充SamplingGrid自动使用与数组中每个条目对应的变量值。例如,Simulink控制设计™命令线性化(Simulink控制设计)而且slLinearizer(Simulink控制设计)填充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),其中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),其中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 with 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];Ki = [5:2:9;5:2:9];

    将这些数组传递给pid命令,该命令返回数组。

    pi_array = pid(Kp,Ki,“t”, 0.1,“IFormula”“BackwardEuler”);大小(pi_array)
    PID控制器的2x3阵列。每个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,其中Kp = 2, Ti = 3, Td = 4, N = 50标准形式连续时间PIDF控制器

    将此控制器转换为并行形式pid

    C_par = pid
    C_par = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1,其中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), 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), 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中引入

    Baidu
    map