Modelica - Создание иконок

Я хочу создать значок для модели, которая объединяет два компонента из стандартной библиотеки 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.p и signalvoltage1.n на слой значков. И я не знаю, как получить доступ к свойствам sine1, дважды щелкнув, например, прямоугольник, который я могу легко нарисовать с помощью OMEdit.

Заранее спасибо.


person user2083291    schedule 18.02.2013    source источник


Ответы (1)


Теперь я хочу добиться следующего: я хочу создать значок, который

содержит контакты signalvoltage1, который дает доступ к свойствам sine1 двойным щелчком.

OK для контактов: обычно графический редактор должен предлагать вам возможность автоматически создавать соответствующий соединитель всякий раз, когда вы переходите от существующего соединителя к пустому месту на диаграмме. Однако 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;
person Dietmar Winkler    schedule 19.02.2013
comment
@Diemtar Winkler Хороший ответ! Это то, что я искал, спасибо! Действительно, будет более элегантно, если OMEdit будет поддерживать упомянутую вами функцию, чтобы не нужно было вставлять эти фиктивные контакты. - person user2083291; 19.02.2013
comment
Термин «размножение» часто используется для описания этого процесса. Идея состоит в том, что когда вы создаете подсистему компонентов, вам необходимо распространить некоторую информацию в подсистеме (в основном соединители и параметры) до следующего более высокого уровня в иерархии. Как указывает Дитмар, это настолько распространенный процесс, что у большинства инструментов есть какие-то ярлыки, которые помогают вам в этом распространении. - person Michael Tiller; 19.02.2013