Каскадное управление на базе ПЛК, Как реализовать каскадное управление котлами с помощью ПЛК (ОВЕН) |
|
|
|
17.9.2013, 13:32
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Всем привет. Имеется 6 котлов, поддерживающих температуру в смесителе. Пишется для этого программа для ПЛК Овен на языке ST. Управляются котлы через выход 0...10 библиотечного ПИДа... Не могу написать алгоритм кодом. Одна из идей: отслеживать время работы каждого котла и при выходе с пида более 8-ми Вольт подключать второй котел, отработавший менее всех остальных. И так же остальные котлы. При достижении температуры котлы отключаются по одному, начиная с максимально долгоработающего... Не откажусь даже от примитивных примеров на базе 3-х объектов. может какие нибудь библиотечные блоки помогут, я пока не в курсе...
|
|
|
|
|
 |
Ответов
(1 - 27)
|
17.9.2013, 15:49
|
Группа: Участники форума
Сообщений: 830
Регистрация: 27.2.2008
Пользователь №: 16012

|
На форуме Сегнетикс есть готовые и есть обсуждения алгоритмов каскадирования и ротации. FBD легко читается. По крайней мере почерпнете какие могут быть подводные камни.
|
|
|
|
|
18.9.2013, 5:43
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Спасибо, гляну.
|
|
|
|
|
18.9.2013, 6:41
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
У Овен свой хороший форум. Вот пример с него. (не мой, "валенка")
Line_Pump_____________.rar ( 4,48 килобайт )
Кол-во скачиваний: 184Программ в ST.
|
|
|
|
|
18.9.2013, 6:49
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
У меня есть свой алгоритм, но в ладере, для Unitronics.
|
|
|
|
|
18.9.2013, 11:06
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(serge197a @ 18.9.2013, 9:41)  У Овен свой хороший форум. Вот пример с него. (не мой, "валенка")
Line_Pump_____________.rar ( 4,48 килобайт )
Кол-во скачиваний: 184Программ в ST. немного не то... у него линия включается вручную и просто подбирается насос. Или я просто не допер как этот пример преобразовать под мой случай. Какая ситуация у меня: 6 котлов, каждый из которых характеризуется четырьмя свойствами: 1) Подключен или нет; 2) Работает в данный момент или нет; 3) Ошибка есть или нет; 4) Время работы. Пока что один из вариантов, который у меня в голове - это записать все эти состояния в массив 4 на 6 и, каким то образом, искать в массиве котел с параметрами: 1, 0, 0, мин. время (см. свойства выше)... Для определения минимального времени есть такая мини прога, которая может подойти (см. вложение)
Прикрепленные файлы
12.zip ( 7,3 килобайт )
Кол-во скачиваний: 51
|
|
|
|
|
18.9.2013, 11:18
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
Скачайте ладер для ОПЛК JAZZ Unitronics. Он бесплатный. Я сброшу кусок программы для 3-х ступенчатого нагревателя. Посмотрите алгоритм. У овена я такое не писал, не было нужды. у валенка показан принцип выбора, а условие можете ставить, как угодно. В моей программе условия выбора по наработке то же нет. Это сами дописывайте. Я бы построил структуру(номер котла, наработка, состояние) и перемещал в нем очередь котлов по наработке, со сдвигом, после выключения.
Сообщение отредактировал serge197a - 18.9.2013, 11:22
|
|
|
|
|
18.9.2013, 11:24
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Скачал какой-то, U90, давайте попробуем открыть Цитата Я бы построил структуру(номер котла, наработка, состояние) и перемещал в нем очередь котлов по наработке, со сдвигом, после выключения. Так как я новичок в программировании, для меня это не совсем понятно)
|
|
|
|
|
18.9.2013, 11:32
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
программу посмотрел, у меня несколько другой подход. для наработки использовал бы RTC для каждого котла. Так- как математика со временем иногда приводит к неожиданным результатам. Ну и по выключению, заносил-бы в массив значения. Только боюсь, что при круглосуточной работе первый котел будет молотить постоянно. Может лучше ротацию еще по каким условиям делать. Но лучше, чтоб это делал оператор при обслуживании.
|
|
|
|
|
18.9.2013, 11:36
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(serge197a @ 18.9.2013, 14:32)  программу посмотрел, у меня несколько другой подход. для наработки использовал бы RTC для каждого котла. Так- как математика со временем иногда приводит к неожиданным результатам. Ну и по выключению, заносил-бы в массив значения. Только боюсь, что при круглосуточной работе первый котел будет молотить постоянно. Может лучше ротацию еще по каким условиям делать. Но лучше, чтоб это делал оператор при обслуживании. оператора нет, котельная частного дома. В приложении - используемый код для подсчета времени наработки
Сообщение отредактировал vlad_45 - 18.9.2013, 11:38
Прикрепленные файлы
RTC.txt ( 1,89 килобайт )
Кол-во скачиваний: 57
|
|
|
|
|
18.9.2013, 11:49
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
Цитата(vlad_45 @ 18.9.2013, 12:36)  оператора нет, котельная частного дома. кто-то ведь будет обслуживать. Приходить и проверять раз в месяц или как-то еще..http://forum.abok.ru/uploads/style_images/1/folder_attach_images/attach_add.png так время считать не будет. берите функцию RTC. припуске загружайте на вход время остановаиз ретайн переменной. При стопе записывайте время на выходе из функции в ретайн переменную.
Прикрепленные файлы
3.rar ( 78,22 килобайт )
Кол-во скачиваний: 38
|
|
|
|
|
18.9.2013, 11:52
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(serge197a @ 18.9.2013, 14:49)  кто-то ведь будет обслуживать. Приходить и проверять раз в месяц или как-то еще..http://forum.abok.ru/uploads/style_images/1/folder_attach_images/attach_add.png
так время считать не будет. берите функцию RTC. припуске загружайте на вход время остановаиз ретайн переменной. При стопе записывайте время на выходе из функции в ретайн переменную. При эмуляции счет времени идет в переменной Текущего времени, после остановки котла - текущее время прибавляется к общему времени. Ну про ретэйн тоже почитаю
|
|
|
|
|
18.9.2013, 11:53
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
так считать время не будет. При пуске загружайтезначение из ретайн переменной на вход функции RTC При Стоп записывайте значение на выходе функции в ретайн переменную.
|
|
|
|
|
18.9.2013, 11:55
|
Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815

|
Реализовал такой алгоритм для до 6 котлов максимум в SmLogix (Segnetics). Работает следующим образом: 1) Определяется, сколько котлов в данный момент нужно - на основании выходной мощности регулятора. Если 100%, то все котлы, если 50%, то половина и т.д. По мере изменения выходной мощности, меняется и число работающих котлов. 2) Выполняется сравнение количества работающих в данный момент котлов с их необходимым количеством. 3) Далее на основании информации о готовности котлов, состоянии (работает/не работает), времени наработки, выбирается котел, который будет включаться/отключаться в данный момент. Включаться будет котел с наименьшей наработкой. 4) После формирования команды на запуск котла делается выдержка для получения обратной связи с котла, что котел успешно включился. Если котел не запустился, то процесс выбора повторяется снова - из тех котлов, что не находятся в работе или в аварии. В общих чертах как-то так...
|
|
|
|
|
18.9.2013, 12:00
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(beastmaster @ 18.9.2013, 14:55)  Реализовал такой алгоритм для до 6 котлов максимум в SmLogix (Segnetics). Работает следующим образом: 1) Определяется, сколько котлов в данный момент нужно - на основании выходной мощности регулятора. Если 100%, то все котлы, если 50%, то половина и т.д. По мере изменения выходной мощности, меняется и число работающих котлов. 2) Выполняется сравнение количества работающих в данный момент котлов с их необходимым количеством. 3) Далее на основании информации о готовности котлов, состоянии (работает/не работает), времени наработки, выбирается котел, который будет включаться/отключаться в данный момент. Включаться будет котел с наименьшей наработкой. 4) После формирования команды на запуск котла делается выдержка для получения обратной связи с котла, что котел успешно включился. Если котел не запустился, то процесс выбора повторяется снова - из тех котлов, что не находятся в работе или в аварии. В общих чертах как-то так... Именно так у меня и должно быть. Можно взглянуть на этот проект?
|
|
|
|
|
18.9.2013, 13:34
|
Группа: Участники форума
Сообщений: 689
Регистрация: 26.12.2012
Пользователь №: 175764

|
Вам, чтоб работало нужно включать по минимальной наработке, а выключать по максимальной. Поиск включаемого- выключаемого в структуре легко организуется в цикле FOR. (см. пример Валенка) Время наработки, состояние (авария) и состояние (работа) заносите в структуру и по команде от ПИД, + аварийные значения+ задержки производить выбор. Включать лучше поочередно, через 1-2 минуту, а не по значению ПИД 100% сразу все. Иначе при будет вылетать в перегрев.
|
|
|
|
|
19.9.2013, 0:33
|
Группа: Участники форума
Сообщений: 171
Регистрация: 10.5.2008
Пользователь №: 18574

|
"Реализовал такой алгоритм для до 6 котлов максимум в SmLogix (Segnetics). Работает следующим образом: 1) Определяется, сколько котлов в данный момент нужно - на основании выходной мощности регулятора. Если 100%, то все котлы, если 50%, то половина и т.д. По мере изменения выходной мощности, меняется и число работающих котлов.
...подход в корне не верный, надо брать не выходное значение регулятора, а дельту D значения этого регулятора за какое-то время, D>Dуст для включения - запускаем мин по наработке(общей? за сутки?) котел, D<Dуст для отключ - останавливаем макс по наработке (общей? за сутки?) котел, типа серво-функции...
2) Выполняется сравнение количества работающих в данный момент котлов с их необходимым количеством.
...при таком алгоритме это не надо, регулятор сам определит нужное количество для поддержания уставки...
|
|
|
|
|
19.9.2013, 5:51
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
В данный момент задача немного изменилась. Вместо ПИДа в котел загоняется Туст, а мощность котел сам подбирает, в зависимости от разности Ттек и Туст. Остается задача выбора котла для подключения и отключения. И, к примеру, при разнице Туст-Ттек 5-10 градусов - включаем один котел, 10-20 градусов - два, и т.д. Так конечно чуть проще, но вся предыдущая наработка у меня не годится...(( Сортировку по времени наработки реализовал пока в цикле case, в котором мы по порядку проходим по массиву с временами наработки. Думаю если в каждый шаг этого перебора внедрить условия наличия котла и вкл/выкл, то получится нечто подобное с предложенными структурами. Если не получится, буду пробовать структуру.
|
|
|
|
|
19.9.2013, 6:28
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(serge197a @ 18.9.2013, 16:34)  Вам, чтоб работало нужно включать по минимальной наработке, а выключать по максимальной. Поиск включаемого- выключаемого в структуре легко организуется в цикле FOR. (см. пример Валенка) Время наработки, состояние (авария) и состояние (работа) заносите в структуру и по команде от ПИД, + аварийные значения+ задержки производить выбор. Включать лучше поочередно, через 1-2 минуту, а не по значению ПИД 100% сразу все. Иначе при будет вылетать в перегрев. Вот логику то я понял... Только теперь вместо команды ПИДа у меня Результат сравнения уставки и подачи - попадание в определенный диапазон. От этого определяем количество необходимых котлов. Только вот реализовать у меня это не получается. Допустим Выбор котлов по наработке у меня работает, допустим я использую алгоритм Валенка для отсеивания включенных или выведенных котлов... А вот как подключить еще один котел используя цикл для выбора или вывести котел с макс наработкой, если мы попали в другой диапазон, это я уже не могу понять как сделать.
|
|
|
|
|
19.9.2013, 6:29
|
Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815

|
А когда Туст=Ттек не работает ни одного котла? Или я что-то не понял? Вы можете с того же ПИДа давать котлу задание в виде температуры, пропорционально заданию ПИДа для данного котла. Например, у Вас два котла, температура котлов может меняться в диапазоне 65-95 градусов, задание ПИД 50%, следовательно работает 1 котел на 95 градусов, задание ПИД 75%, тогда первый котел работает на 95 градусов, а второй на 65+(95-65)/2=80 градусов.
|
|
|
|
|
19.9.2013, 7:03
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Действительно, когда Туст=Ттек, то котлы выключаются (либо работает один котел на минимуме, это пока не принципиально). Пока не будем усложнять ПИДами, мне вышепредложенный вариант все равно не реализовать так просто. Я вот не могу пока реализовать включение необходимого кол-ва котлов при попадании в определенный диапазон разности уставки и подачи. Прикрепил часть кода, над которой работаю, чтоб нагляднее было. Там пока много лишнего, на которое не стоит обращать внимания...
Сообщение отредактировал vlad_45 - 19.9.2013, 7:19
|
|
|
|
|
19.9.2013, 7:19
|
Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815

|
Если у вас достигнута уставка температуры, то это не значит, что для её поддержания не нужны котлы. То есть тепло, забираемое системой отопления, и тепло, вырабатываемое котлами, в данной точке уравновешены. Поэтому я не представляю, как можно с помощью такого регулирования по рассогласованию, когда достижение уставки означает отключение котлов, поддерживать нужную температуру. При одинаковой уставке, но при разной наружной температуре, в работе могут находиться разное количество котлов, т.к. потребление тепла системой тоже будет разным. Я бы на Вашем месте не занимался "изобретением велосипеда", а применил бы уже готовое решение для управления каскадом котлов на базе того же Siemens RMK770-4. Как раз возможность управления до 6 котлов там есть, причем с совершенно любыми горелками. А вашему контроллеру оставил бы вспомогательные функции например по управлению группами насосов, ГВС и т.д.
Сообщение отредактировал beastmaster - 19.9.2013, 7:20
|
|
|
|
|
19.9.2013, 7:21
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Управление контурами отопления уже реализовано на этом же контроллере. Плюсом это не моя идея реализовать управление котлами, а задача организации... И в частности моя задача - написать программу для управления. Предлагаю пока условиться, что котлы отключаются при перегреве на 5 градусов, позже я думаю это можно поправить на другое действие. Пока для меня главная задача - подключать и отключать котлы при разных температурах
Сообщение отредактировал vlad_45 - 19.9.2013, 7:24
|
|
|
|
|
19.9.2013, 7:25
|
Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815

|
Тогда лучше почитайте документацию на этот контроллер, там есть описания алгоритмов его работы. Может, это прояснит Вам ситуацию, и поможет написать программу.
|
|
|
|
|
19.9.2013, 7:28
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Обязательно ознакомлюсь после реализации включения/выключения котлов
|
|
|
|
|
23.9.2013, 10:21
|
дважды крещёный пионер
Группа: Участники форума
Сообщений: 4629
Регистрация: 13.7.2008
Из: г.Новосибирск
Пользователь №: 20580

|
получается, что Вы котлы коммутируете, как равные по мощности ступени нагревателя? посмотрите у Овена - там куча контроллеров для электрических печек и сушилок на этом принципе работающих...
|
|
|
|
|
23.9.2013, 10:29
|
Группа: Участники форума
Сообщений: 29
Регистрация: 17.9.2013
Пользователь №: 205885

|
Цитата(Usach @ 23.9.2013, 13:21)  получается, что Вы котлы коммутируете, как равные по мощности ступени нагревателя? посмотрите у Овена - там куча контроллеров для электрических печек и сушилок на этом принципе работающих... Да, только эти котлы имеют еще и аналоговое регулирование... И контроллеры температуры не рассматриваются, так как программа пишется своя для ПЛК, как раз таки ОВЕН. На данной стадии, правда, мы этот аналоговый вход используем для задания температуры котла, мощность он сам подбирать будет.
|
|
|
|
|
23.9.2013, 11:43
|
сам себе Sapiens
Группа: Участники форума
Сообщений: 11390
Регистрация: 21.5.2005
Из: г. Владимир
Пользователь №: 797

|
Цитата(Usach @ 23.9.2013, 11:21)  получается, что Вы котлы коммутируете, как равные по мощности ступени нагревателя? посмотрите у Овена - там куча контроллеров для электрических печек и сушилок на этом принципе работающих... Например?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума
|