Тепловые модули часто требуют аффинного преобразования, то есть, преобразование, которое выполняет и умножение и сложение. Чтобы преобразовать от старого значения Told к новому значению Tnew, нам нужен линейный коэффициент преобразования L и смещение O:
Tnew = L * Told + O
Например, чтобы преобразовать температуру, читающую из градусов Цельсия в градусы по Фаренгейту, линейный член равняется 9/5, и смещение равняется 32:
TFahr = 9 / 5 * TCels + 32
Директор производства Simscape™ задает кельвин (K
) как основной температурный модуль. Это делает Цельсия (degC
) и Фаренгейт (degF
) аффинные модули, потому что они оба связаны с кельвином с аффинным преобразованием. Rankine (degR
) задан в терминах кельвина с нулевым линейным смещением и, поэтому, не аффинный модуль.
Следующее является модульными определениями реестра Simscape по умолчанию для температурных модулей:
pm_adddimension('temperature', 'K'); % defines kelvin as fundamental temperature unit pm_addunit('degC', [1 273.15], 'K'); % defines Celsius in terms of kelvin pm_addunit('degF', [5/9 -32*5/9], 'degC'); % defines Fahrenheit in terms of Celsius pm_addunit('degR', [5/9 0], 'K'); % defines rankine in terms of kelvin
Имея дело с аффинными модулями иногда необходимо преобразовать их использующий только линейный член. Обычно, это происходит, когда значение, которое вы преобразуете, представляет родственника, а не абсолютный, температура, ΔT = T1 – T2.
ΔTnew = L * ΔTold
В этом случае добавление аффинного смещения дало бы к неправильным результатам преобразования.
Например, наружная температура повысилась на 18 градусов по Фаренгейту, и необходимо ввести это значение в модель. При преобразовании этого значения в кельвин используйте линейное преобразование
ΔTkelvin = 5 / 9 * ΔTFahr
и вы получаете 10 K, то есть, наружная температура, измененная на 10 кельвинов. Если вы примените аффинное преобразование, вы получите изменение температуры приблизительно 265 кельвинов, которое является неправильным.
Это еще лучше проиллюстрировано, если вы используете градусы Цельсия во входных модулях, потому что линейный член для преобразования между Цельсия и кельвином равняется 1:
Если наружная температура, измененная на 10 градусов Цельсия (относительное температурное значение), то это изменилось на 10 кельвинов (не применяют аффинное преобразование).
Если наружная температура составляет 10 градусов Цельсия (значение абсолютной температуры), то это - 283 кельвина (примените аффинное преобразование).
Для относительных температур можно также использовать относительные температурные модули: deltaK
, deltadegC
, deltadegF
, deltadegR
. Эти модули сопоставимы с модульной базой данных Simulink® (см. Модули в Simulink (Simulink)). Если вы используете эти модули, аффинное преобразование не применяется.