时间逻辑根据时间来控制图表的执行。在状态操作和转换中,您可以使用两种类型的时间逻辑:
基于事件的时序逻辑跟踪重复发生的事件。您可以使用任何显式或隐式事件作为基础事件。
绝对时间时间逻辑跟踪状态变为活动状态以来所经过的时间。绝对时间时态逻辑运算符的计时取决于状态流的类型®图:
Simulink中的图表金宝app®模型根据仿真时间定义了绝对时间时序逻辑。
MATLAB独立图表®根据挂钟时间定义绝对时间时间逻辑,其精度限制在1毫秒。
要根据时间逻辑定义状态流图的行为,请使用本表中列出的操作符。这些操作符可以出现在:
状态在
行动
源自状态的转换路径上的操作
每个时间逻辑运算符都有一个相关联的状态,即动作出现的状态或转换路径的起源状态。每当关联状态重新激活时,状态流图将重置每个操作符使用的计数器。
操作符 | 语法 | 描述 | 例子 |
---|---|---|---|
后 |
|
返回真正的 如果事件E 至少发生过n 关联状态变为活动状态以来的次数。否则,操作符返回假 . |
当图表处理事件广播时显示状态消息 在后(3 E):disp (“上”); |
当图表处理事件的广播时,转换出关联状态 后(5 E) |
|||
|
返回 隐式事件 |
当图表自状态变为活动状态以来至少第七次被唤醒时,转换出关联状态,但仅当变量 After (7,tick)[temp > 98.6] |
|
|
返回 在Simulink模型中的图表金宝app中,指定以秒为单位的时间( 在MATLAB的独立图表中,以秒为单位指定时间( |
设置 在后(12.3秒):temp = LOW;
|
|
在 |
|
返回真正的 如果事件E 已经发生了n 关联状态变为活动状态以来的次数。否则,操作符返回假 . |
当图表处理事件的第三次广播时显示状态消息 在(3 E):disp (“上”); |
当图表处理事件的第五次广播时,转换出关联状态 在(E) |
|||
|
返回 隐式事件 |
当图表自状态变为活动状态以来第七次唤醒时,转换出关联状态,但仅当变量 At (7,tick)[temp > 98.6] |
|
|
返回 使用 |
设置 在在(12.3秒):temp = HIGH;
|
|
之前 |
|
返回 时间逻辑算子 |
当图表处理事件的第一次和第二次广播时,显示状态消息 在之前(3 E):disp (“上”); |
当图表处理事件的广播时,转换出关联状态 前(5 E) |
|||
|
返回 隐式事件 时间逻辑算子 |
在图表唤醒时转换出关联状态,但仅当变量 前(7,勾)[temp > 98.6] |
|
|
返回 指定以秒为单位的时间( 时间逻辑算子 |
设置 在前(12.3秒):temp = MED;
|
|
每一个 |
|
返回 |
当图表每三次处理一次事件广播时显示一条状态消息 在每一个(3 E):disp (“上”); |
当图表每五次处理一次事件广播时,将转换出关联状态 每一个(5 E) |
|||
|
返回 隐式事件 |
每七次从关联状态转换一次 每(7,tick)[temp > 98.6] |
|
|
返回 使用 |
增加 在每一个(12.3秒):温度=温度+5;
|
|
temporalCount |
|
返回事件的出现次数 使用 |
访问数组的连续元素
|
temporalCount(勾选) |
返回自关联状态变为活动状态以来图表被唤醒的次数。 隐式事件 使用 |
存储输入数据的值 en,du: M(temporalCount(tick)+1) = u; |
|
|
返回自关联状态变为活动状态以来经过的时间长度。 指定以秒为单位的时间( |
存储状态变为活动后的毫秒数。 en,du: y = temporalCount(msec); |
|
运行 |
|
返回自关联状态变为活动状态以来经过的时间长度。 相当于 |
存储状态变为活动后的秒数。 En,du: y =流逝(秒); |
等 |
另一种执行方式运行(sec) . |
当图表处理事件的广播时 E {disp (et);} |
|
数 |
|
返回自条件表达式以来图表被唤醒的次数 状态流图将重置 在Simulink模型的图表中金宝app,的值 |
转换出关联状态时,变量 [count(x>=2) > 5] |
存储自变量以来的图表执行次数 En,du: y = count(x>5); |
|||
持续时间 |
|
返回从条件表达式开始经过的时间长度 指定以秒为单位的时间( 状态流图将重置 时间逻辑算子 |
转换出变量时的状态 [duration(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模型)block为状态流程图提供了一个单元步进输入。
图表决定何时输入u
= 1:
如果在t = 2秒之前输入等于1,则从开始
来快
.
如果在t = 2和t = 5秒之间输入等于1,则从开始
来媒介
.
如果t = 5秒后输入等于1,则从开始
来慢
.
您可以在驻留在有条件执行的子系统中的图表中使用绝对时间时间逻辑。当子系统被禁用时,图表将变为非活动状态,时间逻辑运算符将在图表休眠时暂停。在子系统重新启用和图表唤醒之前,操作员不会继续计算模拟时间。
该模型具有一个启用的子系统启用时的状态参数设置为举行
.
子系统包含一个图表,该图表使用后
操作符来触发转换。
的信号编辑器(金宝app模型)Block提供了一个具有以下特征的输入信号:
信号使子系统在t = 0时生效。
信号在t = 2时使子系统失效。
信号在t = 6时重新启动子系统。
这个图表显示了图表中所花费的总时间。当输入信号使子系统在时间t = 0时,状态一个
变得活跃。当系统被启用时,运行时间会增加。当子系统在t = 2时被禁用时,图表将进入睡眠状态,并且运行时间停止增加。对于2 < t < 6,由于系统被禁用,运行时间冻结在2秒。当图表在t = 6唤醒时,经过的时间又开始增加。
从状态的转变一个
州B
取决于经过的时间while状态一个
是活动的,不在模拟时间上。因此,转换发生在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是5的倍数。
时间逻辑运算符的值取决于它的关联状态何时变为活动状态。为了确保每个时态逻辑运算符都有唯一的关联状态,只在以下情况下使用这些运算符:
状态在
行动
源自状态的转换路径上的操作
不要在默认转场或图形函数中的转场上使用时间逻辑运算符,因为这些转场不是起源于状态。
蜱虫
在图表中金宝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计时器
唤醒图表,图表执行在
而且在
活动状态的动作。
该图表不重置计时器
与操作符关联的对象后
而且在
.如果转换路径上的条件在稍后变为true,则转换不会发生,直到另一个显式或隐式事件唤醒图表。
例如,在这个图表中,从状态的转换路径一个
州B
组合绝对时间时序逻辑触发器后(1秒)
以及条件(保安)
.从状态的转变一个
州C
绝对时间时间逻辑触发器后(5秒)
.每个转换都与计时器
对象,该对象生成隐式事件。最初是局部变量警卫
是假
.
执行图表时,请说明一个
变得活跃。该图表执行条目
操作并显示消息“你好!”
.一秒钟后,计时器
与过渡有关一个
来B
唤醒图表。由于转换无效,图表执行在
州内行动一个
并显示消息“你好!”
第二次。
假设2秒后,图表接收到输入事件E
.图表执行在
州内行动一个
改变的值警卫
来真正的
.因为图表没有重置计时器
与操作符关联后
,从一个
来B
在另一个事件唤醒图表之前不会发生。
5秒钟后,计时器
与过渡有关一个
来C
唤醒图表。因为从一个
来B
是否有效且有较高的执行顺序,图表不采取过渡状态C
或显示消息“再见!”
.相反,国家B
变为活动状态,图表显示消息“再见!”
.
为不在触发或启用的子系统内的离散图表生成的代码使用整数计数器跟踪时间,而不是由Simulink提供的时间。金宝app这种行为允许在开销和内存方面更有效地生成代码,并允许此代码用于软件在环(SIL)和处理器在环(PIL)模拟模式。有关更多信息,请参见SIL和PIL模拟(嵌入式编码).
后|在|之前|数|持续时间|运行|每一个|temporalCount|计时器
|信号编辑器(金宝app模型)|一步(金宝app模型)