Документация Engee

Порты языка физического моделирования Engee

Страница в процессе разработки.

В языке физического моделирования Engee порты — это интерфейсы, через которые физический компонент взаимодействует с другими блоками модели. Через порт могут передаваться:

  • Физические величины (напряжение, давление, температура);

  • Сигналы управления (например, числовые коэффициенты).

Порты физических компонентов (как и всей библиотеки Физическое моделирование) могут соединяться только с другими блоками физического моделирования такого же домена (например, порт поступательной механики с портом поступательной механики другого блока).

Виды портов

В языке физического моделирования Engee есть два типа портов:

  • Ненаправленные порты (@nodes) — применяются для описания физических соединений. У них нет строгого деления на «вход» и «выход»: поток может течь в любую сторону. С их помощью моделируются реальные физические домены, например:

    • Электричество (напряжение и ток),

    • Поступательная механика (скорость и сила),

    • Тепло (температура и тепловой поток).

  • Направленные порты (@inputs, @outputs) — используются для передачи сигналов. У них всегда задано направление: вход (@inputs) или выход (@outputs). Такие порты чаще всего применяются в блоках управления, где нужно передавать управляющие или вычисленные значения.

Ненаправленные порты

Внутри компонента такие порты объявляются через конструкцию @nodes.

@engeemodel Resistor begin
    @parameters begin
        R = 1.0, [unit = "Ohm"]
    end
    @nodes begin
        p = EngeePhysicalFoundation.Electrical.Pin
        n = EngeePhysicalFoundation.Electrical.Pin
    end
    @variables begin
        v = 0.0, [unit = "V"]
        i = 0.0, [unit = "A"]
    end
    @branches begin
        i:(p.i, n.i)
    end
    @equations begin
        v ~ p.v - n.v
        v ~ R * i
    end
end

Здесь:

  • @nodes — добавляет два электрических порта p и n;

  • @branches — формулирует правило сохранения тока в ветви;

  • @equations — задает закон Ома: напряжение на резисторе равно произведению сопротивления на ток.

Направленные порты

Сигнальные входы и выходы объявляются через конструкции @inputs и @outputs.

@engeemodel GainBlock begin
    @parameters begin
        k = 2.0
    end
    @inputs begin
        x = 0
    end
    @outputs begin
        y = 0
    end
    @equations begin
        y.u ~ k * x.u
    end
end

Здесь:

  • Направленные порты содержат переменную u, которая представляет значение сигнала;

  • В уравнениях нужно использовать не сам порт, а переменную u внутри него: x.u для входного сигнала, y.u для выходного;

  • Входной сигнал x.u умножается на коэффициент k;

  • Результат передается в выходной сигнал y.u.

Такие порты удобны для смешанных моделей, где часть элементов работает с физическими величинами, а часть — с сигналами управления.

Потенциальные и потоковые переменные в ненаправленных портах

У каждого ненаправленного порта есть связанные переменные двух типов:

  • Потенциальные — величины, приравнивающиеся при соединении портов (потенциал, температура, давление, скорость, угловая скорость). Для них не требуется специальная пометка.

  • Потоковые (connect = Flow) — величины переноса между компонентами (ток, тепловой поток, расход, сила, момент), сумма которых по всем соединённым портам равна нулю.

Пример объявления электрического порта:

@engeeconnector Pin2 begin
    @variables begin
        v = 2.0                    # потенциал (потенциальная переменная)
        i = 0.0, [connect = Flow]  # ток (потоковая переменная)
    end
end

Здесь:

  • v — потенциальная величина (напряжение);

  • i — потоковая величина (ток).