Перейти к публикации

Создание подпрограммы для электронагрева


wapserf

Рекомендованные сообщения

Всем здравствуйте! Имеется печь сопротивления, требуется написать подпрограмму для цикличного управления нагревом. На нагревательных элементах задается источник энергии через subdomain при помощи energy source. Нагрев идет с начальной температуры 24 С, необходимо, чтобы при достижении температуры нагревателей 950 С происходило отключение источника энергии, а после снижения температуры до 900 С источник энергии включался вновь. И так множество циклов подряд. Просмотрев хелп нашел, что при написании программы в expression воспользоваться связкой операторов if и then нет возможности, вариант использования функции step, по моему, не совсем подходит для данной задачи. Буду благодарен вашим советам.

Ссылка на сообщение
Поделиться на других сайтах


В CFX для этого предлагается использовать пользовательскую функцию на фортране. Очень похожий пример есть в хелпе в туторале 19. Air Conditioning Simulation.

Единственное что, код для пользовательской функции, идущей с туториалом, не работает в многопроцессорном режиме. А когда я попробовал адаптировать его под свою задачу, работал через раз -- это было особенно удивительно. Таки нужно разбираться с фортраном под cfx.

В других кодах бывают специальные инструменты для задания такого рода контроллеров. Чаще всего называются thermal controller. В SW Simulation такое есть :doh:

 

У меня почти такая же задача, как у Вас. Только я пока не ограничен во времени на ее решение. Так что будем держать связь)

Ссылка на сообщение
Поделиться на других сайтах

Коллеги, наверное не совсем по Вашей теме, но вдруг поможет. Смотрите файлик Time operations in CFX.

С уважением, Артём

 

Time operations in CFX.doc

Ссылка на сообщение
Поделиться на других сайтах

Неужели реализация тригера это такая проблема ? дополнительная переменная отображающая состояние тригера - условие по температуре, условие по состоянию тригера и при выполнению условий менять состояние тригера.

Ссылка на сообщение
Поделиться на других сайтах
при выполнению условий менять состояние тригера

Для этого триггер должен знать, какое у него было состояние во время предыдущей итерации. Как это реализовать через CCL?

Ссылка на сообщение
Поделиться на других сайтах

начальное температурное состояние скажем 800 градусов, начальное состояение тригера 0. выключение мощности происходит при температуре выше 900 и состоянием тригера равным 0, включение при температуре больше 850 и состоянием тригера равным 1. Выключили мощность, переменной тригера присвоили 1, включили, переменной тригера присвоили 0. По сути нужно реализовать добавочно 4 условия - поддержание неизменного значения переменной тригера в диапазоне 850-900 градусов и два условия изменения состояния переменной тригера за пределом диапазона 850-900 градусов

Ссылка на сообщение
Поделиться на других сайтах

Тогда переменная триггера должна быть не expression, а variable.. Т.к. все экспершены считаются на одной итерации.

Посмотрел doc от @BadArtem'a -- попробую сделать.

Ссылка на сообщение
Поделиться на других сайтах

Начал делать по примеру Time operations in CFX. Создал Additional Variables:

LIBRARY:

&replace ADDITIONAL VARIABLE: energy

Option = Definition

Tensor Type = SCALAR

Units = [W m^-3]

Update Loop = TRANS_LOOP

Variable Type = Unspecified

END

END

 

Во вкладке домена Solid models появился пункт energy, с опцией Algebraric equation, для введения заданной переменной.

В Expressions задал переменные:

Tmax = 950 [C]

Tmin = 800 [C]

Heat = 12286219 [W m^-3]

Heat off =  0 [W m^-3]

 

Пока что пытаюсь разобраться, как задать условия для включения и выключения.

Ссылка на сообщение
Поделиться на других сайтах

По идее тут должна быть конструкция вида:

 

if areaAve(Temperature)@Trub > Tmax

then energy = Heat off

 

if areaAve(Temperature)@Trub < Tmin

then energy = Heat

 

Вот только как это сделать в CCL.

Изменено пользователем wapserf
Ссылка на сообщение
Поделиться на других сайтах

Через функкию step. Посмотрите, что она делает. Может еще понадобиться округление, т.к. step (0) = 0.5, вроде как.

Не нужно heat и heat off. Будет чтотт вроде:

 

Heat = if( areaAve(Temperature)@Trub < Tmin, 1000 [W m^-2], 0 [W m^-2] )

Ссылка на сообщение
Поделиться на других сайтах

Через функцию step. 

Сделал функцию вида if (volumeAve(Temperature)@Trub < Tmin, 12286219 [W m^-3], 0 [W m^-3]). Все получилось, включение и выключение срабатывает. Далее планирую добавить дополнительное условие включения и выключения в зависимости от температуры расплавленного металла (требуемый диапазон значений температур в расплаве от 700 до 750 С) Для этого, как я понимаю, уже придется использовать step?

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

Посмотрел doc от BadArtem'a -- попробую сделать.

Прошла куча времени и мне тоже понадобилось термостатирование в CFX..

И.. тадаам!!

Все работает через CEL. Огромное спасибо @dronm, @BadArtem и edr.no ))

 

Как-нибудь позже выложу причесанный пример. Пока вот графики похвастаться:

bfdd442d1aaf98277f6f5af1d5e00142.png

d4bbf154700cb3e530a2e10ae1c1b944.png

4db9ac42d3f2dddd58abec6ccc63a743.png

Ссылка на сообщение
Поделиться на других сайтах

Итак, пример.. который раньше так хотелось найти на cfd-online или eng-tips, но пришлось делать самому)


Стальной брусок квадратного сечения нагреваем с одного торца. На других гранях стоит несколько нереалистичный коэф. конвекции 45 W/m2*K. T окруж. среды = 20 С.
Нужно, включая/выключая нагрев, в точке , находящейся на 50 мм от нагреваемой стороны, получить температуру, заданную графиком:
 
057b7d754f0594a088eedd1cbaa419ac.png
 
В итоге получаем такое (синий график):
 
1b61cd258856febcf9d72c5e267f9f77.png
Сделано по методике, которую расписал @dronm. Особенность: созданную дополнительную переменную PosTrig (типа trigger position) нужно инициализировать, а то из-за рекурсивных ссылок она ссылается сама на себя. Поэтому сделано две конфигурации, первая считает первую минуту расчета и инициализирует значение для этой переменной.
 
В архиве ccl, сетка и layout для CFX-Solver manager для удобства просмотров мониторов во время расчета.
Можно сразу запускать)

CFX thermal stat.rar
 
 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • ID_Hacker
      Не упускаю. Потому что сообщение 21612 с причиной 1 точно описывает что разрешение работы сброшено. Последующий аварийный останов от привода и ошибки контроля контура это подтверждают.   Дефекты энкодера, кабеля, разъёма приведут к своим ошибкам которых не наблюдается. Как и пропадание готовности привода приведёт к своим ошибкам.   В любом случае необходимо определять формирование DBX2.1.
    • Нурлан
      Здравствуйте.   Если были бы у нас поблизости компетентные люди разбирающиеся в током вопросе . Которые смогли бы помочь и правильно объяснить как с этой проблемой бороться, но увы таковых нет.  
    • Bot
      Об авторах: Мария Золотова — BIM-специалист строительной компании, по первому образованию — театральный режиссер, Софья Минина — BIM-менеджер, по второму образованию — психолог, Владимир Талапов — BIM-эксперт, всего одно образование — математик. См. также BIM и Театр: искусство возможного. Часть 1, BIM и Театр: искусство возможного. Часть 2, BIM и Театр: искусство возможного. Часть 3. Информационное моделирование зданий и сооружений, как творческий процесс, имеет много общего с не менее творческим процессом постановки театральных спектаклей. Поэтому изучение театрального опыта, его наработанных взаимосвязей участников и методик их взаимодействия может существенно помочь становлению и использованию BIM в строительной отрасли. В этой части речь пойдет о тех, кто вроде бы непосредственно не участвует в постановке спектакля или информационном моделировании, но от кого эти процессы существенно зависят. «Кто платит, тот и заказывает музыку» Итак, кто же [...] View the full article
    • Guhl
      Понятия не имею
    • Александр 36
      А где можно скачать русифицированную версию
    • BASH_HD
      В Москве) но вообще по мнению японцев станок в Германии) но это не точно...   Аукцон и BAFA знали куда продали.
    • Alexandr97
    • Andrey_kzn
      Логика работы у них та же самая. И интерфейсные сигналы те же. Вы упускаете из виду сигнал готовность привода. Это DB3x.DBX93.5. Выстраивайте логическую цепь событий. Формирование сигнала DDX2.1 может быть завязано на готовность привода.  Не будет готовности привода, можете сколько угодно выставлять DBX2.1, ось никуда не поедет. А готовность может пропадать из-за дефекта энкодера, кабеля, разъёмов и т.п.  Надо сделать трассировку всех этих приводных сигналов,  заодно посмотрите также DBX93.7 и DBX21.7.  И понять, что какой сигнал пропадает первым.
    • Guhl
      Опять я забыл про это меню. Оно в корне лежит, а я туплю Спасибо  
    • gudstartup
      @Guhl все это настраивается здесь
×
×
  • Создать...