主要内容

用时序逻辑执行控制图

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

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

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

    • 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。

(7,勾选)[温度>98.6]

后(n, sec)

(n, msec之后)

后(n,购买)

n是一个正实数或计算为正实数的表达式。

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

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

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

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

后(12.3秒):temp =低;

在(n, E)

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

E是操作符的基本事件。

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

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

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

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

在(E)

在(n,蜱虫)

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

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

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

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

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

在(n, sec)

n是一个正实数或计算为正实数的表达式。

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

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

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

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

之前(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日)(临时> 98.6)

(n,秒前)

前(n,毫秒)

之前(n,购买)

n是一个正实数或计算为正实数的表达式。

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

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

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

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

前(12.3秒):temp =地中海;
每一个

每(n,E)

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

E是操作符的基本事件。

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

当图表处理每三次广播事件时显示一个状态消息E状态变为活跃状态后。

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

当图表处理每五次的事件广播时,转换出相关的状态E状态变为活跃状态后。

每一个(5 E)

每一个(n,蜱虫)

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

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

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

每七个州就会有一个州的过渡蜱虫事件,但仅当变量临时雇员大于98.6。

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

每一个(n, sec)

n是一个正实数或计算为正实数的表达式。

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

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

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

每一个(12.3秒):temp = temp + 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 = elapsed(sec);
另一种执行方式运行(sec)

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

E {disp (et);}

数(C)

C表达式的计算结果是真正的

返回自条件表达式出现以来图表已唤醒的次数C成为真正的而伴随的状态开始活跃起来。

状态流图将重置操作符C就变成了或者关联状态变为非活动状态。

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

当变量x已经大于或等于2超过5个图表执行。

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

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

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

持续时间(C)

时间(C, sec)

持续时间(C,毫秒)

持续时间(C,购买)

  • C表达式的计算结果是真正的

返回自条件表达式以来经过的时间长度C成为真正的而伴随的状态开始活跃起来。

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

状态流图将重置持续时间操作符C就变成了或者关联状态变为非活动状态。

时间逻辑运算符持续时间不支持在MAT金宝appLAB的独立图表。

转换出状态时的变量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秒的固定步长。金宝app然后是第一个状态转变输入输出在t=0.1秒时发生。此行为适用,因为解算器不会在t=5.33毫秒的精确时间唤醒图表。相反,解算器以0.1秒的整数倍唤醒图表,例如t=0.0和0.1秒。

检测时间

在这个例子中,a一步(金宝app模型)块提供状态流程图的单位步骤输入。

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

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

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

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

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

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

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

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

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

  • 信号使子系统能够在t = 0时工作。

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

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

这个图显示了图表中所花费的总时间。当输入信号在时刻t = 0使能子系统时,状态一个变得活跃。当系统启用时,经过的时间会增加。当子系统在t = 2时被禁用时,图表进入休眠状态,运行时间停止增加。对于2 < t < 6,经过的时间停留在2秒,因为系统被禁用。当t = 6时出现图表时,经过的时间再次开始增加。

从状态的转变一个B取决于状态所消耗的时间一个是激活的,而不是在模拟时间。因此,转换发生在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是五的倍数。

时间逻辑的最佳实践

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

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

  • 状态行动

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

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

使用绝对时间时间逻辑代替蜱虫在图表金宝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秒)触发具有多个源状态的转换路径。

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

要解决这个问题,请在不同的转换路径上使用时态逻辑表达式,每个路径都有一个源状态。

在不同的转换路径上使用时态逻辑表达式的独立图表。

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

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

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

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

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

将绝对时间时序逻辑触发器和相同转换路径上的条件相结合的图表。

当你执行图表时,说明一个变得活跃。图表显示条目操作并显示消息“你好!”.1秒后计时器与从一个B唤醒图表。由于转换无效,图表执行动作的状态一个并显示消息“你好!”第二次。

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

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

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

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

另请参阅

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

相关的话题