Main Content

feedback

多个模型的反馈连接

说明

示例

sys = feedback(sys1,sys2) 返回一个模型对象 sys,其中包含 sys1,sys2 的负反馈互连。

在上图中,闭环模型 sys 的输入向量为 u,输出向量为 y。sys1sys2 这两个模型必须都是连续的或者都是离散的,并且具有相同的采样时间。

示例

sys = feedback(sys1,sys2,feedin,feedout) 使用通过 feedinfeedout 指定的输入和输出连接来计算闭环模型 sys。当您只想连接 MIMO 系统的部分可用 I/O 时,请使用此语法。

示例

sys = feedback(sys1,sys2,'name') 使用 MIMO 模型 sys1sys2 各自的 I/O 名称指定的反馈连接计算闭环模型 sys。仅当一组 MIMO 系统中所有必需的 I/O 都正确命名时,才使用 'name' 标志。

示例

sys = feedback(___,sign) 为具有由 sign 指定的反馈类型的反馈环返回模型对象 sys。默认情况下,feedback 采用负反馈,并且等效于 feedback(sys1,sys2,-1)。要计算具有正反馈的闭环系统,请使用 sign = +1

示例

全部折叠

pendulumModelAndController.mat 包含一个 SISO 倒立摆传递函数模型 G 及其相关联的 PID 控制器 C

将倒立摆和控制器模型加载到工作区。

load('pendulumModelAndController','G','C');
size(G)
Transfer function with 1 outputs and 1 inputs.
size(C)
PID controller with 1 output and 1 input.

使用 feedbackGC 创建负反馈环。

sys = feedback(G*C,1)
sys =
 
         1.307e-06 s^3 + 3.136e-05 s^2 + 5.227e-06 s
  ---------------------------------------------------------
  2.3e-06 s^4 + 1.725e-06 s^3 - 4.035e-05 s^2 - 5.018e-06 s
 
Continuous-time transfer function.

sys 是使用负反馈获得的最终闭环连续时间传递函数。feedback 将 PID 控制器模型 C 转换为传递函数,然后将其连接到连续时间传递函数模型 G。有关详细信息,请参阅Rules That Determine Model Type

对于此示例,假设两个传递函数分别描述被控对象 G 和控制器 C

G(s)=2s2+5s+1s2+2s+3C(s)=5(s+2)s+10

创建被控对象和控制器传递函数。

G = tf([2 5 1],[1 2 3],'inputname',"torque",'outputname',"velocity");
C = tf([5,10],[1,10]); 

使用 feedbackGC 创建负反馈环。

sys = feedback(G,C,-1)
sys =
 
  From input "torque" to output "velocity":
  2 s^3 + 25 s^2 + 51 s + 10
  ---------------------------
  11 s^3 + 57 s^2 + 78 s + 40
 
Continuous-time transfer function.

sys 是使用负反馈并以扭矩为输入、速度为输出获得的最终闭环传递函数。

对于此示例,假设两个传递函数分别描述被控对象 G 和控制器 C

G(s)=2s2+5s+1s2+2s+3C(s)=5(s+2)s+10

创建被控对象和控制器传递函数。

G = tf([2 5 1],[1 2 3],'inputname',"torque",'outputname',"velocity");
C = tf([5,10],[1,10]); 

使用 feedbackGC 创建正反馈环。

sys = feedback(G,C,+1)
sys =
 
  From input "torque" to output "velocity":
  -2 s^3 - 25 s^2 - 51 s - 10
  ---------------------------
  9 s^3 + 33 s^2 + 32 s - 20
 
Continuous-time transfer function.

sys 是使用正反馈并以扭矩为输入、速度为输出获得的最终闭环传递函数。

根据下图,考虑在一个负反馈环中连接两个 MIMO 传递函数,它们各具有两个输入和两个输出。

对于此示例,使用 rss 创建两个随机连续状态空间模型。

G = rss(4,2,2);
C = rss(2,2,2);
size(G)
State-space model with 2 outputs, 2 inputs, and 4 states.
size(C)
State-space model with 2 outputs, 2 inputs, and 2 states.

根据上图,使用 feedback 在一个负反馈环中连接两个状态空间模型。

sys = feedback(G,C,-1);
size(sys)
State-space model with 2 outputs, 2 inputs, and 6 states.

得到的状态空间模型 sys 是具有 6 个状态的 2 输入 2 输出模型。负反馈环已完成,满足以下条件:

  • G 的第一个输出连接到 C 的第一个输入

  • G 的第二个输出连接到 C 的第二个输入

mimoPlantAndController.mat 包含一个 2 输入 2 输出传递函数被控对象模型 G 和一个 2 输入 2 输出传递函数控制器模型 C,连接方式如下:

首先,将被控对象模型和控制器模型加载到工作区。

load('mimoPlantAndController.mat','G','C');
size(G)
Transfer function with 2 outputs and 2 inputs.
size(C)
Transfer function with 2 outputs and 2 inputs.

默认情况下,feedback 会将 G 的第一个输出连接到 C 的第一个输入,并将 G 的第二个输出连接到 C 的第二个输入。为了按照图示连接被控对象和控制器,请先对这两个系统的 I/O 分别命名以确保正确连接。

G.InputName 
ans = 2x1 cell
    {'torque'}
    {'angle' }

G.OutputName
ans = 2x1 cell
    {'velocity'}
    {'force'   }

C.InputName
ans = 2x1 cell
    {'force'   }
    {'velocity'}

C.OutputName
ans = 2x1 cell
    {'angle' }
    {'torque'}

然后使用 'name' 标记和 feedback 命令根据 I/O 名称建立连接。

sys = feedback(G,C,'name');

生成的闭环负反馈传递函数 sys 具有所需顺序的反馈连接。

假设有一个具有五个输入与四个输出的状态空间被控对象 G 和一个具有三个输入与两个输出的状态空间反馈控制器 K。被控对象 G 的输出 1、3 和 4 必须连接到控制器 K 的输入,并且该控制器的输出连接到该被控对象的输入 2 和 4。

feedback6-01.png

对于此示例,使用 rss 函数为 GK 生成随机连续时间状态空间模型。

G = rss(3,4,5);
K = rss(3,2,3);

根据反馈环中要连接的输入和输出,定义 feedoutfeedin 向量。

feedin = [2 4];
feedout = [1 3 4];
sys = feedback(G,K,feedin,feedout,-1);
size(sys)
State-space model with 4 outputs, 5 inputs, and 6 states.

sys 是通过连接 GK 的指定输入和输出获得的最终闭环状态空间模型。

输入参数

全部折叠

将在反馈环中连接的系统,指定为动态系统模型。您可以使用的动态系统包括:

  • 连续时间或离散时间数值 LTI 模型,如 tfzpkpidpidstdss 模型。

  • 频率响应模型,如 frdgenfrd

  • 广义或不确定的 LTI 模型,如 genssuss (Robust Control Toolbox) 模型。(使用不确定模型需要 Robust Control Toolbox™ 软件。)

    生成的反馈环采用

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

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

有关详细信息,请参阅动态系统模型

sys1sys2 是两种不同模型类型时,feedback 使用优先级规则来确定生成的模型 sys。例如,当状态空间模型和传递函数在反馈环中连接时,基于优先级规则,得到的系统是状态空间模型。有关详细信息,请参阅Rules That Determine Model Type

要使用的输入的子集,指定为向量。

在图中,feedin 包含 MIMO 被控对象 P 的输入向量的索引,并指定反馈环中涉及输入 u 的哪个子集。生成的模型 sys 具有与 G 相同的输入,其顺序保持不变。

有关示例,请参阅指定反馈环中的输入和输出连接

要使用的输出的子集,指定为向量。

feedout 指定 MIMO 被控对象 G 的哪些输出用于反馈。生成的模型 sys 具有与 G 相同的输出,其顺序保持不变。

有关示例,请参阅指定反馈环中的输入和输出连接

反馈的类型,对于负反馈,指定为 -1;对于正反馈,指定为 +1feedback 默认采用负反馈。

输出参量

全部折叠

闭环系统,以 SISO 或 MIMO 动态系统模型形式返回。sys 可以是以下项之一,具体取决于优先级规则:

  • 连续时间或离散时间数值 LTI 模型,如 tfzpksspidpidstd 模型。

  • 广义或不确定的 LTI 模型,如 genssuss (Robust Control Toolbox) 模型。(使用不确定模型需要 Robust Control Toolbox 软件。)

sys1sys2 是两种不同模型类型时,feedback 使用优先级规则来确定生成的模型 sys。例如,当状态空间模型和传递函数在反馈环中连接时,基于Rules That Determine Model Type中概述的优先级规则,生成的系统是状态空间模型。

限制

  • 反馈连接不能有代数环。例如,如果 D1 和 D2sys1sys2 的馈通矩阵,则此条件等效于:

    • 在使用负反馈时 I + D1D2 非奇异

    • 在使用正反馈时 I − D1D2 非奇异

提示

版本历史记录

在 R2006a 之前推出