主要内容

使用时序逻辑控制图表执行

时间逻辑根据时间来控制图表的执行。在状态操作和转换中,您可以使用两种类型的时间逻辑:

  • 基于事件的时序逻辑跟踪重复发生的事件。您可以使用任何显式或隐式事件作为基础事件。

  • 绝对时间时间逻辑跟踪状态变为活动状态以来所经过的时间。绝对时间时态逻辑运算符的计时取决于状态流的类型®图:

    • Simulink中的图表金宝app®模型根据仿真时间定义了绝对时间时序逻辑。

    • MATLAB独立图表®根据挂钟时间定义绝对时间时间逻辑,其精度限制在1毫秒。

时间逻辑运算符

要根据时间逻辑定义状态流图的行为,请使用本表中列出的操作符。这些操作符可以出现在:

  • 状态行动

  • 源自状态的转换路径上的操作

每个时间逻辑运算符都有一个相关联的状态,即动作出现的状态或转换路径的起源状态。每当关联状态重新激活时,状态流图将重置每个操作符使用的计数器。

操作符 语法 描述 例子

后(n, E)

n正整数或求值为正整数值的表达式。

E操作符的基事件。

返回真正的如果事件E至少发生过n关联状态变为活动状态以来的次数。否则,操作符返回

当图表处理事件广播时显示状态消息E的第三期播出E在国家变得活跃之后。

后(3 E):disp (“上”);

当图表处理事件的广播时,转换出关联状态E,从第五次播出E在国家变得活跃之后。

后(5 E)

后(n,蜱虫)

n正整数或求值为正整数值的表达式。

返回真正的如果图表至少醒过来了n关联状态变为活动状态以来的次数。否则,操作符返回

隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

当图表自状态变为活动状态以来至少第七次被唤醒时,转换出关联状态,但仅当变量临时大于98.6。

After (7,tick)[temp > 98.6]

后(n, sec)

(n, msec之后)

后(n,购买)

n是正实数或求值为正实数的表达式。

返回真正的如果至少n自关联状态变为活动状态以来已经过了时间单位。否则,操作符返回

在Simulink模型中的图表金宝app中,指定以秒为单位的时间(证券交易委员会),毫秒(msec),或微秒(购买).

在MATLAB的独立图表中,以秒为单位指定时间(证券交易委员会).运算符创建一个MATLAB计时器对象,该对象生成隐式事件以唤醒图表。MATLAB计时器对象的精度限制在1毫秒。有关更多信息,请参见独立图表中的事件

设置临时变量来每当图表被唤醒时,从关联状态处于活动状态至少12.3秒开始。

后(12.3秒):temp = LOW;

在(n, E)

n正整数或求值为正整数值的表达式。

E操作符的基事件。

返回真正的如果事件E已经发生了n关联状态变为活动状态以来的次数。否则,操作符返回

当图表处理事件的第三次广播时显示状态消息E在国家变得活跃之后。

(3 E):disp (“上”);

当图表处理事件的第五次广播时,转换出关联状态E在国家变得活跃之后。

在(E)

在(n,蜱虫)

n正整数或求值为正整数值的表达式。

返回真正的如果星盘已经完全苏醒n关联状态变为活动状态以来的次数。否则,操作符返回

隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

当图表自状态变为活动状态以来第七次唤醒时,转换出关联状态,但仅当变量临时大于98.6。

At (7,tick)[temp > 98.6]

在(n, sec)

n是正实数或求值为正实数的表达式。

返回真正的如果完全n关联状态变为活动状态后已经过了几秒。否则,操作符返回

使用作为一个绝对时间时态逻辑算子,它只在MATLAB的独立图表中被支持。金宝app运算符创建一个MATLAB计时器对象,该对象生成隐式事件以唤醒图表。MATLAB计时器对象的精度限制在1毫秒。有关更多信息,请参见独立图表中的事件

设置临时变量来如果这个状态已经激活了12.3秒。

在(12.3秒):temp = HIGH;
之前

之前(n, E)

n正整数或求值为正整数值的表达式。

E操作符的基事件。

返回真正的如果事件E发生的次数少于n关联状态变为活动状态以来的次数。否则,操作符返回

时间逻辑算子之前仅在S金宝appimulink模型的状态流程图中支持。金宝app

当图表处理事件的第一次和第二次广播时,显示状态消息E在国家变得活跃之后。

之前(3 E):disp (“上”);

当图表处理事件的广播时,转换出关联状态E,但前提是该国家的活跃广播少于五次E

前(5 E)

之前(n,蜱虫)

n正整数或求值为正整数值的表达式。

返回真正的如果已经醒来的图表少于n关联状态变为活动状态以来的次数。否则,操作符返回

隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

时间逻辑算子之前仅在S金宝appimulink模型的状态流程图中支持。金宝app

在图表唤醒时转换出关联状态,但仅当变量临时高于98.6,自状态活跃以来,该图表只苏醒了不到7次。

前(7,勾)[temp > 98.6]

(n,秒前)

(n, msec之前)

之前(n,购买)

n是正实数或求值为正实数的表达式。

返回真正的如果小于n自关联状态变为活动状态以来已经过了时间单位。否则,操作符返回

指定以秒为单位的时间(证券交易委员会),毫秒(msec),或微秒(购买).

时间逻辑算子之前仅在S金宝appimulink模型的状态流程图中支持。金宝app

设置临时变量来地中海每当图表被唤醒时,但仅当相关状态处于活动状态的时间少于12.3秒时。

前(12.3秒):temp = MED;
每一个

每一个(n, E)

n正整数或求值为正整数值的表达式。

E操作符的基事件。

返回真正的在每一个nth事件的发生E因为关联状态变为活动状态。否则,操作符返回

当图表每三次处理一次事件广播时显示一条状态消息E在国家变得活跃之后。

每一个(3 E):disp (“上”);

当图表每五次处理一次事件广播时,将转换出关联状态E在国家变得活跃之后。

每一个(5 E)

每一个(n,蜱虫)

n正整数或求值为正整数值的表达式。

返回真正的在每一个nth自关联状态变为活动状态以来,图表唤醒的时间。否则,操作符返回

隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

每七次从关联状态转换一次蜱虫事件自状态变为活动,但只有当变量临时大于98.6。

每(7,tick)[temp > 98.6]

每一个(n, sec)

n是正实数或求值为正实数的表达式。

返回真正的每一个n关联状态变为活动状态的秒数。否则,操作符返回

使用每一个作为一个绝对时间时态逻辑算子,它只在MATLAB的独立图表中被支持。金宝app运算符创建一个MATLAB计时器对象,该对象生成隐式事件以唤醒图表。MATLAB计时器对象的精度限制在1毫秒。有关更多信息,请参见独立图表中的事件

增加临时变量5每12.3秒,状态是活跃的。

每一个(12.3秒):温度=温度+5;
temporalCount

temporalCount (E)

E操作符的基事件。

返回事件的出现次数E因为关联状态变为活动状态。

使用temporalCount仅在Simulink模型中的状态流程图中支持基于事件的时态逻辑运算符。金宝app金宝app

访问数组的连续元素每当图表处理事件的广播时E

on E: y = M(temporalCount(E));
temporalCount(勾选)

返回自关联状态变为活动状态以来图表被唤醒的次数。

隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app

使用temporalCount仅在Simulink模型中的状态流程图中支持基于事件的时态逻辑运算符。金宝app金宝app

存储输入数据的值u在数组的连续元素中

en,du: M(temporalCount(tick)+1) = u;

temporalCount (sec)

temporalCount(毫秒)

temporalCount(购买)

返回自关联状态变为活动状态以来经过的时间长度。

指定以秒为单位的时间(证券交易委员会),毫秒(msec),或微秒(购买).

存储状态变为活动后的毫秒数。

en,du: y = temporalCount(msec);
运行

运行(sec)

返回自关联状态变为活动状态以来经过的时间长度。

相当于temporalCount (sec)

存储状态变为活动后的秒数。

En,du: y =流逝(秒);
另一种执行方式运行(sec)

当图表处理事件的广播时E,从关联状态转换出来,并显示状态变为活动后所经过的时间。

E {disp (et);}

数(C)

C表达式的值是真正的

返回自条件表达式以来图表被唤醒的次数C成为真正的相关的状态变得活跃起来。

状态流图将重置运算符,如果是条件表达式C就变成了或者关联状态变为非活动状态。

在Simulink模型的图表中金宝app,的值可能取决于步长。更改模型的求解器或步长会影响计算程序产生的结果操作符。

转换出关联状态时,变量x在执行超过五次图表时大于或等于2。

[count(x>=2) > 5]

存储自变量以来的图表执行次数x大于5。

En,du: y = count(x>5);
持续时间

持续时间(C)

时间(C, sec)

持续时间(C,毫秒)

持续时间(C,购买)

  • C表达式的值是真正的

返回从条件表达式开始经过的时间长度C成为真正的相关的状态变得活跃起来。

指定以秒为单位的时间(证券交易委员会),毫秒(msec),或微秒(购买).默认单位为秒。

状态流图将重置持续时间运算符,如果是条件表达式C就变成了或者关联状态变为非活动状态。

时间逻辑算子持续时间在MATLAB金宝app的独立图表中不支持。

转换出变量时的状态x大于或等于0的时间超过0.1秒。

[duration(x>=0) > 0.1]

存储自变量开始的毫秒数x大于5,状态变为活跃状态。

En,du: y = duration(x>5,msec);

可以使用引号将关键字括起来“滴答”“秒”“msec”,“购买”.例如,“滴答”后(5)等于蜱虫后(5)

请注意

时间逻辑运算符之前,每一个比较阈值n到整数类型的内部计数器。如果n是由不是2的整数次幂的斜率或非零偏置定义的定点数,则由于舍入,比较可能产生意想不到的结果。有关更多信息,请参见定点数据的关系操作

时间逻辑的例子

定义时间延迟

这个例子展示了如何在连续时间图中定义两个绝对时间延迟。

图表的执行遵循以下步骤:

  1. 当星图苏醒时,状态输入首先激活。

  2. 经过5.33毫秒的模拟时间后,从输入输出发生。

  3. 国家输入变为非活动状态输出变得活跃。

  4. 经过10.5秒的模拟时间,从输出输入发生。

  5. 国家输出变为非活动状态输入变得活跃。

重复步骤2到5,直到模拟结束。

如果图表具有离散的采样时间,则图表中的任何动作都以该采样时间的整数倍发生。例如,假设您更改配置参数,使Simulink®求解器使用大小为0.1秒的固定步长。金宝app然后是状态的第一个转变输入输出发生在t = 0.1秒时。这种行为适用于解算器,因为它不会在t = 5.33毫秒唤醒图表。相反,求解器以0.1秒的整数倍数唤醒图表,例如t = 0.0和0.1秒。

检测运行时间

在这个例子中,a一步(金宝app模型)block为状态流程图提供了一个单元步进输入。

图表决定何时输入u= 1:

  • 如果在t = 2秒之前输入等于1,则从开始

  • 如果在t = 2和t = 5秒之间输入等于1,则从开始媒介

  • 如果t = 5秒后输入等于1,则从开始

在已启用的子系统中使用绝对时间时序逻辑

您可以在驻留在有条件执行的子系统中的图表中使用绝对时间时间逻辑。当子系统被禁用时,图表将变为非活动状态,时间逻辑运算符将在图表休眠时暂停。在子系统重新启用和图表唤醒之前,操作员不会继续计算模拟时间。

该模型具有一个启用的子系统启用时的状态参数设置为举行

子系统包含一个图表,该图表使用操作符来触发转换。

信号编辑器(金宝app模型)Block提供了一个具有以下特征的输入信号:

  • 信号使子系统在t = 0时生效。

  • 信号在t = 2时使子系统失效。

  • 信号在t = 6时重新启动子系统。

这个图表显示了图表中所花费的总时间。当输入信号使子系统在时间t = 0时,状态一个变得活跃。当系统被启用时,运行时间会增加。当子系统在t = 2时被禁用时,图表将进入睡眠状态,并且运行时间停止增加。对于2 < t < 6,由于系统被禁用,运行时间冻结在2秒。当图表在t = 6唤醒时,经过的时间又开始增加。

从状态的转变一个B取决于经过的时间while状态一个是活动的,不在模拟时间上。因此,转换发生在t = 9时,此时经过的时间处于状态一个等于5秒。当转换发生时,输出值y从0到1。

此模型行为仅适用于您设置了Enable块参数的子系统启用时的状态举行.如果将参数设置为重置,当子系统重新启用时,图表将完全重新初始化。执行默认转换,并将所有时序逻辑计数器重置为0。

转换中基于事件的时序逻辑符号

在Simulink模型的状态流程图中,操作符金宝app,之前金宝app支持两种不同的表示法来表示转换中基于事件的时间逻辑。

  • 触发符号定义仅依赖于时间逻辑运算符的基本事件的转换。触发器表示法遵循以下语法:

    temporalLogicOperator(n, E) [C]
    地点:

    • temporalLogicOperator是布尔时态逻辑运算符。

    • n运算符的出现次数。

    • E操作符的基事件。

    • C是可选的条件表达式。

    使用触发器表示法时,只有当图表处理基事件的广播时,才会发生转换E

  • 有条件的符号定义依赖于基本事件和非基本事件的转换。条件表示法遵循以下语法:

    F (temporalLogicOperator(n,E) && C]
    地点:

    • temporalLogicOperator是布尔时态逻辑运算符。

    • n运算符的出现次数。

    • E操作符的基事件。

    • F是可选的非基事件。

    • C是可选的条件表达式。

    当对非基事件使用条件表示法时F时,只有当图表处理广播时,转换才会发生F.如果省略非基事件,则在图表处理任何显式或隐式事件时可能发生转换。

    在MATLAB的独立图表中不支持时间逻辑运算符的条件表示法。金宝app

例如,当图表处理基本事件的广播时,此转换标签使用触发器符号来指示脱离关联状态的转换E,从第五次播出E在国家变得活跃之后。

后(5 E)

相反,当状态至少在基本事件的五个广播中处于活动状态时,此转换标签使用条件表示法来指示从关联状态的转换E,即使图表没有处理广播E

((5 E)后)

请注意

操作员每一个金宝app支持触发器和条件符号。然而,对于这个运算符,这两种表示法是等价的。转换标签每一个(5 E)而且(每一个(5 E))控件时,指示脱离关联状态的转换kth基事件的广播E状态活跃后,在哪里k是5的倍数。

时间逻辑的最佳实践

在没有源状态的转换路径上不使用时序逻辑

时间逻辑运算符的值取决于它的关联状态何时变为活动状态。为了确保每个时态逻辑运算符都有唯一的关联状态,只在以下情况下使用这些运算符:

  • 状态行动

  • 源自状态的转换路径上的操作

不要在默认转场或图形函数中的转场上使用时间逻辑运算符,因为这些转场不是起源于状态。

使用绝对时间时间逻辑代替蜱虫在图表中金宝app模型

在Simulink模型的图表中金宝app,使用绝对时间时态逻辑的延迟表达式的值在语义上独立于模型的采样时间。相反,延迟表达式使用基于隐式事件的时间逻辑蜱虫取决于Simulink求解器使用的步长。金宝app

此外,具有输入事件的图表支持绝对时间时态逻辑。金宝app隐式事件蜱虫当Simuli金宝appnk模型中的状态流图有输入事件时,不支持。金宝app

请勿使用图表中的绝对时间时序逻辑金宝app模型

在Simulink模型中的图表金宝app中,使用不支持绝对时间时态逻辑运算符。金宝app相反,使用操作符。例如,假设您想使用表达式定义一个时间延迟(5.33秒)

要防止运行时错误,请将转换标签更改为后(5.33秒)

请勿使用每一个图表中的绝对时间时序逻辑金宝app模型

在Simulink模型中的图表金宝app中,使用每一个不支持绝对时间时态逻辑运算符。金宝app属性的外部自循环转换操作符。例如,假设您希望在图表执行期间每2.5秒打印一次活动状态的状态消息。

要防止运行时错误,请将状态操作替换为外部自循环转换。

在状态中添加历史连接,以便图表在每次自循环转换之前记住状态设置。看到使用历史连接记录状态活动

在独立图表中的多源转换路径中不使用时间逻辑MATLAB

MATLAB中的独立图表不支持在具有多个源状态的转换路径上使用时序逻辑金宝app运算符。例如,由于时间逻辑表达式,此独立图表产生运行时错误后(10秒)触发具有多个源状态的转换路径。

独立图表,包含从状态Positive和状态Negative到状态End的转换路径上的时间逻辑表达式。

要解决这个问题,请在单独的转换路径上使用时间逻辑表达式,每个转换路径具有单个源状态。

在不同的过渡路径上使用时间逻辑表达式的独立图表。

避免在独立图表的过渡路径中混合绝对时间时序逻辑和条件MATLAB

在MATLAB的独立图表中,运算符,每一个创建MATLAB计时器对象,这些对象生成隐式事件以唤醒图表。将这些操作符与相同转换路径上的条件组合在一起可能会导致意想不到的行为:

  • 时,转换路径上的条件为false计时器唤醒图表,图表执行而且活动状态的动作。

  • 该图表不重置计时器与操作符关联的对象而且.如果转换路径上的条件在稍后变为true,则转换不会发生,直到另一个显式或隐式事件唤醒图表。

例如,在这个图表中,从状态的转换路径一个B组合绝对时间时序逻辑触发器后(1秒)以及条件(保安).从状态的转变一个C绝对时间时间逻辑触发器后(5秒).每个转换都与计时器对象,该对象生成隐式事件。最初是局部变量警卫

结合绝对时间时序逻辑触发器和同一过渡路径上的条件的图表。

执行图表时,请说明一个变得活跃。该图表执行条目操作并显示消息“你好!”.一秒钟后,计时器与过渡有关一个B唤醒图表。由于转换无效,图表执行州内行动一个并显示消息“你好!”第二次。

假设2秒后,图表接收到输入事件E.图表执行州内行动一个改变的值警卫真正的.因为图表没有重置计时器与操作符关联,从一个B在另一个事件唤醒图表之前不会发生。

5秒钟后,计时器与过渡有关一个C唤醒图表。因为从一个B是否有效且有较高的执行顺序,图表不采取过渡状态C或显示消息“再见!”.相反,国家B变为活动状态,图表显示消息“再见!”

使用带有离散采样时间的图表更有效地生成代码

为不在触发或启用的子系统内的离散图表生成的代码使用整数计数器跟踪时间,而不是由Simulink提供的时间。金宝app这种行为允许在开销和内存方面更有效地生成代码,并允许此代码用于软件在环(SIL)和处理器在环(PIL)模拟模式。有关更多信息,请参见SIL和PIL模拟(嵌入式编码)

另请参阅

|||||||||(金宝app模型)|(金宝app模型)

相关的话题