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

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


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 пользователей

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




  • Сообщения

    • david1920
      нет время нет заниматься да и информации новой нет Это я на других станках делал
    • gudstartup
      @david1920 имеется ввиду платы на системах с сертификацией опций фалом oprminf старые в расчет не принимаются вы свой 18i восстановили?
    • gudstartup
      очень даже спрашивают как обязательную информацию для проверки вашей компании налоговый идентификатор должен быть указан. на myfanuc не спрашивают а вот на портале к сожалению просто так не зарегаться. 
    • david1920
      На 0I-TC mate менял плату управления приводами На 18i-TB менял для диагностики платы процессоров (один был от Spinner другой простой) процы были одинаковые Всё работает
    • brigval
      Браком 1.04В версии 1.04Добавлено: Автоуменьшение высоты шрифта многострочного наименования в ОН чертежа.Добавлено: Переименование поверхностей, баз, размеров в порядке их следования на чертеже.Добавлено: Переименование изображений по ГОСТ: сначала виды, затем разрезы, сечения, выносные элементы.Добавлено: Выравнивание неассоциативных видов.Добавлено: Ручной ввод шага и угла наклона штриховки.Добавлено: Перемещаются в макроэлемент компоненты, исключаемые из спецификации.Добавлено: Выбор количества значащих цифр в значении площади поверхности детали для вставки в ТТ.Добавлено: Возможность не авторазмещать ТТ перед конвертацией чертежа в PDF.Добавлено: Добавлены кнопки «Выделить все включенные в расчет» и Выделить все исключенные из расчета».Добавлено: Версия КОМПАС-3D Home показывается в программе со словом Home.Добавлено: Улучшен алгоритм считывания и вставки ТТ чертежа.Добавлено: При конвертации чертежа в PDF удаляется старый файл с таким же обозначением в начале имени, как обозначение в начале имени нового файла.Добавлено: Улучшено считывание номеров позиций из 3D-модели сборки.Исправлено: Иногда скрытые и потом показанные объекты чертежа отображались не серым цветом.Исправлено: Иногда после ручного заполнения графы «Масса» ОН чертежа в окне программы масса могла отображаться не правильно.Исправлено: В некоторых случаях из ОН чертежа могла не считываться литера.Исправлено: В некоторых окнах программы неправильно показывался заголовок окна программы.Исправлено: Другие замеченные мелкие ошибки и неточности кода.Скачать
    • boomeeeer
      Не помню чтобы у меня такое спрашивали при регистрации.
    • Snake 60
      @eljer0n  Откройте макрос SaveDRW.swp редактором VBA Найдите вот эти строки: Поменяйте выделенную цифру на нужную вам 3 или 4 - это количество символов которое останется от имени конфигурации. PS При сохранении в PDF тоже ругается на неправильное название чертежа, т.к. тоже обрезает название конфигурации до двух знаков, там тоже надо править при желании...
    • eljer0n
      @malvi.dp в общем порядок следующий (на каждое исполнение свой чертеж и позиция в спецификации):   Для исполнения с 2мя знаками. 1. Есть деталь с именем формата ХХ-01.01-01 (последнее -01 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации (как у вас на картинке). Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с корректным именем. 5. В спецификации сборки все отображается корректно.     Для исполнения с 3мя знаками. 1. Есть деталь с именем формата ХХ-01.01-011 (последнее -011 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации. Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с некорректным именем, а именно - с обрезанным до двух знаков исполнением (-01). 5. В спецификации сборки шифр отображается (внезапно! может какой глюк был: у солида или у меня ) корректно, как и у вас на рисунке.     Выходит, загвоздка все-таки только в сохранялке чертежа.
    • gudstartup
      да информация о решенной проблеме очень важна так что будем ждать хороших новостей!
    • mrVladimir
      @gudstartup Спасибо Вам за помощь. Теперь дело в приобретении платы. Как что-то получится (сперва приобрести, потом поставить) обязательно отпишусь.
×
×
  • Создать...