【发布时间】:2018-09-27 13:19:25
【问题描述】:
我正在寻找一种在 Simulink Stateflow 中使用基于事件的时序逻辑的方法。
示例:[State_1] --> [after(3,sec) && e] --> [State_2]
场景:
- 0 秒:State_1 处于活动状态
- 2 秒:e 为真
- 5 秒:State_2 处于活动状态(仅在 e 的 3 秒后)
期望:[State_1] -->(在 e 的 3 秒之后)--> [State_2]
结果:[State_1] -->(State_1 3 秒后)--> [State_2]
有解决办法吗?我在 MathWorks 官方文档中没有找到 (MathWorks - Control Chart Execution Using Temporal Logic)
谢谢
【问题讨论】:
-
事件是离散的,发生在一个时刻,所以
after 3s of e没有意义。您是否希望在e发生 3 秒后发生转换,或者e是否真的是一个启用信号,需要在转换发生前保持高 3 秒?这两个都比较容易实现。 -
e 是一个使能信号,需要在转换发生前保持高电平 3 秒,并且 state_2 将处于活动状态。当然,我可以使用更进一步的状态作为计时器,但我希望有更智能的解决方案。
-
smart 的解决方案是使用另一种状态来指示事件已经发生,但如果启用信号在 3s 窗口内变为低电平,则该状态会恢复到原始状态。没有理由不这样做,它有助于解释您实现的逻辑。
-
好的,在这种情况下,这似乎是一个聪明的解决方案。感谢您的反馈。