主要内容

积分器

集成信号

  • 集成块

库:
金宝appSimulink /常用块
金宝appSimulink / Continuous

描述

积分器Block集成了一个关于时间的输入信号,并将结果作为输出信号提供。

金宝app®积分器块作为具有一个状态的动态系统。块动力学由:

x ˙ t ) u t ) y t ) x t ) x t 0 ) x 0

地点:

  • u是块输入。

  • y是块输出。

  • x是块状态。

  • x0的初始条件是x

虽然这些方程在连续时间内定义了精确的关系,但Simulink使用数值近似方法以有限精度对它们进行评估。金宝app金宝appSimulink可以使用几种不同的数值积分方法来计算块的输出,每种方法在特定的应用中都有优势。使用解算器窗格的“配置参数”对话框(请参见解算器窗格中),以选择最适合你的应用的技术。

方法的输出积分器使用当前输入值和前一个时间步的状态值,在当前时间步阻塞。为了支金宝app持这个计算模型,积分器Block保存当前时间步的输出,供解算器在下一个时间步计算其输出。该块还为求解器提供了用于在模拟开始时计算块的初始状态的初始条件。初始条件的默认值为0。使用块参数对话框为初始条件指定另一个值,或在块上创建一个初始值输入端口。

使用参数对话框:

  • 定义积分的上限和下限

  • 创建一个输入,根据输入的变化将块的输出(状态)重置为初始值

  • 创建一个可选的状态输出,以便块的输出值可以触发块重置

使用离散时间积分器块来创建一个纯粹的离散系统。

定义初始条件

你可以将初始条件定义为块对话框的参数,也可以从外部信号输入:

  • 要将初始条件定义为块参数,请指定初始条件源参数,内部中输入该值初始条件字段。

  • 若要从外部源提供初始条件,请设置初始条件源参数外部.块上出现了一个额外的输入端口。

    配置了初始条件端口的Integrator块有两个输入端口和一个输出端口。

    请注意

    如果您选择限制输出参数时,初始条件必须在饱和限制内。如果初始条件不在块饱和限制内,则块显示错误消息。

积分的极限

若要将输出信号限制在指定的值范围内,请选择限制输出并指定饱和度限制。当输出达到其中一个极限时,积分动作被禁用,以防止积分结束。在模拟过程中,您可以更改限制,但不能更改输出是否受限。该块使用以下标准确定输出信号值:

  • 当积分值小于或等于饱和下限时,输出信号值为饱和下限。

  • 当积分值在饱和下限和饱和上限之间时,输出为积分值。

  • 当积分值大于或等于饱和上限时,输出信号值为饱和上限。

若要生成指示状态何时受饱和限制的信号,请选择显示饱和端口.第二个输出端口出现在块上。

用于限制输出和显示饱和端口的Integrator块。该块有两个输出信号:第一个标记为output,第二个标记为Saturation。

饱和信号有三个值之一:

  • 1-受饱和上限限制的状态

  • 0-国家不限

  • 1-受低饱和极限限制的状态

当你限制积分器块输出,块有三个过零信号:一个检测积分值何时超过饱和上限,一个检测积分值何时小于饱和下限,一个检测积分值何时从饱和变为不饱和。

请注意

默认情况下,限制输出参数启用积分器有限块,使用饱和上限参数值设置为1,以及饱和下限参数值设置为0

包装循环状态

一些物理现象,如显示旋转运动的振荡器和机械,本质上是循环的、周期性的或旋转的。在Simulink方框图中对这些现象建模涉及对周期或循环信号金宝app的变化率进行积分,以获得运动状态。在较长的模拟时间跨度中,这种方法可以导致表示周期或循环信号的状态积分到较大的值。计算这些信号的三角函数值,如正弦或余弦,需要更长的时间,因为这些值由于角度减小而变大。当信号值变大时,解算器的性能和精度下降。

克服这个缺点的一种方法是将角状态重置为0当它达到2π时(或当它达到π时达到-π,为了数值对称)。该方法提高了正弦和余弦计算的精度,减少了角度缩减时间。但它也需要零点交叉检测,并引入求解器重置,这减慢了变步长求解器的仿真,特别是在大型模型中。

为了消除在包装点上的求解器重置,Integrator块支持您可以通过检查启用的包装状态金宝app包装状态在块参数对话框中。当你启用包装状态时,块图标会发生变化,表示该块具有自动换行状态。

配置为包装状态值的Integrator块。块图标用一个带箭头的圆标注。

积分器块支持封装状金宝app态,这些状态由封装状态的上、下值参数所限定。确定包装状态的算法为:

y x x x l x u ) x x u x l ) x x l x u x l 否则

地点:

  • xl是包装状态的较低值。

  • xu是包装状态的最大值。

  • y是输出。

对包装状金宝app态的支持提供了这些优势。

  • 当模型接近大角度和大状态值时,它消除了模拟的不稳定性。

  • 它减少了仿真期间求解器重置的次数,并消除了对过零检测的需要,提高了仿真时间。

  • 它消除了大角度值,加快了角态三角函数的计算速度。

  • 它提高了求解器的精度和性能,并允许无限的模拟时间。

重置状态

该块可以根据外部信号将其状态重置为指定的初始条件。要使块重置其状态,请选择之一外部复位选择。触发器端口出现在块的输入端口下方,并指示触发器类型。

配置为重置状态的积分器块。该块有两个输入信号,标记为input和Reset,还有一个输出信号,标记为output。

  • 选择不断上升的当复位信号从负值或零值上升到正值时,复位状态。

  • 选择下降当复位信号从正数值降到零或负值时,复位状态。

  • 选择要么当重置信号从零变为非零值、从非零值变为零或改变符号时,重置状态。

  • 选择水平当复位信号在当前时间步非零或从前一个时间步非零变为当前时间步零时,复位状态。

  • 选择保持水平当复位信号在当前时间步长非零时,复位状态。

复位口直通。如果块输出直接或通过一系列具有直接馈通的块反馈回该端口,则会产生一个代数循环(参见代数循环概念).使用Integrator块的状态端口来反馈块的输出,而不需要创建代数循环。

请注意

为了符合汽车工业软件可靠性协会(MISRA™)软件标准,您的模型必须使用布尔信号来驱动Integrator块的外部复位端口。

关于州港

选择显示状态端口复选框会导致Integrator块的顶部出现一个额外的输出端口,即状态端口。

配置为显示状态端口的积分器块。该块有一个标记为input的输入信号和两个输出信号。状态输出端口位于块的顶部,提供输出信号值的端口位于块的右侧。

除了以下情况外,状态端口的输出与块的标准输出端口的输出相同。如果块在当前时间步骤中被重置,则状态端口的输出是如果块未被重置,则该块的标准输出上将出现的值。状态端口的输出比Integrator块的输出端口的输出更早地出现在时间步长中。使用状态端口来避免在这些建模场景中创建代数循环:

  • 使用自复位积分器的系统

  • 将状态从一个启用的子系统传递到另一个子系统

    请注意

    当更新一个模型时,Simulink检查状态端口金宝app是否适用于这两个场景之一。如果不是,则显示错误消息。此外,您不能在以Accelerator模式执行的引用模型中记录此端口的输出。如果端口启用了日志记录,Simulink将在引用模型执行期间生成“信号未金宝app找到”警告。

指定块输出的绝对容差

默认情况下,Simul金宝appink软件使用“配置参数”对话框中指定的绝对容差值变步长求解器的误差容限)来计算Integrator块的输出。如果此值不能提供足够的错误控制,请在绝对的宽容字段。您指定的值用于计算所有块输出。

例子

全部展开

当需要根据块输出值重置Integrator块时,可以使用状态端口来避免创建代数循环。

打开模型SelfResettingIntegratorAlgLoop.模型中的Integrator块被配置为当重置信号从正值变为零或负值时重置。通过减去当前块输出值来创建复位信号1因此,每次输出值达到时,块都会重置自己1

mdl =“SelfResettingIntegratorAlgLoop”;open_system (mdl)

模型SelfResettingIntegratorAlgLoop。

由于复位端口具有直接馈通,因此使用输出信号来计算复位信号的值将创建一个代数循环。输出信号的值取决于复位信号的值,反之亦然。由于这种相互依赖,软件不能计算任何一个值。

当您尝试模拟模型时,软件会发出关于代数循环的诊断。要查看模型中的代数循环,请使用金宝appSimulink.BlockDiagram.getAlgebraicLoops函数。代数循环查看器打开并显示模型包含一个实际的代数循环。

金宝appSimulink.BlockDiagram.getAlgebraicLoops (mdl);

图SelfResettingIntegratorAlgLoop中的代数循环包含类型为uitable, uicontrol的对象。

代数循环在模型中突出显示。

模型SelfResettingIntegratorAlgLoop突出显示了从输出端口通过求和块进入重置端口的代数循环。

Integrator块在每个时间步骤的输出值之前计算状态值。因为状态值在输出值之前可用,所以可以使用状态值创建自重置Integrator块,而不需要创建代数循环。

要查看此解决方案,请打开模型SelfResettingIntegrator.Integrator块启用了状态端口。该模型不使用输出信号来计算复位信号的值,而是使用状态值。

mdl2 =“SelfResettingIntegrator”;open_system (mdl2)

模型SelfResettingIntegrator..

要验证使用状态而不是输出打破了代数循环,请调用金宝appSimulink.BlockDiagram.getAlgebraicLoops函数了。

金宝appSimulink.BlockDiagram.getAlgebraicLoops (mdl2);
没有发现代数循环。

为了看到自复位积分器在行动,模拟模型。

simOut = sim(mdl2);

要查看作用域中的输出和复位信号,双击作用域块。积分器块输出信号在值之间振荡0而且1.输出值重置为0每次复位信号值为0

Scope窗口显示输出和复位信号。

当您需要一个启用的子系统中的Integrator块来使用另一个启用的子系统中的Integrator块的状态时,可以使用状态端口来防止创建代数循环。

打开模型EnabledSubsystemStatesAlgLoop.该模型包含两个启用的子系统,一个而且B.常量块为每个子系统提供第一个输入。子系统输出一个另一个输入是子系统吗B.子系统输出B另一个输入是子系统吗一个.Pulse块为两个子系统提供启用信号。脉冲块启用子系统B直接。Pulse块输出使用一个Logical Operator块来创建子系统的启用信号一个.因此,启用的子系统的执行在子系统之间交替进行一个和子系统B随着脉冲块输出值的变化。

mdl =“EnabledSubsystemStatesAlgLoop”;open_system (mdl);

模型EnabledSubsystemStatesAlgLoop。

每个启用的子系统都包含一个Integrator块,该块使用输入端口为块提供初始条件。每个子系统中的Enable块被配置为在每次子系统执行时重置状态。当Integrator块的状态重置时,初始值来自初始条件输入端口,该端口连接到其他子系统中的Integrator块的输出。将状态从一个子系统传递到另一个子系统,允许在子系统之间交替执行时对信号进行持续集成。

子系统A和子系统B的内容以虚线分隔,并列显示。

然而,从子系统计算输出值B时,求解器需要子系统的输出一个反之亦然。将一个Integrator块的输出连接到另一个Integrator块的输入创建一个代数循环。要查看模型中的循环,请使用金宝appSimulink.BlockDiagram.getAlgebraicLoops函数。代数循环查看器打开并显示模型包含一个实际的代数循环。

金宝appSimulink.BlockDiagram.getAlgebraicLoops (mdl);

图“EnabledSubsystemStatesAlgLoop”中的代数循环包含类型为uicontrol的对象。

代数循环在模型中突出显示。

模型EnabledSubsystemStatesAlgLoop突出显示了代数循环。

为了避免创建这种代数循环,您可以使用状态端口而不是输出端口来将一个子系统中的Integrator块的状态传递给另一个子系统中的Integrator块的初始条件。求解器计算每个时间步骤中较早一点的块状态值,因此子系统的输出B不再依赖子系统的输出一个反之亦然。

要查看此解决方案,请打开模型EnabledSubsystemStates.输入、使能和输出信号是相同的,但输出来自子系统一个不再作为子系统的第二个输入B反之亦然。

mdl2 =“EnabledSubsystemStates”;open_system (mdl2)

模型EnabledSubsystemStates

该软件不支持将Integrator块的状态端金宝app口连接到已启用的子系统上的输出端口。子系统中Integrator块的状态端口一个连接到子系统中Integrator块的初始条件端口B使用全球可见的GoTo和From区块。子系统中Integrator块的状态端口B连接到子系统中Integrator块的初始条件端口B使用同样的策略。

子系统A和子系统B的内容并排显示,用虚线分隔,并用A和B标记。

若要验证使用状态端口是否解析了代数循环,请使用金宝appSimulink.BlockDiagram.getAlgebraicLoops函数了。

金宝appSimulink.BlockDiagram.getAlgebraicLoops (mdl2);
没有发现代数循环。

模拟模型。要查看结果,双击Scope块。Scope窗口显示了每个子系统的启用信号和输出信号。

Out = sim(mdl2);

Scope窗口显示这三个信号的跟踪。

有关在启用的子系统之间传递状态值的系统的另一个示例,请参见建立离合器锁定模型

港口

输入

全部展开

输入信号是一个实数标量、向量或该块所集成的矩阵。

该端口没有直通。

数据类型:

外部复位信号是一个布尔标量、向量或矩阵,用于将块状态重置为初始条件。看到重置状态

该端口有直通功能。

依赖关系

若要启用此端口,请选择外部复位

数据类型:布尔

初始条件信号是一个实值标量、向量或矩阵,用于设置块的初始条件。

该端口有直通功能。

依赖关系

若要启用此端口,请设置初始条件参数外部

数据类型:

输出

全部展开

输出信号是一个标量,矢量,或矩阵与积分输入信号的值。积分信号的维数与输入信号的维数匹配。

数据类型:

输出饱和信号是一个标量、矢量或矩阵,指示块状态中的每个元素何时受到饱和上限或下限的限制。信号值表示该值是否被限制,以及应用了哪个限制。

  • -1-受饱和度下限限制的值

  • 0-不受饱和度限制的值

  • 1-受饱和上限限制的值

有关更多信息,请参见积分的极限

依赖关系

若要启用此端口,请选择显示饱和端口

数据类型:

块状态信号是一个实值标量、向量或矩阵,其值与块状态值相匹配。

有关更多信息,请参见关于州港

依赖关系

若要启用此端口,请选择显示状态端口

数据类型:

参数

全部展开

指定用于外部复位信号的触发器类型。

  • 选择不断上升的当复位信号从负值或零值上升到正值,或从负值上升到零值时,复位状态。

  • 选择下降当复位信号从正数值降到零或负值,或从零数值降到负值时,复位状态。

  • 选择要么当重置信号从零变为非零值、从非零值变为零或改变符号时,重置状态。

  • 选择水平当复位信号在当前时间步非零或从前一个时间步非零变为当前时间步零时,复位状态。

  • 选择保持水平当复位信号在当前时间步长非零时,复位状态。

编程使用

块参数:ExternalReset
类型:字符向量,字符串
价值观:“没有”|“上升”|“下降”|“不是”|“水平”|“持有水平”
默认值:“没有”

初始条件选择来源:

  • 内部得到状态的初始条件初始条件参数。

  • 外部-从外部信号获得状态的初始条件。当您选择此选项时,块上将出现一个输入端口。

编程使用

块参数:InitialConditionSource
类型:字符向量,字符串
价值观:“内部”|“外部”
默认值:“内部”

属性的初始状态积分器块。

提示

金宝appSimulink软件不允许此块的初始条件为

依赖关系

设置初始条件源内部启用此参数。

设置初始条件源外部禁用此参数。

编程使用

块参数:InitialCondition
类型:标量或向量
默认值:' 0 '

将块的输出限制在饱和下限而且饱和上限参数。

  • 选中此复选框将块输出限制为饱和下限而且饱和上限参数。

  • 清除此复选框不会限制块输出值。

依赖关系

选择此参数将启用饱和下限而且饱和上限参数。

编程使用

块参数:LimitOutput
类型:字符向量,字符串
价值观:“关闭”|“上”
默认值:“关闭”

将积分的上限指定为标量、向量或矩阵。的值之间指定一个值输出最小而且输出最大参数值。

依赖关系

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

编程使用

块参数:UpperSaturationLimit
类型:字符向量,字符串
价值观:标量|向量|矩阵
默认值:“正”

将积分的下限指定为标量、向量或矩阵。的值之间指定一个值输出最小而且输出最大参数值。

依赖关系

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

编程使用

块参数:LowerSaturationLimit
类型:字符向量,字符串
价值观:标量|向量|矩阵
默认值:“负”

对象之间的状态包装包装状态上限而且包装状态下值参数。启用环绕状态可以消除对过零检测的需求,减少求解器重置,提高求解器性能和精度,并在建模旋转和循环状态轨迹时增加仿真时间跨度。

如果你指定包装状态上限作为而且包装状态下值作为,则不会发生包装。

依赖关系

选择此参数将启用包装状态上限而且包装状态下值参数。

编程使用

块参数:WrapState
类型:字符向量,字符串
价值观:“关闭”|“上”
默认值:“关闭”

块输出的上限。

依赖关系

选择包装状态启用此参数。

编程使用

块参数:WrappedStateUpperValue
类型:标量或向量
价值观:“2 *π”
默认值:“π”

块输出的下限。

依赖关系

选择包装状态启用此参数。

编程使用

块参数:WrappedStateLowerValue
类型:标量或向量
价值观:' 0 '
默认值:“-π”

选中此复选框可向块添加饱和输出端口。清除此复选框时,该块没有饱和输出端口。

依赖关系

选择此参数将启用饱和输出端口。

编程使用

块参数:ShowSaturationPort
类型:字符向量,字符串
价值观:“关闭”|“上”
默认值:“关闭”

选中此复选框可向块添加状态输出端口。清除此复选框时,该块没有状态输出端口。

依赖关系

选择此参数将启用状态输出端口。

编程使用

块参数:ShowStatePort
类型:字符向量,字符串
价值观:“关闭”|“上”
默认值:“关闭”
  • 如果你进入汽车或-1,则Simulin金宝appk在“配置参数”对话框中使用绝对公差值(请参阅解算器窗格中)来计算块状态。

  • 如果输入一个实标量,则该值将覆盖“配置参数”对话框中用于计算所有块状态的绝对容差。

  • 如果输入一个实向量,则该向量的维数必须与块中连续状态的维数匹配。这些值覆盖“配置参数”对话框中的绝对容差。

编程使用

块参数:AbsoluteTolerance
类型:字符向量、字符串、标量或向量
价值观:“汽车”|' 1 '|任何正实标量或向量
默认值:“汽车”

导致Simu金宝applink线性化命令将此块视为不可重置的,并且对其输出没有限制,而不管块的重置和输出限制选项的设置。

提示

使用此复选框可围绕导致积分器复位或饱和的工作点线性化模型。

编程使用

块参数:IgnoreLimit
类型:字符向量,字符串
价值观:“关闭”|“上”
默认值:“关闭”

选中以启用过零检测。有关更多信息,请参见讨论二阶导数过零检测

编程使用

块参数ZeroCross
类型:字符向量|字符串
“关闭”|“上”
默认的“上”
  • 要为单个州分配名称,请在引号之间输入名称,例如,“速度”

  • 要为多个州分配名称,请输入一个用括号括起来的逗号分隔的列表,例如,{'a', 'b', 'c'}.每个名称必须唯一。

  • 状态名仅应用于所选块。

  • 州的数目必须在州名的数目中平均分配。

  • 可以指定比状态少的名称,但不能指定比状态多的名称。

    例如,您可以在具有四个状态的系统中指定两个名称。第一个名字适用于前两个状态,第二个名字适用于后两个状态。

  • 用MATLAB中的变量指定状态名®工作区,输入不带引号的变量。变量可以是字符向量、字符串、单元格数组或结构。

编程使用

块参数:ContinuousStateAttributes
类型:字符向量,字符串
价值观:' '|用户定义
默认值:' '

块特征

数据类型

直接引线

是的一个

多维信号

没有

适应信号

没有

讨论二阶导数过零检测

是的

一个该块的端口具有不同的直馈特性。具体请参见端口描述。

扩展功能

版本历史

R2006a之前介绍