主要内容

使用时态逻辑执行控制图

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

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

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

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

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

时序逻辑操作符

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

  • 状态行动

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

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

操作符 语法 描述 例子

后(n, E)

n是正整数或计算为正整数值的表达式。

E是运算符的基事件。

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

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

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

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

后(5 E)

后(n,蜱虫)

n是正整数或计算为正整数值的表达式。

返回真正的如果图表苏醒了的话n关联状态变为活动状态以来的时间。否则,操作符返回

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

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

蜱虫后(7日)(临时> 98.6)

后(n, sec)

(n, msec之后)

后(n,购买)

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

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

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

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

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

on after(12.3,sec): temp = LOW;

在(n, E)

n是正整数或计算为正整数值的表达式。

E是运算符的基事件。

返回真正的如果事件E发生完全n关联状态变为活动状态以来的时间。否则,操作符返回

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

在(3 E): disp(“on”);

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

在(E)

在(n,蜱虫)

n是正整数或计算为正整数值的表达式。

返回真正的如果星图苏醒了n关联状态变为活动状态以来的时间。否则,操作符返回

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

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

蜱虫(7日)(临时> 98.6)

在(n, sec)

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

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

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

设置临时变量来如果状态正好处于活动状态12.3秒。

on at(12.3,sec): temp = HIGH;
之前

之前(n, E)

n是正整数或计算为正整数值的表达式。

E是运算符的基事件。

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

时间逻辑算符之前仅在Simulink模型中的状态流图中支持。

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

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

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

前(5 E)

之前(n,蜱虫)

n是正整数或计算为正整数值的表达式。

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

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

时间逻辑算符之前仅在Simulink模型中的状态流图中支持。

在图表唤醒时转换出关联状态,但只有当变量临时超过了98.6,而且自从这个州开始活跃以来,这个图表只出现了不到7次。

蜱虫(7日)(临时> 98.6)

(n,秒前)

(n, msec之前)

之前(n,购买)

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

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

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

时间逻辑算符之前仅在Simulink模型中的状态流图中支持。

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

on before(12.3,sec): temp = MED;
每一个

每一个(n, E)

n是正整数或计算为正整数值的表达式。

E是运算符的基事件。

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

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

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

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

每一个(5 E)

每一个(n,蜱虫)

n是正整数或计算为正整数值的表达式。

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

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

每隔7次从关联状态转换一次蜱虫事件自状态变为活动以来,但只有当变量临时高于98.6度。

每一个(7,蜱虫)(临时> 98.6)

每一个(n, sec)

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

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

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

增加临时每12.3秒变量5表示状态为活动。

在每(12.3,秒):temp = temp+5;
temporalCount

temporalCount (E)

E是运算符的基事件。

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

使用temporalCount作为基于事件的时态逻辑运算符,仅在Simulink模型中的状态流图中支持。

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

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

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

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

使用temporalCount作为基于事件的时态逻辑运算符,仅在Simulink模型中的状态流图中支持。

存储输入数据的值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模型中的图表中可能取决于步长。改变模型的求解器或步长会影响模型生成的结果操作符。

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

(计数(x > = 2) > 5]

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

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

持续时间(C)

时间(C, sec)

持续时间(C,毫秒)

持续时间(C,购买)

  • C求值为的表达式是真正的

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

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

控件的值将重置持续时间操作符,如果是条件表达式C就变成了或者关联的状态变为非活动状态。

时间逻辑算符持续时间在MATLAB的独立图表中不支持。

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

(持续时间(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秒大小的固定步长,从状态的第一个过渡输入输出发生在t = 0.1秒时。这种行为适用于求解器,因为求解器不会在t = 5.33毫秒时唤醒图表。相反,求解器以0.1秒的整数倍唤醒图表,例如t = 0.0和0.1秒。

检测时间

在这个例子中,a一步(模型)块为状态流程图提供单位步进输入。

图表决定了什么时候输入u= 1:

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

  • 如果t = 2到t = 5秒之间的输入为1,则从开始媒介

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

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

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

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

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

信号编辑器(模型)块提供具有以下特征的输入信号:

  • 该信号使子系统在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模型的状态流图中,运算符,之前支持两种不同的表示法来表示转换中基于事件的时态逻辑。

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

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

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

    • n运算符的出现计数。

    • E是运算符的基事件。

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

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

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

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

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

    • n运算符的出现计数。

    • E是运算符的基事件。

    • F是可选的非基事件。

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

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

    在MATLAB的独立图表中不支持时间逻辑运算符的条件符号。

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

后(5 E)

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

((5 E)后)

请注意

操作员每一个支持触发器和条件符号。然而,对于这个运算符,这两种表示法是等价的。过渡的标签每一个(5 E)而且(每一个(5 E))控件时,指示从关联状态过渡到kth基事件的广播E国变活跃后,何处k是5的倍数。

时间逻辑的最佳实践

在没有源状态的过渡路径上不使用时态逻辑

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

  • 状态行动

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

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

使用绝对时间时间逻辑代替蜱虫在图表动态仿真模块模型

在Simulink模型的图表中,使用绝对时间时间逻辑的延迟表达式的值在语义上与模型的采样时间无关。相比之下,使用基于隐式事件的时间逻辑的延迟表达式蜱虫取决于Simulink求解器使用的步长。

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

不要使用图中的绝对时间时间逻辑动态仿真模块模型

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

用at作为绝对时间时间逻辑算符的转换图。

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

带有转换的图表,该转换使用after作为绝对时间时间逻辑算符。

大参数值的意外结果

状态流绝对时间时间逻辑条件,如后(x, sec)可能不会计算为真正的在进入具有以下条件的状态后的预期时间:

  • 该图表具有周期性的离散抽样时间。

  • 图表逻辑使状态保持活动大于2147418单位的时间。时间单位是该状态所使用的任何时间逻辑表达式中最小的时间单位。例如,如果状态有两个传出转换,一个使用后(x, sec)另一种使用(x, msec之后)时,时间单位为msec(毫秒)

通常,当处于状态的时间长度大于2147418单位的时间。然而,这可能会根据图表的采样时间而改变。

不要使用每一个图中的绝对时间时间逻辑动态仿真模块模型

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

具有使用every作为绝对时间时间逻辑运算符的状态操作的图表。

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

具有自循环转换的图表,它使用after作为绝对时间时间逻辑算子。

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

在独立图表中的多源过渡路径中不使用时态逻辑MATLAB

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

独立图表,包含从正状态和负状态到结束状态的转换路径上的时间逻辑表达式。

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

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

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

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

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

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

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

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

当您执行图表时,说明一个变得活跃。该图表执行条目操作并显示消息你好!.1秒钟后,计时器与过渡有关一个B唤醒图表。因为转换无效,所以图表执行动作的状态一个并显示消息你好!第二次。

假设2秒后,图表接收到输入事件E.图表执行动作的状态一个的值警卫真正的.因为图表没有重置计时器与操作员关联,从一个B直到另一个事件唤醒图表才发生。

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

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

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

另请参阅

|||||||||(模型)|(模型)

相关的话题

Baidu
map