主要内容

使用时态逻辑执行控制图

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

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

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

    • Simulink中的图表万博1manbetx®模型在模拟时间方面定义绝对时间的时间逻辑。

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

时间逻辑运算符

要定义基于时态逻辑的状态流程图的行为,请使用此表中列出的运算符。这些运算符可以出现在:

  • 状态行动

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

每个时间逻辑运算符具有关联状态,这是动作出现的状态或转换路径源自的状态。状态溢图每次重新激活相关状态时都会重置每个操作员使用的计数器。

操作人员 语法 描述 例子
之后

在(n,E)之后

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

E是操作员的基本事件。

回报真的如果事件E至少发生过N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

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

(3,E)之后:disp(“开”);

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

之后(5,e)

在(n,勾选)之后

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

回报真的如果图表至少唤醒了N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

隐式事件打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。有关详细信息,请参阅万博1manbetx使用隐式事件控制图表行为.

当图表至少在状态变为活动状态后第七次唤醒时,但仅当变量临时雇员大于98.6。

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

之后(n秒)

之后(n,毫秒)

之后(n,usec)

N是正实数或计算结果为正实值的表达式。

回报真的至少N自关联状态变为活动状态以来已过的时间单位。否则,运算符返回错误的.

在Simulink模型的图表中万博1manbetx,以秒为单位指定时间(),毫秒(MSEC.)或微秒(usec)。

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

设定临时雇员变量到低的每次图表唤醒时,当相关状态处于活动状态至少12.3秒时开始。

在(第12.3节)之后:温度=低;

在(ñ,e)

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

E是操作员的基本事件。

回报真的如果事件E确实发生了N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

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

在(3,e):disp(“开”);

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

at(5,E)

在(n,勾选)

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

回报真的如果图表已完全唤醒N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

隐式事件打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。有关详细信息,请参阅万博1manbetx使用隐式事件控制图表行为.

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

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

在(n,sec)

N是正实数或计算结果为正实值的表达式。

回报真的如果准确的话N由于相关国家变得活跃,因此已经过去了。否则,操作员返回错误的.

使用作为一种绝对时间逻辑运算符,仅在MATLAB的独立图表中支持。操作符创建一个MATLAB万博1manbetx计时器对象,该对象生成隐式事件以唤醒图表。MATLAB计时器对象的精度限制为1毫秒。有关详细信息,请参阅独立图表中的事件.

设定临时雇员变量到高的如果该状态已激活12.3秒。

第(12.3节):temp =高;
之前

之前(n,e)

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

E是操作员的基本事件。

回报真的如果事件E发生的时间少于N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

时间逻辑运算符之前仅在S万博1manbetximulink模型中的StateFlow图表中支持。万博1manbetx

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

在(3,E)之前:disp(“开”);

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

在(5,E)之前

前(n,勾选)

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

回报真的如果图表唤醒的时间少于N自关联状态变为活动状态以来的次数。否则,运算符返回错误的.

隐式事件打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。有关详细信息,请参阅万博1manbetx使用隐式事件控制图表行为.

时间逻辑运算符之前仅在S万博1manbetximulink模型中的StateFlow图表中支持。万博1manbetx

当图表唤醒时,从相关状态转换,但仅当变量临时雇员大于98.6,并且自该状态变为活动状态以来,图表已唤醒不到七次。

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

之前(n,sec)

前(n,毫秒)

前(n,usec)

N是正实数或计算结果为正实值的表达式。

回报真的如果少于N自关联状态变为活动状态以来已过的时间单位。否则,运算符返回错误的.

以秒为单位指定时间(),毫秒(MSEC.)或微秒(usec)。

时间逻辑运算符之前仅在S万博1manbetximulink模型中的StateFlow图表中支持。万博1manbetx

设定临时雇员变量到Med.每次图表唤醒时,但仅当关联状态处于活动状态的时间少于12.3秒时。

之前(12.3,SEC):温度=中等;
每一个

每(n,E)

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

E是操作员的基本事件。

回报真的在每一个Nth事件发生E由于相关国家变得活跃。否则,操作员返回错误的.

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

每(3,E):disp(“开”);

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

每(5,e)

每(n,勾选)

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

回报真的在每一个Nth自关联状态变为活动状态后图表唤醒的时间。否则,运算符返回错误的.

隐式事件打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。有关详细信息,请参阅万博1manbetx使用隐式事件控制图表行为.

每个第七个过渡打钩事件以来,该州变得活跃,但仅在变量时临时雇员大于98.6。

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

每(n,秒)

N是正实数或计算结果为正实值的表达式。

回报真的每一个N关联状态变为活动状态后的秒数。否则,运算符返回错误的.

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

增量临时雇员状态为激活状态时,每12.3秒变量为5。

每(12.3,秒):temp = temp + 5;
临时帐户

临时账户(E)

E是操作员的基本事件。

返回事件的发生次数E由于相关国家变得活跃。

使用临时帐户作为一种基于事件的时态逻辑运算符,仅在Simulink模型的状态流程图中受支持。万博1manbetx万博1manbetx

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

关于E:y=M(时间计数(E));
临时(勾选)

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

隐式事件打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。万博1manbetx

使用临时帐户作为一种基于事件的时态逻辑运算符,仅在Simulink模型的状态流程图中受支持。万博1manbetx万博1manbetx

存储输入数据的值U在数组的连续元素中M.

en,du:M(临时账户(勾号)+1)=u;

临时(秒)

时间计数(毫秒)

临时账户(usec)

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

以秒为单位指定时间(),毫秒(MSEC.)或微秒(usec)。

自国家变得活跃以来储存毫秒数。

en,du:y=时间计数(毫秒);
过去

已用时间(秒)

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

相当于临时(秒).

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

en,du:y=经过的时间(秒);
et 另一种执行方法已用时间(秒).

当图表处理活动的广播时E,出于相关状态的转换并显示自状态变为活动以来的经过时间。

E{disp(et);}
计数

计数(C)

C是计算结果为的表达式真的或者错误的.

返回自条件表达式出现以来图表已唤醒的次数C变成了真的关联状态变为活动状态。

stateflow图表重置值的值计数操作员如果有条件表达式C成为错误的或者如果关联状态变为非活动状态。

在Simulink模型的图表中万博1manbetx计数可能取决于步长。更改模型的解算器或步长会影响模型生成的结果计数操作人员

当变量x大于或等于2的图表执行时间超过五次。

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

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

en,du:y=计数(x>5);
期间

持续时间(C)

持续时间(秒)

持续时间(C,毫秒)

持续时间(C,usec)

  • C是计算结果为的表达式真的或者错误的.

返回自条件表达式出现以来经过的时间长度C变成了真的关联状态变为活动状态。

以秒为单位指定时间(),毫秒(MSEC.)或微秒(usec)。默认单位为秒。

stateflow图表重置值的值期间操作员如果有条件表达式C成为错误的或者如果关联状态变为非活动状态。

时间逻辑运算符期间在MATLAB万博1manbetx中的独立图表中不支持。

当变量x大于或等于0的时间超过0.1秒。

[持续时间(x> = 0)> 0.1]

存储自变量启动以来的毫秒数x大于5,状态变为活动状态。

en,du:y=持续时间(x>5毫秒);

可以使用引号将关键字括起来“滴答声”,“sec”,'msec', 和'USEC'.例如,在(5)之后打勾相当于之后(5,勾选).

笔记

时态逻辑算子之后,,之前, 和每一个比较阈值N到整数类型的内部计数器。如果N是由不是2的整数幂的斜率或非零偏差定义的定点数,则比较可能由于舍入而产生意外结果。有关详细信息,请参阅定点数据的关系操作.

时间逻辑的例子

定义时间延迟

此示例演示如何在连续时间图表中定义两个绝对时间延迟。

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

  1. 当图表唤醒时,状态输入先激活。

  2. 在5.33毫秒的模拟时间后,过渡到输入输出发生。

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

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

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

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

如果图表具有离散采样时间,则图表中的任何操作都会以该采样时间的整数倍发生。例如,假设更改配置参数,以便Simulink®解算器使用大小为0.1秒的固定步长。然后是第一次从状态转换万博1manbetx输入国家输出在t=0.1秒时发生。此行为适用,因为解算器不会在t=5.33毫秒的精确时间唤醒图表。相反,解算器以0.1秒的整数倍唤醒图表,例如t=0.0和0.1秒。

检测经过的时间

在这个例子中,一个(万博1manbetxSimulink)块提供状态流程图的单位步骤输入。

图表确定输入何时输入U等于1:

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

  • 如果输入等于t = 2和t = 5秒之间的1,则发生过渡开始中等的.

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

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

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

此模型具有启用的子系统启用时的状态参数设置为持有.

子系统包含一个使用之后运算符来触发转换。

这个信号编辑器(万博1manbetxSimulink)块提供具有这些特性的输入信号:

  • 该信号在t=0时启用子系统。

  • 该信号在t=2时禁用子系统。

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

此图显示图表中经过的总时间。当输入信号在时间t=0启用子系统时,状态A.变得活跃。启用系统时,经过的时间增加。当在T = 2处禁用子系统时,图表会睡眠,并且经过的时间停止增加。对于2

从州过渡A.国家B依赖于州的经过时间A.处于活动状态,而不是在模拟时间。因此,当经过的时间处于状态时,转换发生在t=9A.等于5秒。当转换发生时,输出值Y从0更改为1。

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

转换中基于事件的时态逻辑表示法

在Simulink模型的状态流程图中,运算符万博1manbetx之后,, 和之前万博1manbetx支持两种不同的符号来表示转换中基于事件的时态逻辑。

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

    temporallogicoperator(n,E)[C]
    哪里:

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

    • N是运算符的出现计数。

    • E是运算符的基本事件。

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

    使用触发符号时,才能在图表处理基本事件的广播时发生转换E.

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

    F[temporallogicoperator(n、E)和C]
    哪里:

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

    • N是运算符的出现计数。

    • E是运算符的基本事件。

    • F是一个可选的非比例事件。

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

    当您使用非比例事件使用条件表示法F,仅当图表处理以下内容的广播时,才能发生转换:F. 如果省略非基本事件,则在图表处理任何显式或隐式事件时,可能会发生转换。

    MATLAB中的独立图表不支持时态逻辑运算符的条件表示法。万博1manbetx

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

之后(5,e)

相反,该转换标签使用条件符号来指示当状态为基本事件的至少五个广播的活动时出现关联状态的转换E,即使图表未处理E.

[在(5,E)之后]

笔记

运营商每一个万博1manbetx支持触发器和条件符号。但是,这两种符号对于该运算符都是等效的。转换标签每(5,e)[每(5,E)]当图表处理关联状态时,指示脱离关联状态的转换Kth基本事件的广播E在州活跃后,在哪里K是五的倍数。

时间逻辑的最佳实践

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

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

  • 状态行动

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

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

使用绝对时间的时间逻辑而不是打钩在图表中万博1manbetx模型

在Simulink模型的图表中万博1manbetx,使用绝对时间时序逻辑的延迟表达式的值在语义上与模型的采样时间无关。相反,使用基于隐式事件的时态逻辑的延迟表达式打钩取决于Simulink解算器使用的步长。万博1manbetx

此外,在包含输入事件的图表中支持绝对时间时态逻辑万博1manbetx打钩当Simuli万博1manbetxnk模型中的状态流程图具有输入事件时,不支持。万博1manbetx

不要使用对于图表中的绝对时间时间逻辑万博1manbetx模型

在Simulink模型中的图表万博1manbetx中使用作为绝对时间,不支持时态逻辑运算符。相反,使用万博1manbetx之后操作人员例如,假设要使用表达式定义时间延迟在(5.33,秒).

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

不要使用每一个对于图表中的绝对时间时间逻辑万博1manbetx模型

在Simulink模型中的图表万博1manbetx中使用每一个作为绝对时间,不支持时态逻辑运算符。相反,使用带万博1manbetx之后例如,假设您希望在图表执行期间每隔2.5秒打印一条活动状态的状态消息。

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

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

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

MATLAB中的独立图表不支持在具有多个源状态的转换路径上使用时态逻辑万博1manbetx运算符。例如,由于时态逻辑表达式之后(10,秒)触发具有多个源状态的转换路径。

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

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

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

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

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

  • 如果转换路径上的条件为false,则计时器唤醒图表,图表将执行以下操作:在期间活动状态的操作。

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

例如,在此图表中,状态的转换路径A.国家B结合绝对时间时序逻辑触发器之后(1,秒)情况如何[警卫].从州过渡A.国家C具有绝对时间的时间逻辑触发之后(5,秒). 每个转换都与一个计时器对象生成隐式事件。最初,局部变量警卫错误的.

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

执行图表时,请说明A.变得活跃。图表执行以下操作:入口操作并显示消息'你好!'. 1秒后,该计时器与从A.B唤醒图表。由于转换无效,图表将执行在期间国家行动A.并显示消息'你好!'第二次。

假设在2秒钟后,图表接收到输入事件E. 图表执行国家行动A.并更改警卫真的。因为图表不会重置计时器与操作员关联之后,过渡到A.B在另一个事件唤醒图表之前不会发生。

5秒后,计时器与从A.C唤醒图表。因为从A.B有效且具有更高的执行顺序,则图表不会转换为状态C或显示消息“再见!”. 相反,国家B变为活动状态,图表显示了消息“再见!”.

使用图表具有离散样本时间,以获得更有效的代码生成

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

另见

|||||||||(万博1manbetxSimulink)|(万博1manbetxSimulink)

相关话题