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

Пользовательская модель лампы накаливания

Цель материала – показать полный путь от физической постановки задачи до пользовательского компонента на языке физического моделирования Engee и его проверки в схеме переменного тока.

В Сообществе Engee уже существует отдельный раздел с примерами пользовательских физических компонентов. Продолжаем эту тематику и разберем модель лампы, сопротивление которой возрастает при нагреве нити.

Язык физического моделирования Engee является декларативным: разработчик записывает связи между физическими величинами и дифференциальные уравнения, а причинность и численное решение определяет решатель. Синтаксис и назначение конструкций приведены в официальной документации.

Математическая модель

Нить накала рассматривается как электрическое сопротивление с тепловой инерцией. При включении нить холодная, поэтому ее сопротивление мало. По мере нагревенаия лампы её сопротивление растет, соответственно ток снижается до номинального значения.

Сопротивление при включении и номинальное сопротивления определяются по заданным напряжению и токам:

Линейная температурная зависимость сопротивления задаётся выражением

Электрическая мощность расходуется на нагрев нити в момент включения и передачу тепла в окружающую среду:

где – коэффициент теплопередачи, а – тепловая постоянная времени. Из установившегося номинального режима получаем

В модели с. Начальное значение соответствует непрогретой нити.

Как устроен компонент @engeemodel

Любой пользовательский физический компонент начинается конструкцией @engeemodel Имя begin ... end. Внутри неё размещаются специализированные секции вида @... begin ... end.

  • @icon связывает компонент с файлом icon.svg, который задаёт его внешний вид на холсте.
  • @nodes объявляет два ненаправленных электрических порта p и n типа EngeePhysicalFoundation.Electrical.Pin. В электрическом домене порт содержит потенциал v и потоковую переменную i. Метаданные view задают подписи и стороны размещения портов.
  • @parameters содержит настраиваемые до симуляции величины. После запятой в квадратных скобках записаны метаданные: единица измерения и описание параметра.
  • @variables вводит непрерывные неизвестные delta_T, i и v. Их значения определяются всей системой уравнений, а не последовательным выполнением строк. Начальное значение delta_T = 0.0 и высокий приоритет помогают задать непрогретое начальное состояние.
  • @intermediates задают промежуточные уравнения, которые вычисляются непосредственно из параметров и переменных. Сюда вынесены сопротивления, коэффициент теплопередачи и составляющие мощности.
  • @branches связывает внутренний ток i с потоковыми переменными портов: запись i:(p.i, n.i) задаёт направление ветви и обеспечивает баланс токов при соединении компонентов.
  • @equations содержит физические отношения. Тильда ~ обозначает равенство в системе уравнений, а der(delta_T) – производную температуры по времени.

Официальные примеры в документации показывают тип порта без круглых скобок. Ниже приведен код файла /user/custom_lamp/lamp.ngpc.

Полный код компонента

Ниже приведено полное содержимое файла lamp.ngpc.

# Описание лампы накаливания на языке физического моделирования Engee
# Модель имитирует увеличение сопротивления при нагреве. При включении можно увидеть большой пусковой ток. Начальное состояние - лампа не прогрета.

@engeemodel Lamp begin

    @icon begin
        "icon.svg"
    end

    #объявление электрических портов
    @nodes begin
        p = EngeePhysicalFoundation.Electrical.Pin(), [view = ("+", "left")]
        n = EngeePhysicalFoundation.Electrical.Pin(), [view = ("-", "right")]
    end

    #объявление параметров
    @parameters begin
        V_nom = 220.0, [unit = "V", description = "Номинальное напряжение"]
        I_inrush = 5.0, [unit = "A", description = "Пусковой ток холодной лампы"]
        I_nom = 0.413, [unit = "A", description = "Номинальный ток прогретой лампы"]
        alpha = 0.004, [unit = "1/K", description = "Температурный коэффициент сопротивления"]
        time_coefficient = 0.025, [unit = "s", description = "Тепловая постоянная времени"]
    end

    #объявление неизвестных переменных
    @variables begin
        delta_T = 0.0, [unit = "K", description = "Изменение температуры нити относительно начального состояния", priority = "high", access = Private] #потенциальная переменная
        i = 0.0, [unit = "A", description = "Ток", access = Private]        #потоковая переменная
        v = 0.0, [unit = "V", description = "Напряжение", access = Private] #потенциальная переменная
    end

    #объявление промежуточных переменных, которые вычисляются явно из параметров и переменных
    @intermediates begin
        R_cold = V_nom / I_inrush, [unit = "Ohm"]                           #сопротивление холодной лампы через пусковой ток и номинальное напряжение
        R_nom = V_nom / I_nom, [unit = "Ohm"]                               #сопротивление лампы в рабочем режиме через номинальный ток и номинальное напряжение
        k = alpha * I_nom^2 * R_nom / (R_nom / R_cold - 1), [unit = "W/K"]  #коэффициент теплопередачи из уравнения теплового баланса при нулевой производной (УР)
        R = R_cold * (1 + alpha * delta_T), [unit = "Ohm"]                  #сопротивление в переходном режиме
        P_electrical = i^2 * R, [unit = "W"]                                #электрическая мощность
        P_loss = k * delta_T, [unit = "W"]                                  #тепловая мощность
        P_heat = time_coefficient* k * der(delta_T), [unit = "W"]           #мощность на нагрев лампы
    end

    #правило протекания тока
    @branches begin
        i:(p.i, n.i)                                                        #потоковая переменная
    end

    #уравнения лампы
    @equations begin
        v ~ p.v - n.v                                                       #напряжение - это разность потенциалов
        v ~ R * i                                                           #закон Ома
        time_coefficient * k * der(delta_T) ~ i^2 * R - k * delta_T         #уравнение теплового баланса
    end

end

Проверочная схема

Компонент включен последовательно с источником переменного напряжения 220 В действующего значения и частотой 50 Гц. Выключатель замыкается в момент 0,04 с. Амперметр, вольметр и блоки RMS позволяют одновременно наблюдать мгновенные и действующие значения напряжения и тока. Блок Solver Configuration обязателен для физической сети, а электрическое заземление задает опорный потенциал.

image.png

Рисунок 2 – Проверочная схема лампы с источником переменного напряжения.

Результаты симуляции: напряжение и ток

До 0,04 с ключ разомкнут, поэтому напряжение и ток лампы равны нулю. После замыкания мгновенное напряжение имеет амплитуду около В, а действующее значение выходит на 220 В. Ступенчатый участок кривой RMS связан с тем, что измерителю требуется накопить данные за окно расчета.

image.png

Рисунок 3 – Мгновенное и действующее напряжение на лампе.

Сразу после включения холодное сопротивление равно 44 Ом. Поэтому при включении вблизи амплитуды синусоиды мгновенный ток достигает примерно А, что согласуется с пиком на рисунке 4 и заданным действующим значением пускового током
По мере разогрева сопротивление растёт, амплитуда тока уменьшается, а действующее значение стремится к заданному в параметрах номильному значению тока 0,413 А. Знак мгновенного тока меняется с полярностью источника; отрицательные значения не означают обратного нагрева, поскольку в тепловом балансе используется .

image.png

Рисунок 4 – Пусковой процесс и установившийся ток лампы.

Результаты симуляции: сопротивление

До включения сопротивление сохраняет холодное значение 44 Ом. После подачи напряжения оно быстро возрастает и выходит в область номинального сопротивления Ом. Небольшие пульсации установившегося сопротивления возникают потому, что мгновенная мощность при синусоидальном токе пульсирует с удвоенной частотой сети, то есть около 100 Гц. Тепловая постоянная времени сглаживает эти пульсации, но в принятой сосредоточенной модели не устраняет их полностью.

image.png

Рисунок 5 – Рост сопротивления нити при разогреве.

Графики согласуются между собой: рост сопротивления сопровождается спадом пускового тока, тогда как действующее напряжение источника остаётся равным 220 В. Модель воспроизводит главное качественное свойство лампы накаливания – большой ток холодной нити и его ограничение после прогрева.

Использованные источники