Пользовательская модель лампы накаливания
Пользовательская модель лампы накаливания
Цель материала – показать полный путь от физической постановки задачи до пользовательского компонента на языке физического моделирования 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 обязателен для физической сети, а электрическое заземление задает опорный потенциал.
Рисунок 2 – Проверочная схема лампы с источником переменного напряжения.
Результаты симуляции: напряжение и ток
До 0,04 с ключ разомкнут, поэтому напряжение и ток лампы равны нулю. После замыкания мгновенное напряжение имеет амплитуду около В, а действующее значение выходит на 220 В. Ступенчатый участок кривой RMS связан с тем, что измерителю требуется накопить данные за окно расчета.
Рисунок 3 – Мгновенное и действующее напряжение на лампе.
Сразу после включения холодное сопротивление равно 44 Ом. Поэтому при включении вблизи амплитуды синусоиды мгновенный ток достигает примерно А, что согласуется с пиком на рисунке 4 и заданным действующим значением пускового током
По мере разогрева сопротивление растёт, амплитуда тока уменьшается, а действующее значение стремится к заданному в параметрах номильному значению тока 0,413 А. Знак мгновенного тока меняется с полярностью источника; отрицательные значения не означают обратного нагрева, поскольку в тепловом балансе используется .
Рисунок 4 – Пусковой процесс и установившийся ток лампы.
Результаты симуляции: сопротивление
До включения сопротивление сохраняет холодное значение 44 Ом. После подачи напряжения оно быстро возрастает и выходит в область номинального сопротивления Ом. Небольшие пульсации установившегося сопротивления возникают потому, что мгновенная мощность при синусоидальном токе пульсирует с удвоенной частотой сети, то есть около 100 Гц. Тепловая постоянная времени сглаживает эти пульсации, но в принятой сосредоточенной модели не устраняет их полностью.
Рисунок 5 – Рост сопротивления нити при разогреве.
Графики согласуются между собой: рост сопротивления сопровождается спадом пускового тока, тогда как действующее напряжение источника остаётся равным 220 В. Модель воспроизводит главное качественное свойство лампы накаливания – большой ток холодной нити и его ограничение после прогрева.
Использованные источники
- Язык физического моделирования Engee – назначение декларативного языка и структура раздела документации.