Modelica - 创建图标

4

我希望为模型创建一个图标,该模型结合了Modelica标准库中的两个组件。这两个组件分别是Modelica.Blocks.Sources.Sine和Modelica.Electrical.Analog.Sources.SignalVoltage。我已经将这两个组件连接起来,代码看起来像这样:

model test
 Modelica.Blocks.Sources.Sine sine1(freqHz = 5, amplitude = 1, offset = 10) annotation(Placement(visible = true, transformation(origin = {-51.0325,-0.884933}, extent = {{-12,-12},{12,12}}, rotation = 0)));
 Modelica.Electrical.Analog.Sources.SignalVoltage signalvoltage1 annotation(Placement(visible = true, transformation(origin = {-4.12979,-1.17994}, extent = {{12,-12},{-12,12}}, rotation = 90)));
equation
 connect(sine1.y,signalvoltage1.v) annotation(Line(points = {{-37.8325,-0.884933},{-12.9794,-0.884933},{-12.9794,-1.17994},{-12.5298,-1.17994}}));
end test;

注释是由OMEdit自动完成的。

现在我想要实现以下内容:我想创建一个图标,其中包含signalvoltage1的引脚,并且可以通过双击访问sine1的属性。

  • 该图标应包含signalvoltage1的引脚
  • 通过双击矩形(使用OMEdit轻松绘制)访问sine1的属性。

我知道annotation(Icon(...))和annotation(Placement(...))命令,但我不知道如何将signalvoltage1.p和signalvoltage1.n带到图标层。而且,我不知道如何通过双击矩形访问sine1的属性。

谢谢。

1个回答

5
现在我想实现以下目标:我想创建一个图标,其中包含signalvoltage1的引脚,通过双击可以访问sine1的属性。
对于引脚:通常情况下,图形编辑器应该会给您选择自动创建适当连接器的选项,每当您从现有连接器到空白位置时。然而,OMEdit不会(尚未?)这样做。因此,您需要将相应的连接器从MSL拖放到模型的图表视图中。在您的情况下,是Modelica.Electrical.Analog.Interfaces.NegativePin和Modelica.Electrical.Analog.Interfaces.PositivePin,然后适当地连接它们。连接器类型的组件将(应该)自动出现在图表和图标层上,以便可以“从外部”连接。
至于访问。您在模型的级别上创建一个新参数,并让您的新模型内部的组件使用这些参数。最好通过采用上面的示例来解释。
model Test
  parameter Real myfreqHz = 5 "Frequency of the sinewave";
  parameter Real myamplitude = 1 "Amplitude of the sinewave";    
  parameter Real myoffset = 1 "Offset of the sinewave";
  Modelica.Blocks.Sources.Sine sine1(freqHz = myfreqHz, 
                               amplitude = myamplitude, offset = myoffset);
  Modelica.Electrical.Analog.Sources.SignalVoltage signalvoltage1;
equation
...
end Test;

@Diemtar Winkler 很好的回答!这就是我在寻找的,谢谢!确实,如果OMEdit支持您提到的功能,那将更加优雅,这样就不需要插入那些虚拟引脚了。 - user2083291
术语“传播”经常用于描述这个过程。其思想是,当您构建组件的子系统时,您需要将子系统中的一些信息(主要是连接器和参数)向层次结构中的下一个更高级别传播。正如Dietmar所指出的那样,这是一个非常常见的过程,大多数工具都有某种“快捷方式”来帮助您进行这种传播。 - Michael Tiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接