连续时间或离散时间二自由度 PID 控制器 您所在的位置:网站首页 matlab与pid控制 连续时间或离散时间二自由度 PID 控制器

连续时间或离散时间二自由度 PID 控制器

2024-06-02 15:49| 来源: 网络整理| 查看: 265

控制器 — 控制器类型 PID (默认) | PI | PD

指定在控制器中包含比例项、积分项和导数项中的哪些项。

PID

比例、积分和导数动作。

PI

仅比例和积分动作。

PD

仅比例和导数动作。

提示

当前设置的控制器输出显示在模块参数的补偿器公式部分中和封装下。

编程用法模块参数:Controller类型:字符串、字符向量值:"PID"、"PI"、"PD" 默认值:"PID"形式 — 控制器结构 并行 (默认) | 理想

指定控制器结构是“并行”还是“理想”。

并行

比例、积分和导数增益 P、I 和 D 的应用彼此独立。例如,对于并行形式的连续时间二自由度 PID 控制器,控制器输出 u 为:

u=P(br−y)+I1s(r−y)+DN1+N1s(cr−y),

其中 r 是参考信号,y 是测得的被控对象输出信号,b 和 c 是设定点权重。

对于并行形式的离散时间二自由度控制器,控制器输出为:

u=P(br−y)+Iα(z)(r−y)+DN1+Nβ(z)(cr−y),

其中积分器方法和滤波器方法参数分别确定 α(z) 和 β(z)。

理想

比例增益 P 作用于所有动作的总和。例如,对于理想形式的连续时间二自由度 PID 控制器,控制器输出为:

u=P[(br−y)+I1s(r−y)+DN1+N1s(cr−y)].

对于理想形式的离散时间二自由度 PID 控制器,传递函数为:

u=P[(br−y)+Iα(z)(r−y)+DN1+Nβ(z)(cr−y)],

其中积分器方法和滤波器方法参数分别确定 α(z) 和 β(z)。

提示

当前设置的控制器输出显示在模块参数的补偿器公式部分中和封装下。

编程用法模块参数:Controller类型:字符串、字符向量值:"Parallel"、"Ideal"默认值:"Parallel"时域 — 指定连续时间或离散时间控制器 连续时间 (默认) | 离散时间

选择离散时间时,建议您为模块指定显式采样时间。请参阅采样时间(-1 表示继承) 参数。选择离散时间也会启用积分器方法和滤波器方法参数。

当 PID Controller 模块位于具有同步状态控件(请参阅 State Control (HDL Coder) 模块)的模型中时,您不能选择连续时间。

注意

PID Controller (2DOF) 和 Discrete PID Controller (2DOF) 模块是相同的,只是此参数的默认值不同。

编程用法 模块参数:TimeDomain类型:字符串、字符向量值:"Continuous-time"、"Discrete-time"默认值:"Continuous-time" PID 控制器位于条件执行子系统内 — 启用离散积分器时间端口 off (默认) | on

对于离散时间 PID 控制器,启用离散时间积分器端口以使用您自己的离散时间积分器采样时间值。为确保正确积分,请使用 TDTI 端口提供标量值 Δt,用于精确的离散时间积分。

依存关系

要启用此参数,请将时域设置为离散时间。

编程用法 模块参数:UseExternalTs类型:字符串、字符向量值:"on"、"off"默认值:"off" 采样时间(-1 表示继承) — 采样之间的离散间隔 -1 (默认) | 正标量

通过输入正标量值(例如 0.1)指定采样时间。默认的离散采样时间为 -1,表示该模块从上游模块继承其采样时间。但是,建议您显式设置控制器采样时间,尤其是在您预计上游模块的采样时间会发生变化时。控制器系数 P、I、D 和 N 的影响取决于采样时间。因此,对于给定的一组系数值,更改采样时间会更改控制器的性能。

有关详细信息,请参阅 指定采样时间。

要实现连续时间控制器,请将时域设置为连续时间。

提示

如果要使用外部指定的或可变的采样时间运行模块,请将此参数设置为 -1 并将模块放在 Triggered Subsystem 中。然后,在所需的采样时间触发该子系统。

依存关系

要启用此参数,请将时域设置为离散时间。

编程用法模块参数:SampleTime类型:标量值: -1、正标量默认值: -1积分器方法 — 离散时间控制器中积分的计算方法 前向欧拉 (默认) | 后向欧拉 | 梯形

在离散时间内,控制器传递函数的积分项为 Ia(z),其中 a(z) 取决于您使用此参数指定的积分器方法。

前向欧拉

正向矩形(左手)逼近方法,

α(z)=Tsz−1.

这种方法最适合较小的采样时间,此时奈奎斯特限制与控制器带宽相比来说比较大。对于较大的采样时间,前向欧拉方法可能带来不稳定性,即使离散的是在连续时间下表现稳定的系统。

后向欧拉

反向矩形(右手)逼近方法,

α(z)=Tszz−1.

后向欧拉方法的一个优点是:使用这种方法离散稳定的连续时间系统始终会生成稳定的离散时间结果。

梯形

双线性逼近法。

α(z)=Ts2z+1z−1.

梯形方法的一个优点是:使用这种方法离散稳定的连续时间系统始终会生成稳定的离散时间结果。在所有可用的积分方法中,梯形方法可在离散化系统与对应的连续时间系统的频域属性之间生成最接近的匹配。

提示

当前设置的控制器公式显示在模块参数的补偿器公式部分中和封装下。

有关离散时间积分的详细信息,请参阅Discrete-Time Integrator模块参考页。

依存关系

要启用此参数,请将时域设置为离散时间,并将控制器设置为具有积分动作的控制器类型。

编程用法模块参数:IntegratorMethod类型:字符串、字符向量值:"Forward Euler"、"Backward Euler"、"Trapezoidal"默认值:"Forward Euler"滤波器方法 — 离散时间控制器中导数的计算方法 前向欧拉 (默认) | 后向欧拉 | 梯形

在离散时间内,控制器传递函数的导数项为:

D[N1+Nα(z)],

其中 α(z) 取决于您使用此参数指定的滤波器方法。

前向欧拉

正向矩形(左手)逼近方法,

α(z)=Tsz−1.

这种方法最适合较小的采样时间,此时奈奎斯特限制与控制器带宽相比来说比较大。对于较大的采样时间,前向欧拉方法可能带来不稳定性,即使离散的是在连续时间下表现稳定的系统。

后向欧拉

反向矩形(右手)逼近方法,

α(z)=Tszz−1.

后向欧拉方法的一个优点是:使用这种方法离散稳定的连续时间系统始终会生成稳定的离散时间结果。

梯形

双线性逼近法。

α(z)=Ts2z+1z−1.

梯形方法的一个优点是:使用这种方法离散稳定的连续时间系统始终会生成稳定的离散时间结果。在所有可用的积分方法中,梯形方法可在离散化系统与对应的连续时间系统的频域属性之间生成最接近的匹配。

提示

当前设置的控制器公式显示在模块参数的补偿器公式部分中和封装下。

有关离散时间积分的详细信息,请参阅Discrete-Time Integrator模块参考页。

依存关系

要启用此参数,请将时域设置为离散时间并启用使用滤波导数。

编程用法模块参数:FilterMethod类型:字符串、字符向量值:"Forward Euler"、"Backward Euler"、"Trapezoidal"默认值:"Forward Euler"常设源 — 控制器增益和滤波器系数的信源 内部 (默认) | 外部内部

使用模块参数 P、I、D、N、b 和 c 分别指定控制器增益、滤波器系数和设定点权重。

外部

使用模块输入在外部指定 PID 增益、滤波器系数和设定点权重。对于当前控制器类型需要的每个参数,模块上会出现一个额外的输入端口。

如果为参数启用外部输入,您可以在模块外部计算它们的值,并将它们作为信号输入提供给模块。

外部输入非常有用,例如,当您希望将不同的 PID 参数化映射到模块的 PID 增益时。您还可以使用外部增益输入来实现增益调度 PID 控制。在增益调度控制中,您可以通过模型中的逻辑或其他计算确定 PID 增益,并将它们提供给模块。

如果从外部提供增益,则会分别对积分和导数增益值的时变进行积分和微分。导数设定点权重 c 也被求导。出现这种结果是因为在连续时间和离散时间中,增益都会在积分或微分之前应用于信号。例如,对于采用外部输入的连续时间 PID 控制器,积分项的实现方式如下图所示。

在进行积分之前,系统会在模块内将输入信号 u 乘以外部提供的积分增益 I。此实现的结果为:

ui=∫(r−y)I dt.

因此,积分增益包含在积分中。类似地,在模块的导数项中,进行微分之前会乘以导数增益,从而导致导数增益 D 和导数设定点权重 c 被求导。

编程用法模块参数:ControllerParametersSource类型:字符串、字符向量值:"internal"、"external"默认值:"internal"比例(P) — 比例增益 1 (默认) | 标量 | 向量

为比例增益指定有限实数增益值。控制器形式可以是:

并行 - 比例动作独立于积分和导数动作。例如,对于并行形式的连续时间二自由度 PID 控制器,控制器输出 u 为:

u=P(br−y)+I1s(r−y)+DN1+N1s(cr−y),

其中 r 是参考信号,y 是测得的被控对象输出信号,b 和 c 是设定点权重。

对于并行形式的离散时间二自由度控制器,控制器输出为:

u=P(br−y)+Iα(z)(r−y)+DN1+Nβ(z)(cr−y),

其中积分器方法和滤波器方法参数分别确定 α(z) 和 β(z)。

理想 - 比例增益乘以积分和导数项。例如,对于理想形式的连续时间二自由度 PID 控制器,控制器输出为:

u=P[(br−y)+I1s(r−y)+DN1+N1s(cr−y)].

对于理想形式的离散时间二自由度 PID 控制器,传递函数为:

u=P[(br−y)+Iα(z)(r−y)+DN1+Nβ(z)(cr−y)],

其中积分器方法和滤波器方法参数分别确定 α(z) 和 β(z)。

可调: Yes

依存关系

要启用此参数,请将控制器参数源设置为内部。

编程用法模块参数:P类型:标量、向量默认值:1积分(I) — 积分增益 1 (默认) | 标量 | 向量

为积分增益指定有限实数增益值。

可调: Yes

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部,并将控制器设置为具有积分动作的类型。

编程用法模块参数:I类型:标量、向量默认值:1积分 (I*Ts) — 积分增益乘以采样时间 1 (默认) | 标量 | 向量

对于离散时间控制器,为积分增益乘以采样时间指定有限实数增益值。

注意

PID 调节工具,如 PID 调节器和 Closed-Loop PID Autotuner 模块,可调节增益 I,但无法调节增益 I*T s。因此,将从调节工具获得的积分增益值乘以采样时间,然后将其写入此参数。

当您使用 I*Ts 而不是 I 时,模块需要较少的计算来执行积分。这会改进生成代码的执行时间。

对于连续时间控制器,禁用使用 I*Ts 并改用 I 参数。

可调: No

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部,将控制器设置为具有积分动作的类型,并启用使用 I*Ts 参数。

编程用法模块参数:I类型:标量、向量默认值:1使用 I*Ts — 使用积分增益乘以采样时间 off (默认) | on

对于具有积分动作的离散时间控制器,该模块将积分增益作为输入,并在内部将其乘以采样时间,作为执行积分的一部分。如果您启用此参数,您将显式指定积分增益乘以采样时间作为输入 (I*Ts),代替积分增益 (I)。这样做可以减少内部计算的次数,并且在您要改进所生成代码的执行时间时非常有用。

如果您启用信号跟踪或抗饱和模式反算,并且启用 I*Ts,则还必须将跟踪增益参数 Kt 设置为 Kt*Ts,并将反算系数 Kb 设置为 Kb*Ts。

对于连续时间控制器,启用此参数对积分增益不起作用。

依存关系

要启用此参数,请将控制器设置为具有积分动作的控制器类型。

编程用法模块参数:UseKiTs类型:字符串、字符向量值:"on"、"off"默认值:"on"导数(D) — 导数增益 0 (默认) | 标量 | 向量

为导数增益指定有限实数增益值。

可调: Yes

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部,并将控制器设置为 PID 或 PD。

编程用法模块参数:D类型:标量、向量默认值:0使用滤波导数 — 将滤波器应用于导数项 on (默认) | off

仅针对离散时间 PID 控制器,取消选中此选项以将滤波后的导数替换为未滤波的离散时间微分器。执行此操作时,控制器输出的导数项变为:

Dz−1zTs(cr−y).

对于连续时间 PID 控制器,始终对导数项进行滤波。

依存关系

要启用此参数,请将时域设置为离散时间,并将控制器设置为具有导数项的类型。

编程用法模块参数:UseFilter类型:字符串、字符向量值:"on"、"off"默认值:"on"滤波器系数(N) — 导数滤波器系数 100 (默认) | 标量 | 向量

为滤波器系数指定有限实数增益值。滤波器系数确定滤波器在模块的导数动作中的极点位置。滤波器极点的位置取决于时域参数。

当时域为连续时间时,极点位置为 s = -N。

当时域为离散时间时,极点位置取决于滤波器方法参数。

滤波器方法滤波器极点的位置前向欧拉zpole=1−NTs后向欧拉zpole=11+NTs梯形zpole=1−NTs/21+NTs/2

模块不支持 N = Inf(理想的未滤波导数)。当时域为离散时间时,可以清除使用滤波导数以删除导数滤波器。

可调: Yes

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部,并将控制器设置为 PID 或 PD。

编程用法模块参数:N类型:标量、向量默认值:100设定点权重(b) — 比例设定点权重 1 (默认) | 标量 | 向量

控制器比例项的设定点权重。二自由度控制器输出的比例项为 P (br - y),其中 r 是参考信号,y 是测得的被控对象输出。将 b 设置为 0 将去除对参考信号的比例动作,这样可以减少系统响应对设定点步长变化的过冲。更改 b 和 c 的相对值会改变扰动抑制和设定点跟踪之间的平衡。

可调: Yes

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部。

编程用法模块参数:b类型:标量、向量默认值:1设定点权重(c) — 导数设定点权重 1 (默认) | 标量 | 向量

控制器导数项的设定点权重。二自由度控制器的导数项作用于 cr - y,其中 r 是参考信号,y 是测量的被控对象输出。因此,将 c 设置为 0 将去除对参考信号的导数动作,这样可以减少对设定点步长变化的瞬时响应。将 c 设置为 0 可产生一种既能实现有效的扰动抑制和顺利的设定点跟踪,又不会产生过多瞬时响应的控制器。更改 b 和 c 的相对值会改变扰动抑制和设定点跟踪之间的平衡。

可调: Yes

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部并将控制器设置为具有导数动作的类型。

编程用法模块参数:c类型:标量、向量默认值:1选择调节方法 — 用来自动调整控制器系数的工具 基于传递函数(PID 调节器) (默认) | 基于频率响应

如果您有 Simulink Control Design 软件,则可以自动调整在模块内部应用的 PID 系数。为此,请使用此参数选择调整工具,然后点击调节。

基于传递函数(PID 调节器)

使用 PID 调节器,您可以在检查相关系统响应以验证性能的同时交互调节 PID 系数。PID 调节器可以调节所有系数 P、I、D 和 N 以及设定点系数 b 和 c。默认情况下,这种 PID 调节器适合线性化被控对象模型。对于无法线性化的模型,您可以根据从仿真或测量的响应数据估算出的被控对象模型来调整 PID 系数。有关详细信息,请参阅 Design Two-Degree-of-Freedom PID Controllers (Simulink Control Design)。

基于频率响应

使用基于频率响应的 PID 调节器,它根据通过仿真获得的频率响应估计数据来调节 PID 控制器系数。这种调整方法特别适用于不可线性化或线性化为零的被控对象。基于频率响应的 PID 调节器调节系数 P、I、D 和 N,但不调节设定点系数 b 和 c。有关详细信息,请参阅Design PID Controller from Plant Frequency-Response Data (Simulink Control Design)。

这两种调整方法都采用单回路控制配置。Simulink Control Design 软件提供适合更复杂配置的其他调整方法。有关调整 PID Controller 模块的其他方法的信息,请参阅Choose a Control Design Approach (Simulink Control Design)。

依存关系

要启用此参数,请在常设选项卡中将控制器参数源设置为内部。

启用过零检测 — 在重置时以及在进入或退出饱和状态时检测过零点 on (默认) | off

过零检测可以准确无误地确定信号的不连续性,而无需检测特别小的时间步,因为这样可能会大大延长仿真时间。如果在 PID Controller 模块中选择限制输出或者激活外部重置,激活过零检测可以缩短仿真时的计算时间。选择此参数可在以下时间激活过零检测:

在初始状态重置时

在进入上限或下限饱和状态时

在退出上限或下限饱和状态时

有关过零检测的详细信息,请参阅过零检测。

编程用法模块参数:ZeroCross类型:字符串、字符向量值:"on"、"off"默认值:"on"初始化:源 — 积分器和导数初始条件的信源 内部 (默认) | 外部

Simulink 使用初始条件在仿真开始时或在指定的触发事件发生时初始化积分器和导数滤波器(或未滤波的导数)输出。(请参阅外部重置参数。)这些初始条件确定初始模块输出。使用此参数选择如何向模块提供初始条件值。

内部

使用积分器初始条件和滤波器初始条件参数指定初始条件。如果未选择使用滤波导数,请使用微分器参数指定未滤波的微分器的初始条件,而不是滤波器初始条件。

外部

使用模块输入从外部指定初始条件。额外的输入端口 Io 和 Do 出现在模块中。如果未选择使用滤波导数,请在 Do 处提供未滤波的微分器的初始条件,而不是滤波器初始条件。

编程用法 模块参数:InitialConditionSource类型:字符串、字符向量值:"internal"、"external"默认值:"internal" 积分器 — 积分器初始条件 0 (默认) | 标量 | 向量

Simulink 在仿真一开始或在发生指定的触发事件时(请参阅外部重置)使用积分器初始条件来初始化积分器。积分器初始条件与滤波器初始条件一起确定 PID controller 模块的初始输出。

积分器初始条件不能是 NaN 或 Inf。

依存关系

要使用此参数,请在初始化选项卡中将源设置为内部,然后将控制器设置为具有积分动作的类型。

编程用法模块参数:InitialConditionForIntegrator类型:标量、向量默认值:0滤波器 — 滤波器初始条件 0 (默认) | 标量 | 向量

Simulink 在仿真一开始或在发生指定的触发事件时(请参阅外部重置)使用滤波器初始条件来初始化导数滤波器。积分器初始条件与滤波器初始条件一起确定 PID controller 模块的初始输出。

滤波器初始条件不能是 NaN 或 Inf。

依存关系

要使用此参数,请在初始化选项卡中将源设置为内部,并使用具有导数滤波器的控制器。

编程用法模块参数:InitialConditionForFilter类型:标量、向量默认值:0微分器 — 未滤波的导数的初始条件 0 (默认) | 标量 | 向量

使用未滤波的导数时,Simulink 使用此参数在仿真一开始或在发生指定的触发事件时(请参阅外部重置)初始化微分器。积分器初始条件和导数初始条件一起确定 PID controller 模块的初始输出。

导数初始条件不能是 NaN 或 Inf。

依存关系

要使用此参数,请将时域设置为离散时间,清除使用滤波导数复选框,然后在初始化选项卡中,将源设置为内部。

编程用法模块参数:DifferentiatorICPrevScaledInput类型:标量、向量默认值:0初始条件设置 — 应用初始条件的位置 自动 (默认) | 输出

使用此参数指定是否将积分器初始条件和滤波器初始条件参数应用于对应的模块状态或输出。您只能在命令行中使用 set_param 设置模块的 InitialConditionSetting 参数来更改此参数。

自动

除非模块在触发子系统或函数调用子系统中且启用了简化初始化模式,否则其他所有情况下均使用此选项。

输出

当模块在触发子系统或函数调用子系统中且启用了简化初始化模式时,使用此选项。

有关初始条件设置参数的详细信息,请参阅 Discrete-Time Integrator 模块。

此参数只能通过编程用法访问。

编程用法模块参数:InitialConditionSetting类型:字符串、字符向量值:"Auto"、"Output"默认值:"Auto"外部重置 — 用于重置积分器和滤波器值的触发器 无 (默认) | 上升沿 | 下降沿 | 任一沿 | 电平

指定使模块将积分器和滤波器重置为初始条件的触发条件。(如果未选择使用滤波导数,则触发器会将积分器和微分器重置为初始条件。)选择无之外的任何选项都将在模块上启用重置端口以接收外部重置信号。

积分器和滤波器(或微分器)输出在仿真开始时设置为初始条件,在仿真期间不会重置。

上升沿

当重置信号具有上升沿时重置输出。

下降沿

当重置信号具有下降沿时重置输出。

任一沿

当重置信号上升或下降时重置输出。

电平

当重置信号具有以下情况之一时重置输出:

在当前时间步为非零值时

从上一时间步的非零更改为当前时间步的零时

此选项在重置信号非零时使输出保持在初始条件。

依存关系

要启用此参数,请将控制器设置为具有导数或积分动作的类型。

编程用法模块参数:ExternalReset类型:字符串、字符向量值:"none"、"rising"、"falling"、"either"、"level"默认值:"none"线性化时忽略重置 — 强制线性化以忽略重置 off (默认) | on

选择此项可强制 Simulink 和 Simulink Control Design 线性化命令忽略在外部重置参数中指定的任何重置机制。忽略重置状态将允许您围绕某个工作点对模型进行线性化,即使该工作点会导致模块重置也一样。

编程用法模块参数:IgnoreLimit类型:字符串、字符向量值:"off"、"on"默认值:"off"启用跟踪模式 — 激活信号跟踪 off (默认) | on

信号跟踪使模块输出能够跟随您在 TR 端口提供的跟踪信号。激活信号跟踪后,跟踪信号与模块输出之间的差异将反馈给由跟踪增益 (Kt) 参数指定的增益为 Kt 的积分器输入。跟踪信号具有多种应用,包括无扰动切换和避免多回路控制结构中的饱和。

无扰动切换

使用信号跟踪可以实现系统在两个控制器之间切换时的无扰动切换。假设您要在 PID 控制器和另一个控制器之间转移控制权。为此,将控制器输出连接到 TR 输入,如下图所示。

有关详细信息,请参阅Bumpless Control Transfer with a Two-Degree-of-Freedom PID Controller。

多回路控制

使用信号跟踪来防止多回路控制方法中的模块饱和。有关使用单自由度 PID 控制器说明此方法的示例,请参阅Prevent Block Windup in Multiloop Control。

依存关系

要启用此参数,请将控制器设置为具有积分动作的类型。

编程用法模块参数:TrackingMode类型:字符串、字符向量值:"off"、"on"默认值:"off"跟踪系数(Kt) — 信号跟踪反馈回路的增益 1 (默认) | 标量

选择启用跟踪模式时,信号 TR 与模块输出之间的差异将反馈到具有增益 Kt 的积分器输入。使用此参数指定该反馈回路中的增益。

对于离散时间控制器,如果您选择模块的使用 I*Ts 参数,则将此参数设置为值 Kt*Ts,其中 Kt 是所需增益,Ts 是采样时间。

依存关系

要启用此参数,请选择启用跟踪模式。

编程用法模块参数:Kt类型:标量默认值:1饱和输出饱和限制输出 — 将模块输出限制为指定的饱和值 off (默认) | on

激活此选项可限制模块输出,因此无需在控制器后面另加 Saturation 模块。它还允许您激活模块内置的抗饱和机制(请参阅抗饱和方法参数)。使用下限和上限参数指定输出饱和界限。您也可以在外部指定饱和界限作为模块输入端口。

编程用法模块参数:LimitOutput类型:字符串、字符向量值:"off"、"on"默认值:"off"源 — 输出饱和界限的源 内部 (默认) | 外部

使用此参数指定如何提供模块输出的饱和上限及饱和下限。

内部

使用上限和下限参数指定输出饱和界限。

外部

使用模块输入端口从外部指定输出饱和界限。额外的输入端口 up 和 lo 出现在该模块上。您可以使用输入端口来实现由 Simulink 模型中的逻辑或其他计算确定并传递给该模块的输出饱和上限和下限。

编程用法 模块参数:SatLimitsSource类型:字符串、字符向量值:"internal"、"external"默认值:"internal" 上限 — 模块输出的饱和上限 Inf (默认) | 标量

指定模块输出的上限值。一旦比例、积分和导数动作的加权和高于饱和上限,模块输出将保持在该上限值。

依存关系

要启用此参数,请选择限制输出。

编程用法模块参数:UpperSaturationLimit类型:标量默认值:Inf下限 — 模块输出的饱和下限 -Inf (默认) | 标量

指定模块输出的下限。一旦比例、积分和微分动作的加权和低于饱和下限时,模块输出将保持在该下限值。

依存关系

要启用此参数,请选择限制输出。

编程用法模块参数:LowerSaturationLimit类型:标量默认值:-Inf线性化时忽略饱和界限 — 强制线性化以忽略输出限制 off (默认) | on

强制 Simulink 和 Simulink Control Design 线性化命令忽略在上限和下限参数中指定的模块输出限制。忽略输出限制允许您围绕某个工作点对模型进行线性化,即使该工作点会导致模块超出输出限制也一样。

依存关系

要启用此参数,请选择限制输出参数。

编程用法模块参数:LinearizeAsGain类型:字符串、字符向量值:"off"、"on"默认值:"off"抗饱和方法 — 积分器抗饱和方法 无 (默认) | 反算 | 钳位

如果选中了限制输出且控制器组件的加权和超出了指定的输出限制,模块输出将保持在指定的限制值。但是,积分器输出可以继续增加(积分器饱和),从而加大了模块输出与模块组件之和之间的差距。换句话说,即使输出看起来在饱和界限范围内,模块中的内部信号也可以无限大。如果没有积分器抗饱和机制,可能会产生以下两种结果:

如果进入积分器的信号的符号始终不变,积分器将继续积分直到溢出。溢出值是积分器输出的数据类型的最大值或最小值。

如果进入积分器的信号的符号在加权和超出输出界限时发生改变,它将需要很长时间来防止积分器饱和,并返回位于模块饱和界限范围内的加权和。

无论哪种情况,控制器性能都会受到影响。要在没有抗饱和机制的情况下消除饱和效果,可能需要解调控制器(例如,通过减小控制器增益),从而导致控制器速度缓慢。要避免此问题,请使用此参数激活抗饱和机制。

不使用抗饱和机制。

反算

当模块输出饱和时,通过将饱和控制信号与非饱和控制信号之间的差异反馈给积分器来防止积分器饱和。下图表示连续时间控制器的反算反馈电路。要查看控制器配置的实际反馈电路,请右键点击该模块,然后选择封装 > 查看封装内部。

使用反算系数(Kb) 参数指定抗饱和反馈电路的增益。通常,设置 Kb = I(对于具有导数动作的控制器,设置 Kb = sqrt(I*D))是恰当的。对于饱和时间相对较长的被控对象,反算很有效。[1]

钳位

当模块组件之和超出输出限制且积分器输出与模块输入具有相同的符号时,积分停止。当模块组件之和超出输出限制且积分器输出与模块输入具有相反的符号时,积分恢复。钳位有时称为条件积分。

对于饱和时间相对较小的被控对象,钳位可能很有用;但对于饱和时间较大的被控对象,它可能产生不良的瞬时响应。[1]

依存关系

要启用此参数,请选择限制输出参数。

编程用法 模块参数:AntiWindupMode类型:字符串、字符向量值:"none"、"back-calculation"、"clamping"默认值:"none" 反算系数(Kb) — 抗饱和反馈回路的增益系数 1 (默认) | 标量

当模块输出饱和时,back-calculation 抗饱和方法防止积分器饱和。它通过向积分器反馈饱和控制信号与非饱和控制信号之间的差异来实现此目的。使用反算系数(Kb) 参数指定抗饱和反馈电路的增益。有关详细信息,请参阅抗饱和方法参数。

对于离散时间控制器,如果选择模块的使用 I*Ts 参数,则将此参数设置为值 Kb*Ts,其中 Kb 是所需的系数,Ts 是采样时间。

依存关系

要启用此参数,请选择限制输出参数,并将抗饱和方法参数设置为反算。

编程用法模块参数:Kb类型:标量默认值:1积分器饱和限制输出 — 将积分器输出限制为指定的饱和界限 off (默认) | on

启用此参数可将积分器输出限制在指定范围内。当积分器输出达到界限时,积分动作将关闭以防止积分饱和。使用下限和上限参数指定饱和界限。

依存关系

要启用此参数,请将控制器设置为具有积分动作的控制器类型。

编程用法模块参数:LimitIntegratorOutput类型:字符串、字符向量值:"off"、"on"默认值:"off"上限 — 积分器的饱和上限 Inf (默认) | 标量

指定积分器输出的上限。一旦积分器输出超出此值,就会保持为该值。

依存关系

要启用此参数,请在积分器饱和下,选择限制输出。

编程用法模块参数:UpperIntegratorSaturationLimit类型:标量默认值:Inf下限 — 积分器的饱和下限 -Inf (默认) | 标量

指定积分器输出的下限。一旦积分器输出低于此值,就会保持为该值。

依存关系

要启用此参数,请在积分器饱和下,选择限制输出。

编程用法模块参数:LowerIntegratorSaturationLimit类型:标量默认值:-Inf数据类型

此选项卡中的参数主要用于使用 Fixed-Point Designer™ 生成定点代码。它们定义在生成代码时如何存储和处理与模块关联的数值量。

如果需要为定点代码生成配置数据类型,请点击打开定点工具并使用该工具配置选项卡中的其余参数。有关使用定点工具的信息,请参阅Autoscaling Data Objects Using the Fixed-Point Tool (Fixed-Point Designer)。

使用定点工具后,在必要时可以使用此选项卡中的参数调整定点数据类型设置。对于与模块关联的每个量,您可以指定:

浮点或定点数据类型,包括数据类型是否继承自模块中的上游值。

量的最小值和最大值,用于确定如何对量进行定标以使用定点表示。

要获取帮助以选择适当的值,请点击 以打开对应量的数据类型助手。有关详细信息,请参阅使用数据类型助手指定数据类型。

“数据类型”选项卡中具体列出的量取决于您配置 PID 控制器模块的方式。通常,您可以为以下类型的量配置数据类型:

乘积输出 - 存储在模块封装下执行的乘法的结果。例如,P 乘积输出存储增益模块的输出,该输出是模块输入与比例增益 P 的乘积。

参数 - 存储数值模块参数的值,例如 P、I 或 D。

模块输出 - 存储位于 PID 控制器模块封装下的模块的输出。例如,使用积分器输出指定名为 Integrator 的模块输出的数据类型。此模块位于 Integrator 子系统中的封装下,并计算控制器操作的积分项。

累加器 - 存储与求和模块关联的值。例如,SumI2 累加器设置与求和模块 SumI2 关联的累加器的数据类型。此模块位于 Anti-Windup 子系统的 Back Calculation 子系统中的封装下。

通常,您可以通过查看 PID Controller 模块封装并检查其子系统来查找与任何列出的参数关联的模块。您还可以使用模型资源管理器在封装下搜索列出的参数名称,例如 SumI2。(请参阅模型资源管理器。)

匹配输入和内部数据类型

默认情况下,模块中的所有数据类型都设置为继承: 从内部规则继承。使用此设置时,Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。

在某些情况下,模块内的数据类型之间可能会发生不兼容。例如,在连续时间下,封装下的 Integrator 模块只能接受 double 类型的信号。如果模块输入信号的类型不能转换为 double,例如 uint16,则生成代码时类型继承的内部规则会生成错误。

为了避免此类错误,可以使用“数据类型”设置强制进行数据类型转换。例如,您可以将 P 乘积输出、I 乘积输出和 D 乘积输出显式设置为 double,确保到达连续时间积分器的信号类型为 double。

通常,不建议在连续时间下将模块用于代码生成应用。但是,如果您将某些值显式设置为与模块中的下游信号约束不兼容的数据类型,则在离散时间下会发生类似的数据类型错误。在这种情况下,请使用“数据类型”设置确保所有数据类型在内部兼容。

定点运算参数整数舍入模式 — 定点运算的舍入模式 向下 (默认) | 向上 | 收敛 | 最邻近值 | 舍入 | 最简 | 零

指定定点运算的舍入模式。有关详细信息,请参阅舍入 (Fixed-Point Designer)。

模块参数始终舍入到最邻近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB® 舍入函数输入表达式。

编程用法 模块参数:RndMeth类型:字符向量值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'默认值:'Floor' 对整数溢出进行饱和处理 — 溢出操作的方法 off (默认) | on

指定对溢出是进行饱和处理还是绕回处理。

off - 溢出将绕回到数据类型可以表示的合适值。

例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。

on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

提示

如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。

如果您希望优化生成的代码的效率,请考虑清除此复选框。

清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除。

如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法模块参数:SaturateOnIntegerOverflow类型:字符向量值:'off' | 'on'默认值:'off'锁定数据类型设置以防止被定点工具更改 — 防止定点工具覆盖数据类型 off (默认) | on

选择此参数可防止定点工具覆盖您对此模块指定的数据类型。有关详细信息,请参阅Lock the Output Data Type Setting (Fixed-Point Designer)。

编程用法模块参数:LockScale类型:字符向量值:'off' | 'on'默认值:'off'状态属性

此选项卡中的参数主要用于代码生成。

状态名称(例如,'position') — 连续时间滤波器和积分器状态的名称 '' (默认) | 字符向量

对于连续时间 PID 控制器,为与积分器或滤波器关联的状态分配唯一名称。(有关离散时间 PID 控制器中的状态名称的信息,请参阅状态名称参数。)状态名称的用途举例如下:

用于生成代码中的对应变量

作为在仿真期间记录状态时存储名称的一部分

用于通过线性化模块获得的线性模型中的对应状态

有效的状态名称以字母或下划线字符开始,后跟字母数字或下划线字符。

依存关系

要启用此参数,请将时域设置为连续时间。

编程用法 参数:IntegratorContinuousStateAttributes、FilterContinuousStateAttributes 类型:字符向量 默认值:'' 状态名称 — 离散时间滤波器和积分器状态的名称 空字符串 (默认) | 字符串 | 字符向量

对于离散时间 PID 控制器,为与积分器或滤波器关联的状态分配唯一名称。(有关连续时间 PID 控制器中的状态名称的信息,请参阅状态名称(例如,'position') 参数。)

有效的状态名称以字母或下划线字符开始,后跟字母数字或下划线字符。状态名称的用途举例如下:

用于生成代码中的对应变量

作为在仿真期间记录状态时存储名称的一部分

用于通过线性化模块获得的线性模型中的对应状态

有关在代码生成中使用状态名称的详细信息,请参阅C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)。

依存关系

要启用此参数,请将时域设置为离散时间。

编程用法 参数:IntegratorStateIdentifier、FilterStateIdentifier 类型:字符串、字符向量 默认值:"" 状态名称必须解析为 Simulink 信号对象 — 要求将状态名称解析为信号对象 off (默认) | on

选择此参数会要求将离散时间积分器或滤波器状态名称解析为 Simulink 信号对象。

依存关系

要为离散时间积分器或滤波器状态启用此参数,请执行下列操作:

将时域设置为离散时间。

指定积分器或滤波器状态名称的值。

将模型配置参数信号解析设置为无以外的值。

编程用法模块参数:IntegratorStateMustResolveToSignalObject、FilterStateMustResolveToSignalObject类型:字符串、字符向量值:"off"、"on"默认值:"off"


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有