时态逻辑根据时间控制图表的执行。在状态操作和转换中,可以使用两种类型的时态逻辑:
基于事件的时态逻辑跟踪重复发生的事件。您可以使用任何显式或隐式事件作为基本事件。
绝对时间时态逻辑跟踪自状态变为活动状态以来经过的时间。绝对时间时态逻辑运算符的计时取决于状态流的类型®图表:
Simulink中的图表万博1manbetx®模型在模拟时间方面定义绝对时间的时间逻辑。
MATLAB中的独立图表®根据壁钟时间定义绝对时间的时间逻辑,限制为1毫秒的精度。
要定义基于时态逻辑的状态流程图的行为,请使用此表中列出的运算符。这些运算符可以出现在:
状态在
行动
源于状态的转换路径上的操作
每个时间逻辑运算符具有关联状态,这是动作出现的状态或转换路径源自的状态。状态溢图每次重新激活相关状态时都会重置每个操作员使用的计数器。
操作人员 | 语法 | 描述 | 例子 |
---|---|---|---|
之后 |
|
回报真的 如果事件E 至少发生过N 自关联状态变为活动状态以来的次数。否则,运算符返回错误的 . |
当图表处理事件的广播时,显示状态消息 在(3,E)之后:disp(“开”); |
当图表处理事件广播时,转换出关联状态 之后(5,e) |
|||
|
回报 隐式事件 |
当图表至少在状态变为活动状态后第七次唤醒时,但仅当变量 (7,勾选)[温度>98.6] |
|
|
回报 在Simulink模型的图表中万博1manbetx,以秒为单位指定时间( 在MATLAB中的独立图表中,以秒为单位指定时间( |
设定 在在(第12.3节)之后:温度=低;
|
|
在 |
|
回报真的 如果事件E 确实发生了N 自关联状态变为活动状态以来的次数。否则,运算符返回错误的 . |
图表处理事件的第三次广播时显示状态消息 在在(3,e):disp(“开”); |
当图表处理事件的第五次广播时,转换出关联状态 at(5,E) |
|||
|
回报 隐式事件 |
当图表唤醒了第七次时,从状态变为活动状态时,转换出来,但仅当变量时 在(7,勾选)[温度>98.6] |
|
|
回报 使用 |
设定 在第(12.3节):temp =高;
|
|
之前 |
|
回报 时间逻辑运算符 |
图表处理事件的第一次和第二次广播时显示状态消息 在在(3,E)之前:disp(“开”); |
当图表处理事件广播时,转换出关联状态 在(5,E)之前 |
|||
|
回报 隐式事件 时间逻辑运算符 |
当图表唤醒时,从相关状态转换,但仅当变量 之前(7,勾选)[温度>98.6] |
|
|
回报 以秒为单位指定时间( 时间逻辑运算符 |
设定 在之前(12.3,SEC):温度=中等;
|
|
每一个 |
|
回报 |
图表处理每三次事件广播时显示一条状态消息 在每(3,E):disp(“开”); |
当图表处理每五次事件广播时,转换出关联状态 每(5,e) |
|||
|
回报 隐式事件 |
每个第七个过渡 每(7,勾选)[温度>98.6] |
|
|
回报 使用 |
增量 在每(12.3,秒):temp = temp + 5;
|
|
临时帐户 |
|
返回事件的发生次数 使用 |
访问数组的连续元素
|
临时(勾选) |
返回自关联状态变为活动状态以来图表已唤醒的次数。 隐式事件 使用 |
存储输入数据的值 en,du:M(临时账户(勾号)+1)=u; |
|
|
返回自相关状态变为活动以来已过度的时间长度。 以秒为单位指定时间( |
自国家变得活跃以来储存毫秒数。 en,du:y=时间计数(毫秒); |
|
过去 |
|
返回自相关状态变为活动以来已过度的时间长度。 相当于 |
存储状态变为活动状态后的秒数。 en,du:y=经过的时间(秒); |
et |
另一种执行方法已用时间(秒) . |
当图表处理活动的广播时 E{disp(et);} |
|
计数 |
|
返回自条件表达式出现以来图表已唤醒的次数 stateflow图表重置值的值 在Simulink模型的图表中万博1manbetx |
当变量 [计数(x> = 2)> 5] |
存储自变量更新以来的图表执行次数 en,du:y=计数(x>5); |
|||
期间 |
|
返回自条件表达式出现以来经过的时间长度 以秒为单位指定时间( stateflow图表重置值的值 时间逻辑运算符 |
当变量 [持续时间(x> = 0)> 0.1] |
存储自变量启动以来的毫秒数 en,du:y=持续时间(x>5毫秒); |
可以使用引号将关键字括起来“滴答声”
,“sec”
,'msec'
, 和'USEC'
.例如,在(5)之后打勾
相当于之后(5,勾选)
.
笔记
时态逻辑算子之后
,在
,之前
, 和每一个
比较阈值N
到整数类型的内部计数器。如果N
是由不是2的整数幂的斜率或非零偏差定义的定点数,则比较可能由于舍入而产生意外结果。有关详细信息,请参阅定点数据的关系操作.
此示例演示如何在连续时间图表中定义两个绝对时间延迟。
图表的执行遵循以下步骤:
当图表唤醒时,状态输入
先激活。
在5.33毫秒的模拟时间后,过渡到输入
到输出
发生。
国家输入
变为不活动和状态输出
变得活跃。
在10.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中的独立图表不支持在具有多个源状态的转换路径上使用时态逻辑万博1manbetx运算符。例如,由于时态逻辑表达式之后(10,秒)
触发具有多个源状态的转换路径。
为了解决这个问题,在单独的转换路径上使用时态逻辑表达式,每个转换路径都有一个源状态。
在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)