ANSYS Scade One Swan语言与Scade 6的区别 - 状态机部分的改变

ANSYS Scade One 是 ANSYS Scade Suite 的后继产品。其语言Scade 6自2008年推出近20年后,推出了演化后的语言Swan。Swan对比Scade 6在状态机方面进行了若干改变。

改变1 - 移除Scade 6同步迁移

在Scade 6中的状态机语言特性中,支持一类被称为同步迁移的状态迁移类型。同步迁移支持状态机内的子状态机都达到final状态时,触发迁移。

一个Scade 6同步迁移的例子如

node SynchroTrTest(i1, i2, i3: int8)
  returns (o: int8)
automaton SM
  initial state State1
    automaton InnerSM
      initial state InnerState1
        unless
          if i2 > 42 restart InnerState2;
        o = i1;

      final state InnerState2
        o = i2;
    returns ..;
    until synchro resume State4;

  state State4
    o = i3;
returns ..;

在上面的例子中,仅当状态机 SM 中的子层次状态机InnerSM内的状态达到final状态时,才会触发同步迁移until synchro resume State4,迁移至状态 State4

在Swan中,同步迁移类型、以及与同步迁移相关的 final 状态类型被移除。移除的原因为,在实际行业使用中,使用synchro迁移的情况罕见。

改变2 - 在同一状态机层次中,强迁移与弱迁移禁止混合使用

Scade 6中,状态机内支持同时使用强迁移与弱迁移。Scade 6中强迁移与弱迁移的使用示例如下

node AutomatonTest(i1, i2: int8) returns (o: int8)
let
  automaton SM
    initial state State1
      unless
        if true resume State2;
      o = i1;
	  until
        if true resume State2;

    state State2
      o = i2;
  returns ..;

在上面的例子中,状态 State1 同时包含了强迁移unless if true resume State2; 与弱迁移until if true resume State2;

在Swan中,此类混合使用强迁移与弱迁移的场景被禁止。在同一状态机层次下,仅可使用一种类型的迁移。比如全部使用强迁移,或全部使用弱迁移。

改变3 - 与迁移有关的优化

  • 迁移可省略guard条件。
  • 迁移可显式描述优先级。

详细内容可参考 Scade One 技术文档:
Scade One Student

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值