利用时序逻辑控制图执行

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

  • 基于事件的时序逻辑曲目重复事件。您可以使用任何明示或暗示的事件为基本事件。

  • 绝对时态逻辑磁道由于状态成为活动状态的经过时间。绝对时态逻辑运算符的定时依赖于状态流的类型®图表:

    • 在Simulink的图表金宝app®模型中的模拟时间来定义的绝对时态逻辑。

    • MATLAB中的独立图表®在的挂钟时间,其被限定于1级毫秒精度来定义的绝对时态逻辑。

态逻辑算

定义基于时间逻辑一个状态流图表的问题,使用此表中列出的操作符。这些操作符可以出现在:

  • 状态行动

  • 在转换路径上起源于一个状态的动作

每个时序逻辑操作者具有相关联的状态,这是在其中所述动作出现或从其中的过渡路径始发的状态。的状态流图表重置由每个操作者每次,相关联的状态重新激活中使用的计数器。

操作者 语法 描述

后(N,E)

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

E对于操作的基本事件。

返回真正如果事件E已发生至少n因为相关的状态时间变得活跃起来。否则,运营商回报

显示状态消息当图表处理事件的广播E,开始了第三次广播E后的状态开始活跃起来。

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

过渡相关联的状态的出当图表处理事件的广播E起对的第五广播E后的状态开始活跃起来。

后(图5,E)

后(N,蜱)

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

返回真正如果图表具有至少唤醒n因为相关的状态时间变得活跃起来。否则,运营商回报

隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

过渡相关联的状态的出当图表醒来至少在第七时间,因为状态成为活动的,但仅当该变量温度比98.6大。

后(7,蜱)[温度> 98.6]

后(N,秒)

后(N,毫秒)

后(N,微秒)

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

返回真正如果至少n单位时间以来,相关联的状态开始活跃已经过去了。否则,运营商回报

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

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

设置温度变量每次在图表中唤醒时,开始时的相关联的状态为至少12.3秒活动时间。

后(12.3秒):temp =低;

在(N,E)

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

E对于操作的基本事件。

返回真正如果事件E发生正好n因为相关的状态时间变得活跃起来。否则,运营商回报

显示状态消息当图表处理事件的第三广播E后的状态开始活跃起来。

在(3,E):DISP(“上”);

过渡相关联的状态的出当图表处理事件的第五广播E后的状态开始活跃起来。

在(5,E)

在(N,蜱)

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

返回真正如果图表已经准确地唤醒n因为相关的状态时间变得活跃起来。否则,运营商回报

隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

过渡相关联的状态的出当图表醒来第七时间,因为状态成为活动的,但仅当该变量温度比98.6大。

在(7,蜱)[温度> 98.6]

在(N,秒)

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

返回真正如果正好n因为相关的状态开始活跃秒结束。否则,运营商回报

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

设置温度变量如果状态一直活跃整整12.3秒。

在(12.3,秒):温度= HIGH;
之前

之前(N,E)

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

E对于操作的基本事件。

返回真正如果事件E发生的次数少于n因为相关的状态时间变得活跃起来。否则,运营商回报

时序逻辑运算符之前在MATLAB金宝app独立图表不支持。

显示状态消息当图表处理事件的第一和第二广播E后的状态开始活跃起来。

前(图3,E):DISP(“上”);

过渡相关联的状态的出当图表处理事件的广播E,但前提是状态一直活跃的少于五个广播E

前(5,E)

之前(N,蜱)

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

返回真正如果图表已被唤醒不是较少n因为相关的状态时间变得活跃起来。否则,运营商回报

隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

时序逻辑运算符之前在MATLAB金宝app独立图表不支持。

转移出相关联的状态的当图表醒来,但仅当该变量温度大于98.6和图表已被唤醒少于七次因为状态变得活跃。

前(7,蜱)[温度> 98.6]

之前(N,秒)

之前(N,毫秒)

之前(n,购买)

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

返回真正如果不是少n单位时间以来,相关联的状态开始活跃已经过去了。否则,运营商回报

以秒指定时间(证券交易委员会),毫秒(毫秒),或者微秒(USEC)。

时序逻辑运算符之前在MATLAB金宝app独立图表不支持。

设置温度变量MED每次图表被唤醒,但只有在关联状态活跃时间少于12.3秒的情况下。

前(12.3,秒):temp =地中海;
一切

每一个(N,E)

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

E对于操作的基本事件。

返回真正在每n该事件的发生E因为相关的状态开始活跃。否则,运营商回报

当图表处理事件的第三次广播时,显示状态消息E后的状态开始活跃起来。

每(3,E):DISP(“上”);

过渡相关联的状态的出当图表处理事件的每一个第五广播E后的状态开始活跃起来。

每一个(5 E)

每(N,蜱)

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

返回真正在每n时间图表唤醒,因为相关联的状态变得活跃。否则,运营商回报

隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app有关更多信息,请参见使用隐式事件控制图表行为

过渡相关的状态每第七出来事件以来,国家开始活跃,但仅当该变量温度比98.6大。

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

每(N,秒)

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

返回真正一切n由于相关联的状态秒开始活跃。否则,运营商回报

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

递增温度变量在状态为活动时,每12.3秒更改5。

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

temporalCount (E)

E对于操作的基本事件。

返回事件发生的次数E因为相关的状态开始活跃。

使用temporalCount作为基于事件的时序逻辑操作者未在MATLAB独立图表支撑。金宝app

所述阵列的存取连续元素每次图表处理事件广播时E

艾凡:y = M [temporalCount (E)];
temporalCount(打勾)

返回的次数,图表已被唤醒,因为相关的状态开始活跃的数量。

隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app

使用temporalCount作为基于事件的时序逻辑操作者未在MATLAB独立图表支撑。金宝app

存储输入数据的值u在所述阵列的连续元素

en: M[0] = u;du: M[temporalCount(tick)] = u;

temporalCount(秒)

temporalCount(毫秒)

temporalCount(USEC)

返回自相关联的状态开始活跃已经逝去的时间的长度。

以秒指定时间(证券交易委员会),毫秒(毫秒),或者微秒(USEC)。

存储状态的激活和关闭之间的毫秒数。

退出:Y = temporalCount(毫秒);
过去

经过(秒)

相当于temporalCount(秒)。返回自相关联的状态开始活跃已经逝去的时间的长度。

存储的状态一直活跃的秒数。

en,du: y = elapsed(sec);

计数(C)

C是计算结果为表达真正要么

返回的是,由于条件表达式的图表已醒来的次数C成为真正关联状态变得活跃起来。

的价值操作者被复位,如果条件表达式变为或者,如果相关联的状态变为非激活状态。

在Simulink模型图,价值金宝app取决于步长。改变用于模型求解器或步长大小影响由所产生的结果操作符。

存储图表执行次数由于可变x一直大于5。

退出:Y =计数(X> 5)

过渡相关联的状态的出当可变x已经大于或等于2的时间超过5个图表执行。

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

持续时间

持续时间(C)

C是计算结果为表达真正要么

返回自条件表达式的秒数C成为真正关联状态变得活跃起来。

的价值持续时间操作者被复位,如果条件表达式变为或者,如果相关联的状态变为非激活状态。

过渡状态的出当可变x已经大于或等于0更长的时间超过0.1秒。

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

可以使用引号将关键字括起来'蜱',“秒”,“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秒图表。

检测时间

在这个例子中,一个块提供单位阶跃输入到状态流图表一个。

图表确定当输入u= 1:

  • 如果输入等于1 T = 2秒钟,然后,过渡从发生开始

  • 如果输入等于1之间T = 2和t = 5秒时,一个从过渡发生开始

  • 如果输入等于1 T = 5秒后,过渡从发生开始

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

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

这种模式有与启用子系统州时启用参数集保持

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

信号编辑器块提供了具有这些特性的输入信号:

  • 该信号使得在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。

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

在Stateflow图在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)]指示相关联的状态的转变出来的时候,图表处理k基本事件的广播E后的状态开始活跃起来,其中k是五的倍数。

最佳实践时序逻辑

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

时序逻辑运算符的值取决于当其相关联的状态变得活跃。为了确保每一个时序逻辑运算符具有独特的关联状态,只能使用这些运营商:

  • 状态行动

  • 在转换路径上起源于一个状态的动作

不要使用默认的转换或在图形功能的转换时序逻辑运算符,因为这些转变不会从状态起源。

使用绝对时态逻辑相反的在图表金宝app楷模

在Simulink模型的图表中金宝app,使用绝对时间时序逻辑的延迟表达式的值在语义上独立于模型的采样时间。相反,延迟表达式使用基于隐式事件的时间逻辑依赖于由解算器的Simulink中使用的步长大小。金宝app

此外,绝对时态逻辑是在具有输入事件的图表支持。金宝app隐式事件当在仿真模型S金宝apptateflow的图表有输入事件不被支持。金宝app

不使用绝对时态逻辑在图表金宝app楷模

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

为了防止运行时错误,改变过渡标签后(5.33,秒)

不使用绝对时态逻辑在图表金宝app楷模

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

为了防止运行时错误,请用外自我循环过渡政府行为。

在状态添加历史结这么图表记得之前每个自循环转换前的状态设置。看到使用历史节点记录状态活动

不使用时态逻辑的转型路径与独立图表多源中MATLAB

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

含有从状态正的过渡路径始发和负向状态结束时间逻辑表达式独立图表。

要解决该问题,使用在单独的转移路径时序逻辑表达式,每个具有单一来源状态。

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

避免在混合绝对时态逻辑和条件在独立图表转移路径MATLAB

在MATLAB独立的图表,运营商,一切创建MATLAB计时器对象,该对象生成隐式事件以唤醒图表。将这些操作符与相同转换路径上的条件结合会导致意外的行为:

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

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

例如,该图中,该过渡路径从状态一个国家B结合了绝对时态逻辑触发后(1,秒)和条件[守卫]。从状态的转变一个国家C有绝对的时态逻辑触发后(5秒)。每个过渡与相关联计时器对象,该对象生成隐式事件。最初是局部变量守卫

图表相结合的绝对时态逻辑触发器和相同的过渡路径上的状态。

当您执行图表,状态一个变得活跃。图表进行的条目动作,并显示该消息“你好!”。1秒后,在计时器与来自转换相关联一个B唤醒图表。由于转换无效,图表执行在国家行动一个并显示该消息“你好!”第二次。

假设2秒后,图表接收到输入事件E。图表执行在国家行动一个和改变的值守卫真正。因为图表不会重置计时器与运算符相关联,从过渡一个B直到另一个事件唤醒图表时才发生。

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

使用图表与离散采样时间为更高效的代码生成

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

另请参阅

||||||||||

相关话题