【问题标题】:Can a parameter be used to set the unit attribute for a component?可以使用参数来设置组件的单位属性吗?
【发布时间】:2019-05-15 17:20:54
【问题描述】:

到目前为止,使用 Wolfram System Modeler 4.3 和 5.1 编译以下最小示例不会出错:

model UnitErrorModel
    MyComponent c( hasUnit = "myUnit" );

    block MyComponent
        parameter String hasUnit = "1";
        output Real y( unit = hasUnit );
    equation
        y = 10;
    end MyComponent;

end UnitErrorModel;

但是随着 WSM 12.0 的新版本(版本的跳跃是由于与 Wolfram 的旗舰 Mathematica 的当前版本保持一致)我收到一条错误消息:

内部错误:Codegen.getValueString:非常量表达式:c.hasUnit

(注意:错误是由 Mathematica 12.0 中的 WSMLink'WSMSimulate 给出的,它在内部运行 System Modeler 12.0;这里要求上述模型的 "InternalValues" 属性,因为我现在还没有安装 WSM 12.0)。

尝试在 OpenModelica [OMEdit v. 1.13.2 (64-bit)] 中模拟上述模型显示:

SimCodeUtil.mo: 8492:9-8492:218]: Internal error Unexpected expression (应该更早处理,可能在前端。Unit/displayUnit 表达式不是字符串文字:c.hasUnit

所以似乎设置单位属性我不能使用具有参数可变性的变量?为什么会这样 - 毕竟编译器在运行时编译时可以硬连线单元就足够了(毕竟给定的模型将在 WSM 4.3 和 5.1 中运行而没有任何错误)?

编辑:从answer to an older question of mine 开始,我相信至少可以使用最终参数来设置单位属性。进行最终修改(例如 c( final hasUnit = "myUnit" ) 不能解决问题。

【问题讨论】:

  • 只使用“模型中心”和“模拟中心”是否模拟。 WSMLink'WSMSimulate 听起来像是与 Matematica 功能相关的东西。
  • @jrhodin 我已经删除了 WSM 12.0,但是当我安装它时,它不会只使用“模型中心”和“模拟中心”在那里编译。我认为至少可以使用“最终”参数来设置单位属性...
  • 这在 Dymola 中有效,即使在迂腐模式下(更严格地检查代码是否符合 Modelica 规范)。
  • 使用constant而不是parameter有区别吗?
  • 是的,参数会更好,并且应该可以工作,但至少你现在有一个解决方法。您也可以使用replaceable constant 并在实例化期间设置单位。

标签: runtime-error modelica openmodelica systemmodeler


【解决方案1】:

Wolfram MathCore 的某个人就这个问题给了我feedback on Wolfram Community

您是正确的,因为它不违反规范, 虽然让它成为一个常数更有意义,因为你会 如果您被允许更改,则使您的所有静态单元检查无效 建立模拟后的单元。我们在 关于此的规范 (Modelica Specification Issue # 2362)。

因此,MatheCore 在提出他们已经实施的 Modelica 规范更改方面有点领先。 ;-)

注意:在 Wolfram System Modeler (12.0) 中使用注解 Evaluate = true 并不能解决问题(参见上面@matth 的评论)。

作为一种解决方法,用于设置unit 属性的变量应该具有常量 可变性,但仍然可以通过包含在用户对话框中以使用annotation(Dialog(group = "GroupName")) 进行交互更改.

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2012-11-13
    • 1970-01-01
    • 2010-10-24
    • 2015-03-07
    • 2013-03-16
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多