Измерение температуры при закалке стали
Измерение температуры при закалке стали
В данном примере показано, как использование блока "Термопара" позволяет моделировать измерение температуры стали во время закалки.
При закалке сталь нагревают до температуры выше температуры рекристаллизации, а затем быстро охлаждают, погружая в жидкость. Из-за высокой температуры невозможно использовать традиционные средства измерения температуры (термисторные или полупроводниковые датчики температуры, жидкостные термометры). Для измерения температур в таких суровых условиях в промышленности и в лабораториях используются термопары, которые преобразуют разность тепловых потенциалов в разность электрических потенциалов.
Обзор модели
Откроем модель thermocouple_quenching.
cd(@__DIR__) # Переход в папку с примером
engee.open("thermocouple_quenching.engee");

В этой модели блок "Тепловая масса" моделирует стальной цилиндр нагретый до начальной температуры 850°C. Блок "Камера постоянного объема (ТЖ)" моделирует закалочную ванну и охлаждает цилиндр до 20°C посредством вынужденной конвекции.
Расчет и вывод графиков
В этом расчетном эксперименте мы будем изменять параметры разных блоков. На всякий случай еще раз выставим начальные параметры, с помощью которых мы получаем первые результаты.
engee.set_param!("thermocouple_quenching/Термопара", "parameterization"=>"Type K (t≥0 degC)")
engee.set_param!("thermocouple_quenching/Термопара", "C_vector"=>"TypeK_Cvec")
engee.set_param!("thermocouple_quenching/Табличная функция одной переменной",
"Table"=>"TypeK_degC", "BreakpointsForDimension1"=>"TypeK_Volts")
engee.set_param!("thermocouple_quenching/Теплопередача конвекцией",
"h" => Dict("value" => 4000, "unit" => "W/(m^2*K)"))
Выполним модель:
data = engee.run("thermocouple_quenching")
plot(data["TemperatureOut"].time, data["TemperatureOut"].value, leg=false, lw=2)
Блок "Таблица поиска 1-D" связывает выходное напряжение блока "Термопара" с температурной шкалой, то есть позволяет перевести вольты в градусы. Выведем логарифмический график временной зависимости температуры термопары и температуры цилиндра и убедимся, что расчетные и фактические значения совпадают.
tempOut = data["TemperatureOut"]
tempCylinder = data["Тепловая масса.T"]
plot( tempOut.time, tempOut.value, xaxis = (:log10, [10^-1, :auto]), lw=2 )
plot!( tempCylinder.time, tempCylinder.value .- 273.15, c=:red, ls=:dash, lw=2 )
Как мы видим, после перевода в градусы Цельсия графики очень хорошо совпадают.
Посмотрим, как менялась температура жидкости в резервуаре.
tempVolume = data["Камера постоянного объема (ТЖ).T"]
plot( tempVolume.time, tempVolume.value .- 273.15,
xaxis = (:log10, [10^-1, :auto]), lw=2, ls=:dashdot, leg=false )
Модель свойств теплопроводной жидкости ограничена максимальными температурами, поэтому чтобы избежать перегрева, в модели прописаны достаточно большие значения объема охлаждающего резервуара и объем интерфейса между резервуаром и окружающей средой (блок "Бак").
Мы видим, что жидкость достигает температуры 52.1°C (325.3К), оставаясь в допустимых пределах, заданных следующими значениями:
maxTemp = engee.get_param("thermocouple_quenching/Свойства теплопроводной жидкости (ТЖ)", "T_max_2D");
minTemp = engee.get_param("thermocouple_quenching/Свойства теплопроводной жидкости (ТЖ)", "T_min_2D");
println("Максимальная допустимая температура: ", maxTemp["value"], maxTemp["unit"])
println("Минимальная допустимая температура: ", minTemp["value"], minTemp["unit"])
Смена на термопару типа S (ТПП10)
Сейчас параметры блока "Термопара" соответствуют термопаре типа K (ТХА), и нелинейная характеристика для этого блока доступна в базе данных NIST ITS-90 [1]. Сохраним результаты для последующего сравнения:
TypeK_tout = tempOut;
TypeK_vout = data["Термопара.p.v"];
Для расчета термопары типа S (ТПП10). переведем наш блок термопары в другой режим:
engee.set_param!("thermocouple_quenching/Термопара", "parameterization"=>"Type B, E, J, K (t≤0 degC), N, R, S or T")
В качестве коэффициентов модели термопары подставим имеющиеся коэффициенты для термопары типа S:
engee.set_param!("thermocouple_quenching/Термопара", "C_vector"=>"TypeS_Cvec")
Кроме этого изменим таблицу в блоке нелинейной коррекции ("Табличная функция одной переменной") на соответствующие:
engee.set_param!("thermocouple_quenching/Табличная функция одной переменной",
"Table"=>"TypeS_degC", "BreakpointsForDimension1"=>"TypeS_Volts")
Запустим эту модель и тоже сохраним результаты для сравнения:
data = engee.run("thermocouple_quenching")
plot(data["TemperatureOut"].time, data["TemperatureOut"].value, leg=false, lw=2)
TypeS_tout = data["TemperatureOut"];
TypeS_vout = data["Термопара.p.v"];
Теперь мы можем вывести выходные характеристики термопар обоих типов:
plot( TypeS_vout.time, TypeS_vout.value, xaxis = (:log10, [10^-1, :auto]), ls=:dashdot, lw=2, label="Тип S" )
plot!( TypeK_vout.time, TypeK_vout.value, c=:red, ls=:dash, lw=2, label="Тип K" )
Напряжение на положительном выходе термопар разных типов - разное. Но рассчитанные на выходе температурные измерения - совпадают.
plot( TypeS_tout.time, TypeS_tout.value, xaxis = (:log10, [10^-1, :auto]), ls=:dashdot, lw=2, label="Тип S" )
plot!( TypeK_tout.time, TypeK_tout.value, c=:red, ls=:dash, lw=2, label="Тип K" )
Изменение свойств теплопередачи
В этом примере параметр "Коэффициент удельной теплоемкости" блока "Тепловая масса" и "Коэффициент теплопередачи" блока "Теплопередача конвекцией" являются оценками, полученными в лабораторном исследовании масштабной модели промышленной закалки стального цилиндра в воде [2].
Для простоты эти параметры заданы константами. Для более точных результатов потребовалось бы задать их в виде функции от температуры (если данные доступны), но есть более простой путь. Можно провести моделирование с разными значениями этих параметров и получить диапазон оценок.
Установим параметр "Коэффициент теплопередачи" в блоке "Теплопередача конвекцией" равный 4000.
engee.set_param!("thermocouple_quenching/Теплопередача конвекцией",
"h" => Dict("value" => 2000, "unit" => "W/(m^2*K)"))
Запустим модель и построим график.
data = engee.run("thermocouple_quenching")
tempOut4000 = TypeK_tout;
tempOut2000 = data["TemperatureOut"]
plot( tempOut2000.time, tempOut2000.value, ls=:dash, lw=2, label="2000 W/(K*m)^2" )
plot!( tempOut4000.time, tempOut4000.value, c=:red, xaxis = (:log10, [10^-1, :auto]), lw=2, label="4000 W/(K*m)^2", ls=:dashdot )
Заключение
Эта модель создана, чтобы точно измерить температуру стали при закалке с помощью термопары, там, где обычные датчики не работают. Чтобы улучшить результат, нужно использовать реальные зависимости коэффициента теплопередачи от температуры, а не постоянные значения.
Библиография
[1] Angela Y. Lee, NIST ITS-90 Thermocouple Database - SRD 60, National Institute of Standards and Technology, 2000. https://data.nist.gov/od/id/ECBCC1C1302A2ED9E04306570681B10748.
[2] Hasan, H. S., M. J. Peet, J. M. Jalil, and H. K. D. H. Bhadeshia. “Heat Transfer Coefficients during Quenching of Steels.” Heat and Mass Transfer 47, no. 3 (March 2011): 315–21. https://doi.org/10.1007/s00231-010-0721-4.