我已经声明使用MSL CombiTimeTable并替换我自己的代码来实现类似的功能。有没有一种方法可以在编译时只指定表的大小,然后给出表值?
下面的声明代码可以工作
CombiTimeTable pump(
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=[0,0; 1001,1; 1002,2; 1003,3; 1004,4; 1005,5]);但我希望避免给出表的虚拟值。这个块的MSL文档并没有表明这是可能的,但这里可能有一些方法可以做到这一点?
我通常将Modelica代码编译成FMU并在Python脚本中设置参数。可以从文件中读取CombiTimeTable信息,但为了简单起见,我希望在Python脚本中包含FMU的所有参数。
发布于 2021-05-14 16:41:20
那得看情况。您可以尝试:
CombiTimeTable pump(
nout=1,
smoothness=Modelica.Blocks.Types.Smoothness.ConstantSegments,
extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint,
table=table);
parameter Real table[6,2];它使用大小合适的未指定的表。
然而,工具可能需要特殊的设置(Dymola似乎需要Advanced.IssueErrorForUnassignedParameter=false)-和/或生成默认值,如0。
发布于 2021-05-21 13:17:15
是否可以选择指定文件中的表数据,即tableFromFile=true?通过这种方式,您不需要以显式的方式关心表的行数,因为所有这些都是在Modelica外部函数代码中处理的。
https://stackoverflow.com/questions/67530416
复制相似问题