时序逻辑控制图表的在时间方面的执行。在状态操作和转换,你可以使用两种类型的时序逻辑的:
基于事件的时序逻辑曲目重复事件。您可以使用任何明示或暗示的事件为基本事件。
绝对时态逻辑磁道由于状态成为活动状态的经过时间。绝对时态逻辑运算符的定时依赖于状态流的类型®图表:
在Simulink的图表金宝app®模型中的模拟时间来定义的绝对时态逻辑。
MATLAB中的独立图表®在的挂钟时间,其被限定于1级毫秒精度来定义的绝对时态逻辑。
定义基于时间逻辑一个状态流图表的问题,使用此表中列出的操作符。这些操作符可以出现在:
状态上
行动
在转换路径上起源于一个状态的动作
每个时序逻辑操作者具有相关联的状态,这是在其中所述动作出现或从其中的过渡路径始发的状态。的状态流图表重置由每个操作者每次,相关联的状态重新激活中使用的计数器。
操作者 | 语法 | 描述 | 例 |
---|---|---|---|
后 |
|
返回真正 如果事件E 已发生至少n 因为相关的状态时间变得活跃起来。否则,运营商回报假 。 |
显示状态消息当图表处理事件的广播 上后(3 E):DISP(“上”); |
过渡相关联的状态的出当图表处理事件的广播 后(图5,E) |
|||
|
返回 隐式事件 |
过渡相关联的状态的出当图表醒来至少在第七时间,因为状态成为活动的,但仅当该变量 后(7,蜱)[温度> 98.6] |
|
|
返回 在Simulink模型的图表中金宝app,指定时间(以秒为单位)( 在MATLAB中的独立图表中,请指定时间(秒)( |
设置 上后(12.3秒):temp =低;
|
|
在 |
|
返回真正 如果事件E 发生正好n 因为相关的状态时间变得活跃起来。否则,运营商回报假 。 |
显示状态消息当图表处理事件的第三广播 上在(3,E):DISP(“上”); |
过渡相关联的状态的出当图表处理事件的第五广播 在(5,E) |
|||
|
返回 隐式事件 |
过渡相关联的状态的出当图表醒来第七时间,因为状态成为活动的,但仅当该变量 在(7,蜱)[温度> 98.6] |
|
|
返回 使用 |
设置 上在(12.3,秒):温度= HIGH;
|
|
之前 |
|
返回 时序逻辑运算符 |
显示状态消息当图表处理事件的第一和第二广播 上前(图3,E):DISP(“上”); |
过渡相关联的状态的出当图表处理事件的广播 前(5,E) |
|||
|
返回 隐式事件 时序逻辑运算符 |
转移出相关联的状态的当图表醒来,但仅当该变量 前(7,蜱)[温度> 98.6] |
|
|
返回 以秒指定时间( 时序逻辑运算符 |
设置 上前(12.3,秒):temp =地中海;
|
|
一切 |
|
返回 |
当图表处理事件的第三次广播时,显示状态消息 上每(3,E):DISP(“上”); |
过渡相关联的状态的出当图表处理事件的每一个第五广播 每一个(5 E) |
|||
|
返回 隐式事件 |
过渡相关的状态每第七出来 每一个(7,蜱虫)(临时> 98.6) |
|
|
返回 使用 |
递增 上每(12.3,秒):温度=温度+ 5;
|
|
temporalCount |
|
返回事件发生的次数 使用 |
所述阵列的存取连续元素 上艾凡:y = M [temporalCount (E)];
|
temporalCount(打勾) |
返回的次数,图表已被唤醒,因为相关的状态开始活跃的数量。 隐式事件 使用 |
存储输入数据的值 en: M[0] = u;du: M[temporalCount(tick)] = u; |
|
|
返回自相关联的状态开始活跃已经逝去的时间的长度。 以秒指定时间( |
存储状态的激活和关闭之间的毫秒数。 退出:Y = temporalCount(毫秒); |
|
过去 |
|
相当于temporalCount(秒) 。返回自相关联的状态开始活跃已经逝去的时间的长度。 |
存储的状态一直活跃的秒数。 en,du: y = elapsed(sec); |
数 |
|
返回的是,由于条件表达式的图表已醒来的次数 的价值 在Simulink模型图,价值金宝app |
存储图表执行次数由于可变 退出:Y =计数(X> 5) |
过渡相关联的状态的出当可变 [计数(X> = 2)> 5] |
|||
持续时间 |
|
返回自条件表达式的秒数 的价值 |
过渡状态的出当可变 [持续时间(X> = 0)> 0.1] |
可以使用引号将关键字括起来'蜱'
,“秒”
,“msec”
和“微秒”
。例如,后(5, '剔')
相当于后(图5,蜱)
。
时序逻辑运算符后
,在
,之前
和一切
比较门槛n
到整数类型的一个内部计数器。如果n
是,不是2的整数次幂或非零偏压,则比较可以得到意想不到的效果由于四舍五入由任一斜率限定的固定点数目。有关更多信息,请参见定点数据的关系操作。
此示例示出了如何将一个连续时间图表中定义两个绝对时间延迟。
图表的执行步骤如下:
当图表醒来时,状态输入
激活第一。
后5.33毫秒的仿真时间,从过渡输入
至输出
发生。
状态输入
变为无效并且该状态输出
变得活跃。
10.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独立图表不支持在具有多个源状态转移路径的使用时间逻辑运算金宝app符。例如,该独立图表产生由于时序逻辑表达式的运行时错误后(10,秒)
触发器具有一个以上的源状态的转换路径。
要解决该问题,使用在单独的转移路径时序逻辑表达式,每个具有单一来源状态。
在MATLAB独立的图表,运营商后
,在
和一切
创建MATLAB计时器
对象,该对象生成隐式事件以唤醒图表。将这些操作符与相同转换路径上的条件结合会导致意外的行为:
如果转换路径上的条件为false,则计时器
唤醒图表,图表执行中
和上
活动状态的动作。
图表不会重置计时器
对象与操作机构相关联后
和在
。如果转换路径上的条件在稍后变为true,则转换将不会发生,直到另一个显式或隐式事件唤醒图表。
例如,该图中,该过渡路径从状态一个
国家B
结合了绝对时态逻辑触发后(1,秒)
和条件[守卫]
。从状态的转变一个
国家C
有绝对的时态逻辑触发后(5秒)
。每个过渡与相关联计时器
对象,该对象生成隐式事件。最初是局部变量守卫
是假
。
当您执行图表,状态一个
变得活跃。图表进行的条目
动作,并显示该消息“你好!”
。1秒后,在计时器
与来自转换相关联一个
至B
唤醒图表。由于转换无效,图表执行中
在国家行动一个
并显示该消息“你好!”
第二次。
假设2秒后,图表接收到输入事件E
。图表执行上
在国家行动一个
和改变的值守卫
至真正
。因为图表不会重置计时器
与运算符相关联后
,从过渡一个
至B
直到另一个事件唤醒图表时才发生。
5秒后,将计时器
与来自转换相关联一个
至C
唤醒图表。因为从过渡一个
至B
是否有效且有较高的执行顺序,图表不采取状态转换C
或显示该消息“再见!”
。相反,国家B
变得活跃,在图表显示消息“再见!”
。
用于离散图表不属于触发或启动子系统使用整数计数器内跟踪时间,而不是由Simulink中提供的时间生成的代码。金宝app此行为允许更有效的代码生成的开销和存储器方面,并且能够使用该代码在软件合环(SIL)和处理器在环(PIL)仿真模式。有关更多信息,请参见SIL和PIL模拟(嵌入式编码)。
信号编辑器|步|后|在|之前|数|持续时间|过去|一切|temporalCount|计时器