Dymola中的FMU-Export:是否可以制作Modelica枚举类型变量"可调整"当导出为FMU / FMI时

时间:2015-04-16 12:13:42

标签: modelica dymola fmi

我在一个Modelica模型中实现了三个类似的出版物,使用枚举类型变量来选择出版物。目标是通过在线更改枚举类型变量的值来在计算方法之间切换(即在出版物之间) 计算包括三个步骤,每个步骤都有自己的枚举变量。这允许混合计算方法,例如,通过设置步骤1根据出版物1和根据出版物2的步骤2和3进行计算。

每一步都是这样的

model Calculation_step

  type pubSelect = enumeration(
      Publication_1,
      Publication_2,
      Publication_3);
  // ####### Publication Selection #######
  parameter pubSelect selection = pubSelect.Publication_2;
  // ##### End Publication Selection #####

  Modelica.Blocks.Interfaces.RealInput incoming;
  Modelica.Blocks.Interfaces.RealOutput outgoing;

  parameter Real factor = 5;

equation 
  if selection == pubSelect.Publication_1 then
    outgoing = factor * sin(incoming);
  elseif selection == pubSelect.Publication_2 then
    outgoing = factor * sin(incoming)^2;
  elseif selection == pubSelect.Publication_3 then
    outgoing = factor * sin(incoming)^3;
  else
    outgoing = 99999;
  end if;

  annotation (uses(Publicationica(version="3.2.1"), Modelica(version="3.2.1")));
end Calculation_step;

该模型不会在Dymola中计算出来。相反,使用Dymola创建功能模型单元(FMU)。这将创建一个描述模型的XML文件。为了启用在线更改,变量必须在此XML中设置属性variability="tunable"

但是,变量selection 不可调,如以下XML摘录所示:

-<ModelVariables>

<!-- Index for next variable = 1 -->


-<ScalarVariable name="selection" variability="constant" valueReference="100663296">

<Enumeration start="2" declaredType="Calculation_step"/>

</ScalarVariable>

使用相同的代码声明变量factor会产生可调 FMU变量:

<!-- Index for next variable = 4 -->


-<ScalarVariable name="factor" variability="tunable" valueReference="16777216" causality="parameter">

<Real start="5"/>

</ScalarVariable>

TL; DR: 是否可以制作Modelica枚举类型变量&#34;可调&#34;何时导出为FMU / FMI?

Dymola Version 2015 FD01(32位),2014-11-04

0 个答案:

没有答案