时间逻辑根据时间来控制图表的执行。在状态操作和转换中,您可以使用两种类型的时态逻辑:
基于事件的时间逻辑跟踪重复事件。可以使用任何显式或隐式事件作为基本事件。
绝对时间时序逻辑跟踪状态变为活动状态后经过的时间。绝对时间时态逻辑运算符的计时取决于statflow的类型®图:
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 (“上”); |
当图表处理事件的第五次广播时,转换出关联状态 在(E) |
|||
|
返回 隐式的事件 |
当状态变为活动状态后图表第七次被唤醒时,转换出关联状态,但仅当变量 蜱虫(7日)(临时> 98.6) |
|
|
返回 使用 |
设置 在在(12.3秒):temp =高;
|
|
之前 |
|
返回 时间逻辑运算符 |
当图表处理事件的第一次和第二次广播时显示状态消息 在之前(3 E):disp (“上”); |
当图表处理事件的广播时,转换出关联状态 前(5 E) |
|||
|
返回 隐式的事件 时间逻辑运算符 |
当图表唤醒时转换出关联状态,但仅当变量 蜱虫(7日)(临时> 98.6) |
|
|
返回 以秒为单位指定时间( 时间逻辑运算符 |
设置 在前(12.3秒):temp =地中海;
|
|
每一个 |
|
返回 |
当图表处理每三次广播事件时显示一个状态消息 在每一个(3 E):disp (“上”); |
当图表处理每五次的事件广播时,转换出相关的状态 每一个(5 E) |
|||
|
返回 隐式的事件 |
每七个州就会有一个州的过渡 每一个(7,蜱虫)(临时> 98.6) |
|
|
返回 使用 |
增加 在每一个(12.3秒):temp = temp + 5;
|
|
temporalCount |
|
返回事件的出现次数 使用 |
访问数组的连续元素
|
temporalCount(勾选) |
返回关联状态变为活动状态后图表被唤醒的次数。 隐式的事件 使用 |
存储输入数据的值 en,du: M(temporalCount(tick)+1) = u; |
|
|
返回关联状态变为活动状态后所经过的时间长度。 以秒为单位指定时间( |
存储状态变为活动状态后的毫秒数。 en,du: y = temporalCount(msec); |
|
运行 |
|
返回关联状态变为活动状态后所经过的时间长度。 相当于 |
存储状态变为活动状态后的秒数。 En,du: y = elapsed(sec); |
等 |
另一种执行方式运行(sec) . |
当图表处理广播事件时 E {disp (et);} |
|
数 |
|
返回自条件表达式之后图表被唤醒的次数 状态流图将重置 在Simulink模型中的图表金宝app中,值 |
转换出关联状态时的变量 (计数(x > = 2) > 5] |
存储自变量以来图表执行的次数 En,du: y = count(x>5); |
|||
持续时间 |
|
返回自条件表达式以来经过的时间长度 以秒为单位指定时间( 状态流图将重置 时间逻辑运算符 |
转换出状态时的变量 (持续时间(x > = 0) > 0.1) |
存储自变量以来的毫秒数 En,du: y = duration(x>5,msec); |
可以使用引号将关键字括起来“滴答”
,“秒”
,“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秒。
在这个例子中,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中的独立图表不支持在有多个源状态的转换路径上使用时间逻辑运金宝app算符。例如,这个独立图表会产生一个运行时错误,因为时态逻辑表达式后(10秒)
触发具有多个源状态的转换路径。
要解决这个问题,请在不同的转换路径上使用时态逻辑表达式,每个路径都有一个源状态。
在MATLAB中独立作图,算符后
,在
,每一个
创建MATLAB计时器
生成隐式事件以唤醒图表的对象。将这些操作符与相同转换路径上的条件组合在一起可能会导致意想不到的行为:
如果转换路径上的条件为false计时器
唤醒图表,图表执行在
和在
激活状态的动作。
图表没有重置计时器
对象与操作符关联后
和在
.如果稍后转换路径上的条件变为真,则在另一个显式或隐式事件唤醒图表之前,不会发生转换。
例如,在这个图表中,状态的转换路径一个
州B
结合绝对时间时间逻辑触发器后(1秒)
和条件(保安)
.从状态的转变一个
州C
绝对时间时间逻辑触发器后(5秒)
.每个转换都与计时器
对象,该对象生成隐式事件。一开始是局部变量警卫
是假
.
当你执行图表时,说明一个
变得活跃。图表显示条目
操作并显示消息“你好!”
.1秒后计时器
与从一个
来B
唤醒图表。由于转换无效,图表执行在
动作的状态一个
并显示消息“你好!”
第二次。
假设,在2秒之后,图表接收到输入事件E
.该图表执行在
动作的状态一个
改变的值警卫
来真正的
.因为图表没有重置计时器
与运算符相关联后
,从一个
来B
在另一个事件唤醒图表之前不会发生。
5秒后计时器
与从一个
来C
唤醒图表。因为从一个
来B
是否有效且有较高的执行顺序,图表是否采取过渡状态C
或者显示消息“再见!”
.相反,国家B
变为活动状态,图表显示消息“再见!”
.
为不在被触发或启用的子系统中的离散图表生成的代码使用整数计数器来跟踪时间,而不是由Simulink提供的时间。金宝app这种行为允许在开销和内存方面更有效地生成代码,并允许在软件在循环(SIL)和处理器在循环(PIL)模拟模式中使用此代码。有关更多信息,请参见SIL和PIL模拟(嵌入式编码).
后|在|之前|每一个|temporalCount|运行|数|持续时间|计时器
|信号编辑器(金宝app模型)|一步(金宝app模型)