Пользовательская модель лампы накаливания
作者
# Описание лампы накаливания на языке физического моделирования 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