Modelica表格调用问题:可视化界面修改初始值不生效
问题:Modelica中如何通过可视化界面的record表格修改部件初始值?
问题背景
编写Modelica数学模型时,通过record封装初始数据以提升可读性,但在总界面修改record实例的参数后,部件数据无变化,需要实现通过可视化界面的表格直接修改所有部件的初始值。
初始数据表代码(initialnumber包)
package initialnumber record constantnumber parameter Modelica.Units.SI.Temperature Tair=10+273.15 "环境温度"; parameter Modelica.Units.SI.MassFlowRate W0_8=632207/3600 "设计工况下第八级组入口蒸汽流量"; parameter Modelica.Units.SI.Diameter Din=0.024 "管内径"; end constantnumber; record startnumber Modelica.Units.SI.Mass Ms(start=195) "蒸汽质量"; Modelica.Units.SI.Mass Ml(start=91000) "水质量"; end startnumber; end initialnumber;
总界面模型代码(A_03块)
block A_03 A_QT a_QT annotation (Placement(transformation(extent={{98,30},{118,50}}))); Deaerator.dea deaerator; initialnumber.constantnumber constantnumber(N=130); initialnumber.startnumber startnumber; equation connect(a_IP2_1.IP2_smallturbine, a_smallturbine.smallturbine_rukou); connect(a_nqq.shushui, LP7.outlet2); connect(a_IP2_1.IP2_CQ, deaerator.Dea_CQ); end A_03;
解决方法
核心问题是部件未引用总界面中record实例的参数/变量,仅声明record实例但未建立传递关系,导致界面修改无法同步到部件。具体步骤:
修改部件模型,添加record类型的参数输入
以Deaerator.dea为例,在部件内部添加对应record类型的参数,将原局部初始值替换为外部传入的record数据:block dea // 添加参数,接收外部传入的record实例 parameter initialnumber.constantnumber constData; initialnumber.startnumber startData; // 部件内部使用record中的数据 Modelica.Units.SI.Temperature T_env = constData.Tair; Modelica.Units.SI.Mass waterMass(start=startData.Ml); // ... 其他部件逻辑 end dea;其他需要使用初始数据的部件(如
A_QT)需做同样修改。在总界面中传递record实例给部件
修改A_03块代码,将声明的record实例作为参数传递给对应部件,建立数据关联:block A_03 // 声明可在可视化界面修改的record实例 initialnumber.constantnumber constData(N=130); initialnumber.startnumber startData; // 将record实例传递给部件 Deaerator.dea deaerator(constData=constData, startData=startData); A_QT a_QT(constData=constData) annotation (Placement(transformation(extent={{98,30},{118,50}}))); equation connect(a_IP2_1.IP2_smallturbine, a_smallturbine.smallturbine_rukou); connect(a_nqq.shushui, LP7.outlet2); connect(a_IP2_1.IP2_CQ, deaerator.Dea_CQ); end A_03;匹配record变量类型
constantnumber中的参数为编译时常量,部件需用parameter类型接收;startnumber中的变量带start属性,部件内部变量需通过start绑定对应值。
可视化界面配置
在Modelica工具(如Dymola、OpenModelica)中开启组件参数表格显示,选中总界面的constData和startData实例,即可在表格中直接修改参数,修改会同步到所有引用的部件。
内容的提问来源于stack exchange,提问作者white
相关产品推荐
相关产品推荐

