【问题标题】:How can I used Event-Based Temporal Logic in MATLAB/Simulink Stateflow?如何在 MATLAB/Simulink Stateflow 中使用基于事件的时序逻辑?
【发布时间】: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 窗口内变为低电平,则该状态会恢复到原始状态。没有理由不这样做,它有助于解释您实现的逻辑。
  • 好的,在这种情况下,这似乎是一个聪明的解决方案。感谢您的反馈。

标签: matlab simulink stateflow


【解决方案1】:

我就是这样做的:

[State_1] --> [ e] --> [State_1_copy]--> (after 3s) --> [State_2]

结合:

[State_1] <-- [ ~e] <-- [State_1_copy]

Entryleft 状态 1 的操作可能需要根据情况进行更改。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多