当前位置: 首页 > news >正文

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

相关文章:

  • Go后端架构探索:从 MVC 到 DDD 的演进之路
  • 1_vue基本_插件
  • 从代码学习数值优化算法 - 拉格朗日对偶方法 Python 版
  • CVE-2025-30208(文件读取)漏洞复现
  • 【算法手记7】拼三角
  • 将代理连接到 Elasticsearch 使用模型上下文协议
  • 北大人工智能研究院朱松纯:“中国的AI叙事” 存在认知偏差
  • 告别API限费!开源Word/PPT一键生成工具——企业级AIGC自由方案
  • LiteDB 数据库优缺点分析与C#代码示例
  • 【鸿蒙5.0】向用户申请麦克风授权
  • Seata AT模式的一些常见问题及其源码解析
  • JVM原理
  • 室内环保产业观察2025.3.30
  • Mybatis_Plus中的常用注解
  • ollama在win10安装、使用、卸载
  • 【百日精通 JAVA | SQL篇 | 第一篇】初识数据库
  • 从一到无穷大 #44:AWS Glue: Data integration + Catalog
  • 【Matlab】-- 基于MATLAB的飞蛾扑火算法与反向传播算法的混凝土强度预测
  • Python 的 pyautogui 写个简单 关闭广告 和 刷视频 程序
  • 19914 最小生成树2