Создание теплогидравлической модели конденсатора

Создание новой схемы ТРР

3.1.1 Новая схема ТРР

Создайте новый проект (схему) ТРР, «Новый проект» → «Схема ТРР» (см. рисунок 1). При помощи стандартного диалога сохранения файла сохраните схему под новым именем во вновь созданном каталоге, например: "C:\KTZ\Turbine\Конденсатор\Конденсатор КП-3200.prt" (предварительно создайте каталог).

3.1.2 Глобальные сигналы

Для начала, давайте зададим глобальные переменные (сигналы) модели конденсатора. Зайдите через главное меню SimInTech в пункт «Сервис» → «Сигналы…».

В появившемся окне нам нужно задать четыре новых сигнала – расход пара из турбины, расход охлаждающей воды, расход охлаждающей воды второго теплообменника и температуру охлаждающей воды, поступающей на теплообменники конденсатора: «Gp», «Gov1», «Gov2» и «Tov». Задайте их значения в соответствии с рисунком (рисунок 33):

Gp – Расход пара из турбины – Вещественное – Вход – 125.0

Gov1 – Расход охлаждающей воды – Вещественное – Вход – 2500.0

Gov2 – Расход охлаждающей воды – Вещественное – Вход – 2500.0

Tov – Температура охлаждающей воды – Вещественное – Вход – 10.1

Рисунок 33. Глобальные параметры для модели конденсатора

Эти параметры при отладке схемы мы будем изменять, поэтому создайте на схеме кнопки (8 шт.) для изменения параметров. Для ускорения, можно скопировать кнопки из схемы проточной части и отредактировать их свойства, см. рисунок 34. На рисунке видно, что значения остались от проекта проточной части ПТУ. При первом запуске на расчет переменные пересчитаются.

Рисунок 34. Кнопки для изменения глобальных параметров в модели конденсатора

3.2 Модель главного конденсатора

3.2.1 Описание модели

В данном учебном примере мы создадим модель конденсатора при помощи трёхобъемного бака (компенсатора) ТРР. В верхний объем бака будет поступать отработанный пар из ЦНД турбины, и конденсироваться в баке. К баку будут подключены 2 теплообменника, отводящие тепло от конденсатора. Из нижней части бака конденсат будет отводиться в граничное условие.

Параллельно с созданием конденсатора мы научимся использовать субмодель SimInTech для создания новых блоков (элементов схемы) с заданием своих свойств в них. Мы создадим конденсатор с возможностью изменения таких свойств как объем парового пространсва, поверхность теплопередачи, количество охлаждающих трубок и т.д., см. рисунок 35. В дальнейшем, отлаженную и проверенную субструктуру можно легко (простым копированием) переносить в другие проекты, внося требуемые и как правило небольшие изменения. Это существенно сокращает время на разработку и отладку новых схем.

Граничных условия будет два, оба типа G (в номинальном стационарном состоянии – сколько пара поступает в конденсатор из турбины, столько же конденсата и сливается из него).

Линии для охлаждающей воды будут смоделированы простейшим образом – каналами общего вида между граничными узлами типа G и P, с тепловым портом.

Рисунок 35. Свойства субмодели конденсатора

3.2.2 Содание верхнего уровня модели конденсатора

Итак, последовательно размещаем на схемном окне следующие элементы, и для удобства переименовываем их своими именами:

При помощи механизма вывода параметров элементов на схему, выведите имена вновь размещенных элементов на схемное окно. Зайдите в свойства конденсатора и измените картинку по умолчанию на надпись «Конденсатор КП-3200», причем сделайте выравнивание (привязку) надписи по центру и по середине (по ширине и по высоте). И разместите надпись в окна центре графического редактора, для этого:

Рисунок 36. Создание модели конденсатора (начало)

Рисунок 37. Создание модели конденсатора (готов верхний уровень)

3.2.3 Создание вложенного уровня субмодели конденсатора

Теперь переходим к набору теплогидравлической схемы внутри субмодели:

Рисунок 38. Изменение названия порта выхода

Результат сравните с рисунком (рисунок 39).

Рисунок 39. Субмодель конденсатора (вложенный уровень)

Теперь нам осталось лишь соединить каналы теплообменников тепловыми связями с конденсатором и переименовать объекты в удобные имена для дальнейшего программирования.

Рисунок 40. Субмодель конденсатора с тепловыми связями (вложенный уровень)

На этом набор схемы завершён (пока), здесь нам предстоит еще задать параметры объектов, и в принципе это можно сделать аналогично тому как мы задавали в проточной части, но мы это сделаем более универсальным, программным способом – при помощи редактора нового блока и встроенного в SimInTech языка программирования.

3.2.4 Редактор новых блоков

Субмодель, которую мы в будущем сможем удобно переносить в другие проекты и использовать там, должна быть полностью параметрически определена с верхнего уровня. Т.е., например, будет достаточно изменить поверхность теплообмена в свойствах самой субмодели, а внутри неё все свойства всех элементов, зависящих от поверхности теплообмена, автоматически пересчитаются на новые значения. Аналогично и с другими параметрами.

Перейдите на верхний уровень схемного окна и зайдите в свойства субмодели. Убедитесь, что имя объекта задано: «K» (буква английского алфавита); тип элемента (ClassName) задан: «Конденсатор ТРР» (вместо «Субмодель SimInTech»). Задание имени класса особенно важно, т.к. все дальнейшие манипуляции НЕ должны задеть и изменять стандартную библиотеку элементов ТРР и SimInTech.

Закройте панель свойств и, выделив на схемном окне субмодель (однократным щелчком мыши), перейдите в главное меню SimInTech, пункт «Правка» → «Изменить блок...». Откроется диалоговое окно с табличным заданием параметров и свойств выделенного на схеме блока (т.е. субмодели конденсатора).

Здесь нам нужно будет задать все свойства, их имена, типы и значения, определяющие модель конденсатора. Всего нужно будет добавить 21 свойство, из которых 5 будут справочными (нередактируемыми, а однозначно вычисляемыми из предыдущих параметров).

Таблица 3.1
Название Имя Тип данных Значение Способ расчёта
1 Количество элементов Count Целое 10 Константа
2 Объём парового пространства Vp Вещественное 50 Переменная
3 Площадь зеркала по пару, м2 Sp Вещественное 16 Переменная
4 Объём конденсатосборника, м3 Vv Вещественное 5 Переменная
5 Площадь зеркала конденсатосборника, м2 Sv Вещественное 5 Переменная
6 Начальный уровень воды, м Level Вещественное 0.5 Переменная
7 Высотная отметка низа трубчатки относительно низа бака, м Zt Вещественное 0.5 Переменная
8 Высота трубчатки, м Ht Вещественное 2 Переменная
9 Поверхность теплопередачи, м2 F Вещественное 3200 Переменная
10 Внешний диаметр трубочки, м d Вещественное 0.018 Константа
11 Толщина стенки трубочки, м ds Вещественное 0.0006 Константа
12 Количество охлаждающих трубочек n Целое 6400 Константа
13 Число ходов по охлаждающей воде Nx Вещественное 1 Переменная
14 Материал трубочек Material Имя файла базы данных 18ХН9Т Константа
15 Коэффициент чистоты охлаждающих трубочек Fc Вещественное 0.85 Переменная
16 Высотная отметка низа бака, м Zk Вещественное -10 Переменная
17 Длина трубки, м L Вещественное 9.4735 Константа
18 Гидравлический диаметр трубчатки, м Dg Вещественное 0.0168 Переменная
19 Высота бака, м Hp Вещественное 3.125 Переменная
20 Высота конденсатосборника Hv Вещественное 1 Переменная
21 Проходное сечение по охлаждающей воде, м2 S Вещественное 1.4186 Переменная

Рисунок 41. Геометрическая модель конденсатора

Рисунок 42. Редактор новых блоков (конденсатор)

Теперь давайте разбираться как инициализировать свойства в субмодели.

initialization

submodel.Dg = submodel.d - 2*submodel.ds;

setpropevalstring(submodel,"Dg",submodel.Dg);

submodel.S = pi*submodel.Dg*submodel.Dg*n/4;

setpropevalstring(submodel,"S",submodel.S);

setpropevalstring(submodel,"L",submodel.F/(pi*submodel.Dg*submodel.n));

end;

Здесь, в блоке инициализации, мы расчитываем гидравлический диаметр трубочек (наружный диаметр минус двойная толщина стенки). Далее прописываем полученное значение в свойство субмодели. После этого вычисляем проходное сечение по охлаждающей воде (произведение площади сечения одной трубочки на количество трубочек) и длину трубочек (площадь поверхности теплообмена делим на длину окружности внутреннего сечения одной трубочки и на количество трубочек).

Заметьте, что можно вычислять свойства как отдельной строкой, так и внутри вызова функции «setpropevalstring()». Смотрите также рисунок 44.

Рисунок 43. Свойства новой субмодели (конденсатора)

Рисунок 44. Редактор параметров субмодели конденсатора (вычисление свойств)

Рисунок 45. Кнопка инициализации расчета

Рисунок 46. Перерасчет свойств субмодели

submodel.Hp = submodel.Vp/submodel.Sp;

setpropevalstring(submodel,"Hp",submodel.Hp);

submodel.Hv = submodel.Vv/submodel.Sv;

setpropevalstring(submodel,"Hv",submodel.Hv);

if submodel.Level > submodel.Hp+submodel.Hv

then submodel.Level = submodel.Hp+submodel.Hv;

if submodel.Zt > submodel.Hp

then submodel.Zt = submodel.Hp;

if (submodel.Zt+submodel.Ht) > submodel.Hp

then submodel.Ht = submodel.Hp-submodel.Zt;

setpropevalstring(submodel,"Zt",submodel.Zt);

setpropevalstring(submodel,"Ht",submodel.Ht);

setpropevalstring(submodel,"Level",submodel.Level);

Вначале мы вычисляем высоты бака по пару и по воде и присваиваем соответствующим свойстам вычисленное значение. Далее проводим проверки:

После проверок, переприсваиваем три проверенных свойства.

sko1 = [0,

submodel.Vv,

submodel.Vv+submodel.Sp*submodel.Zt,

submodel.Vv+submodel.Sp*(submodel.Zt+submodel.Ht),

submodel.Vv+submodel.Vp];

setpropevalstring(Bak,"SKO1","["+sko1+"]");

sko2 = [0,

submodel.Hv,

submodel.Hv+submodel.Zt,

submodel.Hv+(submodel.Zt+submodel.Ht),

submodel.Hv+submodel.Hp];

setpropevalstring(Bak,"SKO2","["+sko2+"]");

sko3=[0, 0, 0, 1, 1];

setpropevalstring(Bak,"SKO3","["+sko3+"]");

sko4=[1, 1, 1, 0, 0];

setpropevalstring(Bak,"SKO4","["+sko4+"]");

tmp = min(submodel.Level,submodel.Hv)*submodel.Sv

+

max(0,submodel.Level-submodel.Hv)*submodel.Sp;

setpropevalstring(Bak,"V1",0.2*tmp);

setpropevalstring(Bak,"V2",0.8*tmp);

setpropevalstring(Bak,"V3",submodel.Vv+submodel.Vp-tmp);

InitObject(Bak);

Здесь в массивах sko1, sko2, sko3 и sko4 мы набираем по точкам числовые значения, из которых код ТРР построит линейно-кусочные зависимости уровня в конденсаторе и относительных площадей теплообмена по воде и пару от заполненного объема конденсатора.

Далее расчитанные массивы заносятся в соответствующие свойства объекта «Bak».

В переменной «tmp» мы расчитываем объём конденсатора, заполненный водой (жидкой фазой) в начальный момент времени, в зависимости от этого расчитываем три объёма конденсатора «V1», «V2», «V3».

Функция «InitObject(Bak)» принудительно инициализирует и обновляет значения свойств объекта «Bak».

После этого можно снова проинициализировать схему и посмотреть на свойства в объекте «Bak»: они должны пересчитаться, см. рисунок 47, поля «SKO1», «SKO2», «SKO3», «SKO4» и «V1», «V2», «V3».

Рисунок 47. Перерасчет свойств объекта «Bak» (компенсатор 3-х объёмный)

Наберите в блоке инициализации следующий текст:

Tube1.Material=Material;

setpropevalstring(Tube1,"Count" ,submodel.Count);

setpropevalstring(Tube1,"Gidr_D" ,"["+Count#submodel.Dg +"]");

setpropevalstring(Tube1,"Sechen" ,"["+Count#submodel.S/2 +"]");

setpropevalstring(Tube1,"Dlina" ,"["+Count#(submodel.L/Count)+"]");

setpropevalstring(Tube1,"Soprot" ,"["+Count#2/Count +"]");

setpropevalstring(Tube1,"InvSopr" ,"["+Count#2/Count +"]");

setpropevalstring(Tube1,"Z" ,"["+Count#0 +"]");

setpropevalstring(Tube1,"X" ,"["+Count#0 +"]");

setpropevalstring(Tube1,"Y" ,"["+Count#0 +"]");

setpropevalstring(Tube1,"Bor" ,"["+Count#0 +"]");

setpropevalstring(Tube1,"Sten" ,"["+Count#(submodel.ds/submodel.Fc) +"]");

setpropevalstring(Tube1,"F" ,"["+Count#(submodel.F/Count/2) +"]");

setpropevalstring(Tube1,"Rz1" ,"["+Count#0 +"]");

setpropevalstring(Tube1,"HeatElements","["+Count#3 +"]");

InitObject(Tube1);

Нажав «Ок» и проинициализировав схему, можно убедиться в том, что в канале «Tube1» заданы все свойства именно так, как мы это запрограммировали только что, см. рисунок 48:

Рисунок 48. Перерасчет свойств объекта «Tube1» (канал общего вида)

Обратите внимание, что свойства канала будут автоматически пересчитываться если мы изменим числовые значения того или иного свойства субмодели.

submodel._G = -(Tube1.G+Tube2.G)*3.6;

submodel._w = -2*Tube1.q[1]/submodel.S;

submodel._Tin = Tube1._Tvh;

submodel._Tou = Tube1._Tvyh;

submodel._dPtr = abs(Tube1._Pvh-Tube1._Pvyh);

submodel._Q = (Tube1._Qto+Tube2._Qto)*4.182e-3;

submodel._Qf = submodel._Q/submodel.F;

submodel._dTou = Bak.Tpar_-Tube1._Tvyh;

submodel._Level= Bak.L;

submodel._Ts = Bak.Tpar_;

submodel._Ps = Bak.P_;

По коду видно, что вычисляется массовый расход охлаждающей воды; скорость охлаждающей воды; входная и выходная температуры охлаждающей воды; потери давления на трубчатке; тепловой поток (пересчёт из ккал в кВт); удельный тепловой поток; разность температуры воды на выходе из трубчатки и температуры пара; уровень в конденсаторе; температура пара и давление в конденсаторе.

Таблица 3.2
Название Имя Тип данных Режим Способ расчёта
1 Расход пара в конденсатор, т/ч _Gsteam Вещественное Выход Переменная
2 Энтальпия пара в конденсаторе, ккал/кг _Hsteam Вещественное Выход Переменная
3 Давление в конденсаторе, ата _Ps Вещественное Выход Переменная
4 Температура в конденсаторе, С _Ts Вещественное Выход Переменная
5 Энтальпия конденсата, ккал/кг _Hs Вещественное Выход Переменная
6 Расход охлаждающей воды, т/ч _G Вещественное Выход Переменная
7 Гидравл. сопротивление по охл. воде, кгс/см2 _dPtr Вещественное Выход Переменная
8 Скорость охлаждающей воды в трубочках, м/с _w Вещественное Выход Переменная
9 Температура охлаждающей воды на входе, С _Tin Вещественное Выход Переменная
10 Температура охлаждающей воды на выходе, С _Tou Вещественное Выход Переменная
11 Средний коэффициент теплопередачи, Вт/м2*К _alfa Вещественное Выход Переменная
12 Температурный напор на вых. конденсатора, С _dTou Вещественное Выход Переменная
13 Средний логарифм. температурный напор, С _LMTD Вещественное Выход Переменная
14 Общая тепловая нагрузка, МВт _Q Вещественное Выход Переменная
15 Удельная тепловая нагрузка, кВт/м2 _Qf Вещественное Выход Переменная
16 Уровень воды, м _Level Вещественное Выход Переменная

Рисунок 49. Параметры субмодели конденсатора

Рисунок 50. Вывод заданных параметров субмодели конденсатора

Такием образом, мы создали субмодель конденсатора, в которой для настройки его свойств необязательно заходить внутрь, а можно (нужно) задавать свойства с верхнего уровня, и они будут по написанному алгоритму пересчитываться и передаваться соответствующим элементам внутри конденсатора.

В дальнейшем, например когда модель конденсатора доработается, станет более универсальной, отладится полностью и обкатается, можно такую субмодель встроить в палитру элементов – и использовать ее многократно во многих проектах как отдельный блок.

3.2.5 Вывод параметров на схемное окно

Давайте выведем на схемное окно те параметры, которые нам будут интересны в процессе отладки модели конденсатора.

Рисунок 51. Вывод параметров конденсатора P, T, L на схемное окно

Рисунок 52. Вывод параметров модели на схемное окно

3.2.6 Свойства граничных условий

Расход: «Gp/3.6»

Энтальпия: «495»

Начальная энтальпия: «Self.

Проходное сечение, гидравлический диаметр, толщина стенки, длина участка: «1» (эти свойства на данном этапе не важны, от граничного условия требуется подача воды с заданным расходом и энтальпией).

Расход: «-Gp/3.6» (важен минус, т.к. здесь расход направлен в граничное условие)

Энтальпия: «32»

Проходное сечение, гидравлический диаметр, толщина стенки, длина участка: «1»

Начальная энтальпия: «Self..

Высотная отметка: «-15».

Расход: «-Gov1/3.6» и «-Gov2/3.6», соответственно.

Энтальпия: «Tov»

Начальная энтальпия: «Self.

Давление: «1»

Энтальпия: «Tov»

3.2.7 Свойства трубопроводов конденсатора

Всего на схеме 4 канала общего вида – подвод пара к конденсатору, слив конденсата и по одному каналу на каждый теплообменник. Для каналов теплообменников (внутри модели конденсатора) параметры мы задали программным способом. Теперь задаём свойства в каналах снаружи конденсатора:

Канал «Ch_K_in»

Гидравлический диаметр: «2.0»

Проходное сечение: «3.1415»

Прямое местное сопротивление: «0.1»

Обратное местное сопротивление: «0.1»

Поверхность теплообмена: «31.4159»

Длина: «5.0»

Толщина стенки: «0.01»

Канал «Ch_K_out»

Гидравлический диаметр: «1.0»

Проходное сечение: «1.0»

Прямое местное сопротивление: «1.0»

Обратное местное сопротивление: «1.0»

3.2.8 Свойства трёхобъемного бака ТРР и проекта в целом

Количество вертикальных труб: «.

Зафиксировать индекс: «Да».

Рисунок 53. Свойства трёхобъёмного бака субмодели конденсатора

Верхнее отверстие конденсатора (подача пара)

Начальное давление: «0.036».

Начальная энтальпия: «532.28».

Гидравлический диаметр: «1».

Проходное сечение: «1».

Длина участка: «1».

Поверхность теплообмена: «3.728».

Высотная отметка: «Zk+Hv+Hp».

Материал: «Ст20».

Номер объёма: «Паровой».

Нижнее отверстие конденсатора (слив конденсата)

Начальное давление: «0.036».

Начальная энтальпия: «27.7».

Гидравлический диаметр: «2.0».

Проходное сечение: «18.84».

Длина участка: «0.1».

Толщина стенки: «0.02».

Поверхность теплообмена: «0.628».

Высотная отметка: «Zk».

Материал: «Ст20».

Номер объёма: «Нижний водяной».

Имя проекта ТРР: «kp_3200».

Шаг интегрирования уравнений энергии: «0.125/4».

Шаг интегрирования уравнений движения: «0.04/16».

Для проверки и сравнения см. рисунок 54.

Рисунок 54. Параметры расчета субмодели конденсатора

3.2.9 Номинальное состояние

Теперь, если вы всё сделали верно, то при запуске модели на расчет, через 150-300 секунд должно установиться стационарное состояние модели, аналогично приведенному (рисунок 55). Для отладки и проверки устойчивости модели, можно воспользоваться кнопками, построить дополнительно графики интересующих вас параметров и в процессе расчета изменять граничные условия, наблюдая за изменением состояния конденсатора.

Рисунок 55. Стационарное состояние модели конденсатора

Итак, мы создали модель конденсатора турбины, разместили её внутрь субмодели и добились стационарного стабильного состояния, соответствующего номинальным параметрам конденсатора (по давлению в конденсаторе, температуре конденсата и гидравлическому сопротивлению). Далее нам предстоит создать модели подогревателей ПН-100, ПВ-280-1 и ПВ-280, которые во многом сходны как между собой, так и с моделью конденсатора.