【问题标题】:import an existing Modelica block contained in MSL in a model在模型中导入包含在 MSL 中的现有 Modelica 模块
【发布时间】:2020-05-02 00:33:35
【问题描述】:

我是使用 OpenModelica 的新手。

我有一个模拟电池行为的模型。它由不同的 DAE 组成。现在它使用恒定电流工作,但我试图使用时变电流获得一些结果。我注意到在 Modelica -> Electrical -> Analog -> Sources 中有大量不同的电流输入,我可以使用它们来定义模型中的可变(实际)电流。

有没有办法在模型中引入一个已经存在的块?

例如,我试图在我的模型中提供 stepCurrent(包含在 Source 库中)作为输入,但我得到了一个错误。

这是我编码的方式:

型号电池

//变量和参数的定义

//II1C是当前的

导入 Modelica.Electrical.Analog.Sources.PulseCurrent; Real II1C = PulseCurrent(I = 10, period = 500, width = 50,offset=0);

方程

// DAE 系统,也是 II1C 的一个功能。

用完电池;

这是我收到的错误消息:

[1] 19:22:01 翻译错误 [BatteryModelDischarging: 15:1-15:68]:寻找函数 .Modelica.Electrical.Analog.Sources.PulseCurrent 但找到了一个模型。

[2] 19:22:01 翻译错误 展平模型 BatteryModelDischarging 时出错

有没有办法让它工作?

非常感谢您,

最诚挚的问候,加布里

【问题讨论】:

    标签: openmodelica


    【解决方案1】:

    是的,有多种方法可以将模型从库中引入到您的电池模型中。

    使您的模型“工作”的简单解决方案如下(至少它会检查;我不确定它会按照您的意愿执行)

    model Battery
    
    //definition of variables and parameters
    
    // II1C is the current
      Modelica.Blocks.Sources.Pulse currentSource(amplitude = 10, period = 500, width = 50, offset=0); 
      Real II1C;
    
    equation
    
    currentSource.y = II1C;
    
    // DAE system which is also a function of II1C.
    
    annotation(
        uses(Modelica(version = "3.2.3")));
    end Battery;
    

    在哪里

    • Modelica.Blocks.Sources.Pulse 是库中的路径 模型 Pulse 位于
    • currentSource 是名称 Battery 模型中 Pulse 模型的实例
    • (amplitude = 10, period = 500, width = 50, offset=0) 是参数 修改 Pulse 模型的默认行为(通常称为 修饰符)
    • currentSource.y = II1C; 在方程式部分下 是将 Pulse 模型 (.y) 的输出分配给 变量II1C 你实例化为Real II1C;

    请注意,虽然 Pulse 模型与电气域无关,但它只是一个通用信号源。也就是说,您可以将其以物理上有意义的方式集成到您的模型中;此外,它在建模和仿真性能方面可能效率低下。

    也许DrModelica 不仅是开始了解 Modelica 语言的技术方面的好地方,也是开始使用它建模的良好实践的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多