主要内容

pidstd

创建标准形式的PID控制器,转换为标准形式的PID控制器

语法

C = pidstd(Kp,Ti,Td,N)
C = pidstd(Kp,Ti,Td,N,Ts)
C = pidstd(sys)
C = pidstd(Kp)
C = pidstd(Kp,Ti)
C = pidstd(Kp,Ti,Td)
C = pidstd(…,Name,Value)
C = pidstd

描述

C= pidstd (Kp“透明国际”道明N创建一个标准形式的连续时间PIDF(带一阶导数滤波器的PID)控制器对象。控制器具有比例增益Kp,积分和导数的时间“透明国际”而且道明,和一阶导数滤波除数N

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

C= pidstd (Kp“透明国际”道明NTs创建具有采样时间的离散时间控制器Ts.离散时间控制器为:

C K p 1 + 1 T F z + T d T d N + D F z

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

F z D F z T 年代 z 1

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

C= pidstd (sys转换动态系统sys变成标准形式pidstd控制器对象。

C= pidstd (Kp创建一个连续时间比例(P)控制器“透明国际”道明= 0,和N

C= pidstd (Kp“透明国际”创建一个比例积分(PI)控制器道明= 0和N

C= pidstd (Kp“透明国际”道明创建一个比例,积分和导数(PID)控制器N

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

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

输入参数

Kp

比例增益。

Kp可以是:

  • 一个实数和有限值。

  • 实数和有限值的数组。

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

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

默认值:1

“透明国际”

积分器。

“透明国际”可以是:

  • 一个正的实数。

  • 由实数和正数组成的数组。

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

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

默认值:

道明

微分时间。

道明可以是:

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

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

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

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

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

默认值:0

N

导数滤波除数。

N可以是:

  • 一个正的实数。

  • 由实数和正数组成的数组。

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

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

N时,控制器对导数动作没有滤波。

默认值:

Ts

样品时间。

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

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

默认值:0(连续时间)

sys

SISO动态系统转换为标准pidstd的形式。

sys必须表示可以用标准形式编写的有效控制器“透明国际”> 0,道明≥0,且N> 0。

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

名称-值参数

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

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

输出参数

C

pidstd对象,表示标准形式的单输入单输出PID控制器。

控制器类型(P, PI, PD, PDF, PID, PIDF)取决于Kp“透明国际”道明,N.例如,当道明而且Kp而且“透明国际”是有限且非零的,C是PI控制器。输入方法(C)获取控制器类型。

当输入Kp“透明国际”道明,N或者输入sys是数组,C的数组。pidstd对象。

属性

Kp

比例增益。Kp必须是真实而有限的。

“透明国际”

积分时间。“透明国际”必须是实的,有限的,并且大于等于零。

道明

微分时间。道明必须是实的,有限的,并且大于等于零。

N

导数滤波除数。N必须是实数,且大于等于零。

IFormula

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

C K p 1 + 1 T F z + T d T d N + 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)为离散时间的导数滤波器pidstd控制器C

C K p 1 + 1 T F z + T d T d N + 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是一个不可用的pidstd没有导数滤波器的控制器(N =无穷).

C是连续时间控制器,DFormula

默认值:“ForwardEuler”

InputDelay

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

OutputDelay

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

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这样。

默认值:[]

例子

创建连续时间标准表单PDF控制器

创建一个连续时间标准格式PDF控制器,其比例增益为1,导数时间为3,滤波除数为6。

C = pidstd(1,Inf,3,6);
C = s Kp * (1 + Td * ------------) (Td/N)*s+1,其中Kp = 1, Td = 3, N = 6连续时间PDF控制器的标准形式

显示器显示控制器类型、公式和系数值。

用梯形离散化公式创建离散时间PI控制器

如果要创建离散时间控制器,可以设置的值Ts使用名称,值语法。

C = pidstd(1,0.5,“t”, 0.1,“IFormula”“梯形”% Ts = 0.1s

这个命令产生的结果是:

离散时间PI控制器标准形式为:1 Ts*(z+1) Kp *(1 + ---- * --------) Ti 2*(z-1), Kp = 1, Ti = 0.5, Ts = 0.1

或者,您也可以创建相同的离散时间控制器Ts作为所有四个PID参数之后的第五个参数Kp“透明国际”道明,N

C = pidstd(5,2.4,0,Inf,0.1,“IFormula”“梯形”);

创建PID控制器并设置系统属性

创建PID控制器,设置系统动态属性InputName而且OutputName

C = pidstd(1,0.5,3,“InputName”“e”“OutputName”“u”);

创建标准格式PID控制器网格

创建一个2乘3的PI控制器网格,比例增益范围为1-2,积分时间范围为5-9。

创建一个PI控制器的网格,以行与行成比例的增益变化和列与列的积分时间变化。为此,从表示增益的数组开始。

Kp = [1 1 1;2 2 2];Ti = [5:2:9;5:2:9];pi_array = pidstd(Kp,Ti,“t”, 0.1,“IFormula”“BackwardEuler”);

这些命令生成一个2 × 3的离散时间数组pidstd对象。所有pidstd数组中的对象必须具有相同的采样时间、离散积分器公式和动态系统属性(例如InputName而且OutputName).

或者,您可以使用堆栈的数组pidstd对象。

C = pidstd(1,5,0.1)% PID控制器Cf = pidstd(1,5,0.1,0.5)带过滤器的PID控制器pid_array = stack(2,C,Cf);%沿第二数组维度堆栈

这些命令生成一个1 × 2的控制器数组。输入命令:

大小(pid_array)

看看结果

PID控制器的1x2数组。每个PID有1个输出和1个输入。

将平行形式pid控制器转换为标准表格

并行PID形式以比例、积分和导数增益的形式表达控制器的动作KpK,Kd,和滤波时间常数Tf.您可以转换并行表单控制器parsys到标准表单使用pidstd,条件是:

  • parsys不是一个纯积分器(I)控制器。

  • 的收益KpKi,Kdparsys都有相同的符号。

Parsys = pid(2,3,4,5);标准形式的控制器Stdsys = pidstd(parsys)

这些命令产生一个并行形式的控制器:

连续时间PIDF控制器标准形式:1 1 s Kp *(1 + ---- *——+ Td * ------------) Ti s (Td/N)*s+1, Kp = 2, Ti = 0.66667, Td = 2, N = 0.4

创建pidstd连续时间动态系统控制器

动态系统

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

表示PID控制器。使用pidstd获得H年代为标准形式的PID参数KpT,Td

H = zpk([-1,-2],0,3);C = pidstd(H)

这些命令产生的结果是:

连续时间PID控制器标准形式:1 1 Kp *(1 + ---- *—+ Td * s) Ti s, Kp = 9, Ti = 1.5, Td = 0.33333

创建pidstd离散时间动态系统控制器

你可以转换一个离散时间动态系统,表示一个PID控制器与导数滤波器的标准pidstd的形式。

% PIDF控制器表示为zpk形式Sys = zpk([-0.5,-0.6],[1 -0.2],3,“t”, 0.1);

由此产生的pidstd对象取决于指定的离散积分器公式IFormula而且DFormula

例如,如果您使用默认值ForwardEuler对于这两个公式:

C = pidstd(sys)

得到的结果是:

离散时间PIDF控制器标准形式:1 Ts 1 Kp * (1 + ---- * ------ + Td * ---------------) Ti z-1 (Td/N)+Ts/(z-1), Kp = 2.75, Ti = 0.045833, Td = 0.0075758, N = 0.090909, Ts = 0.1

对于这种情况sys,你不能写sys在标准PID形式中使用BackwardEuler公式DFormula.这样做会导致N< 0,这是不允许的。这样的话,pidstd返回一个错误。

同样,你也不能写字sys在标准形式中使用梯形两个积分器的公式。这样做的结果是消极的“透明国际”而且道明,它也会返回一个错误。

离散化连续时间pidstd控制器

方法将控制器离散化“zoh”的方法汇集

Cc = pidstd(1,2,3,4);%连续时间pidf控制器Cd1 = c2d(Cc,0.1,“zoh”
离散时间PIDF控制器标准形式:1 Ts 1 Kp * (1  + ---- * ------ + 道明  * ---------------) Ti z 1 (Td / N) + Ts / (z 1) Kp = 1, Ti = 2, Td = 3.2044, N = 4, Ts = 0.1

生成的离散时间控制器使用ForwardEulerT年代/ (z1))IFormula而且DFormula

离散控制器的离散积分器公式依赖于汇集离散化方法,如提示.使用不同的IFormula而且DFormula,直接设置TsIFormula,DFormula到期望值:

Cd2 = Cc;张cd。Ts=0.1;张cd。如果或mula =“BackwardEuler”;张cd。DF或mula =“BackwardEuler”

这些命令不会为离散化控制器计算新的参数值。要查看这个,输入:

得到结果:

离散时间PIDF控制器标准形式:1 t * z 1 Kp * (1  + ---- * ------ + 道明  * -----------------) Ti z 1 (Td / N) + Ts * z / (z 1) Kp = 1, Ti = 2, Td = 3, N = 4, Ts = 0.1

提示

  • 使用pidstd或者创建pidstd控制器对象由已知的PID增益、积分和导数时间,以及滤波除数,或将动态系统模型转换为pidstd对象。

  • 要调优特定工厂的PID控制器,使用pidtunepidTuner

  • 创建数组pidstd控制器:

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

  • 要创建或转换为并行形式的控制器,请使用pid.并行形式用比例增益、积分增益和导数增益来表达控制器的动作KpK而且Kd,和滤波时间常数Tf

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

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

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

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

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

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

在R2010b中引入