Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2Vtzqx6kV7S
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Стандарт НП «АВОК» 7.11-2024
«Рекомендации по проектированию инженерных систем
дошкольных образовательных организаций»

АВОК в соц. сетях
ИНН: 7714824045 | erid: 2VtzqwzKQiU
 
Добавить ответ в эту темуОткрыть тему
> Каскадное управление на базе ПЛК, Как реализовать каскадное управление котлами с помощью ПЛК (ОВЕН)
vlad_45
сообщение 17.9.2013, 13:32
Сообщение #1





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



Всем привет.
Имеется 6 котлов, поддерживающих температуру в смесителе. Пишется для этого программа для ПЛК Овен на языке ST. Управляются котлы через выход 0...10 библиотечного ПИДа... Не могу написать алгоритм кодом.
Одна из идей: отслеживать время работы каждого котла и при выходе с пида более 8-ми Вольт подключать второй котел, отработавший менее всех остальных. И так же остальные котлы. При достижении температуры котлы отключаются по одному, начиная с максимально долгоработающего...
Не откажусь даже от примитивных примеров на базе 3-х объектов. может какие нибудь библиотечные блоки помогут, я пока не в курсе...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Chabol
сообщение 17.9.2013, 15:49
Сообщение #2





Группа: Участники форума
Сообщений: 830
Регистрация: 27.2.2008
Пользователь №: 16012



На форуме Сегнетикс есть готовые и есть обсуждения алгоритмов каскадирования и ротации.
FBD легко читается.
По крайней мере почерпнете какие могут быть подводные камни.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 18.9.2013, 5:43
Сообщение #3





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



Спасибо, гляну.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 6:41
Сообщение #4





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



У Овен свой хороший форум.
Вот пример с него.
(не мой, "валенка")Прикрепленный файл  Line_Pump_____________.rar ( 4,48 килобайт ) Кол-во скачиваний: 184

Программ в ST.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 6:49
Сообщение #5





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



У меня есть свой алгоритм, но в ладере, для Unitronics.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 18.9.2013, 11:06
Сообщение #6





Группа: Участники форума
Сообщений: 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
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 11:18
Сообщение #7





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



Скачайте ладер для ОПЛК JAZZ Unitronics.
Он бесплатный. Я сброшу кусок программы для 3-х ступенчатого нагревателя.
Посмотрите алгоритм.
У овена я такое не писал, не было нужды.
у валенка показан принцип выбора, а условие можете ставить, как угодно.
В моей программе условия выбора по наработке то же нет.
Это сами дописывайте.
Я бы построил структуру(номер котла, наработка, состояние) и перемещал в нем очередь котлов по наработке, со сдвигом, после выключения.

Сообщение отредактировал serge197a - 18.9.2013, 11:22
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 18.9.2013, 11:24
Сообщение #8





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



Скачал какой-то, U90, давайте попробуем открыть

Цитата
Я бы построил структуру(номер котла, наработка, состояние) и перемещал в нем очередь котлов по наработке, со сдвигом, после выключения.

Так как я новичок в программировании, для меня это не совсем понятно)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 11:32
Сообщение #9





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



программу посмотрел, у меня несколько другой подход.
для наработки использовал бы RTC для каждого котла. Так- как математика со временем иногда приводит к неожиданным результатам.
Ну и по выключению, заносил-бы в массив значения.
Только боюсь, что при круглосуточной работе первый котел будет молотить постоянно.
Может лучше ротацию еще по каким условиям делать.
Но лучше, чтоб это делал оператор при обслуживании.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 18.9.2013, 11:36
Сообщение #10





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



Цитата(serge197a @ 18.9.2013, 14:32) *
программу посмотрел, у меня несколько другой подход.
для наработки использовал бы RTC для каждого котла. Так- как математика со временем иногда приводит к неожиданным результатам.
Ну и по выключению, заносил-бы в массив значения.
Только боюсь, что при круглосуточной работе первый котел будет молотить постоянно.
Может лучше ротацию еще по каким условиям делать.
Но лучше, чтоб это делал оператор при обслуживании.

оператора нет, котельная частного дома.

В приложении - используемый код для подсчета времени наработки

Сообщение отредактировал vlad_45 - 18.9.2013, 11:38
Прикрепленные файлы
Прикрепленный файл  RTC.txt ( 1,89 килобайт ) Кол-во скачиваний: 57
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 11:49
Сообщение #11





Группа: Участники форума
Сообщений: 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
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 18.9.2013, 11:52
Сообщение #12





Группа: Участники форума
Сообщений: 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. припуске загружайте на вход время остановаиз ретайн переменной.
При стопе записывайте время на выходе из функции в ретайн переменную.

При эмуляции счет времени идет в переменной Текущего времени, после остановки котла - текущее время прибавляется к общему времени.
Ну про ретэйн тоже почитаю
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 11:53
Сообщение #13





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



так считать время не будет.
При пуске загружайтезначение из ретайн переменной на вход функции RTC
При Стоп записывайте значение на выходе функции в ретайн переменную.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
beastmaster
сообщение 18.9.2013, 11:55
Сообщение #14





Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815



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





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



Цитата(beastmaster @ 18.9.2013, 14:55) *
Реализовал такой алгоритм для до 6 котлов максимум в SmLogix (Segnetics). Работает следующим образом:
1) Определяется, сколько котлов в данный момент нужно - на основании выходной мощности регулятора. Если 100%, то все котлы, если 50%, то половина и т.д. По мере изменения выходной мощности, меняется и число работающих котлов.
2) Выполняется сравнение количества работающих в данный момент котлов с их необходимым количеством.
3) Далее на основании информации о готовности котлов, состоянии (работает/не работает), времени наработки, выбирается котел, который будет включаться/отключаться в данный момент. Включаться будет котел с наименьшей наработкой.
4) После формирования команды на запуск котла делается выдержка для получения обратной связи с котла, что котел успешно включился. Если котел не запустился, то процесс выбора повторяется снова - из тех котлов, что не находятся в работе или в аварии.
В общих чертах как-то так...

Именно так у меня и должно быть. Можно взглянуть на этот проект?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
serge197a
сообщение 18.9.2013, 13:34
Сообщение #16





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



Вам, чтоб работало нужно включать по минимальной наработке, а выключать по максимальной.
Поиск включаемого- выключаемого в структуре легко организуется в цикле FOR.
(см. пример Валенка)
Время наработки, состояние (авария) и состояние (работа) заносите в структуру и по команде от ПИД, + аварийные значения+ задержки производить выбор.
Включать лучше поочередно, через 1-2 минуту, а не по значению ПИД 100% сразу все.
Иначе при будет вылетать в перегрев.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ktulu
сообщение 19.9.2013, 0:33
Сообщение #17





Группа: Участники форума
Сообщений: 171
Регистрация: 10.5.2008
Пользователь №: 18574



"Реализовал такой алгоритм для до 6 котлов максимум в SmLogix (Segnetics). Работает следующим образом:
1) Определяется, сколько котлов в данный момент нужно - на основании выходной мощности регулятора. Если 100%, то все котлы, если 50%, то половина и т.д. По мере изменения выходной мощности, меняется и число работающих котлов.

...подход в корне не верный, надо брать не выходное значение регулятора, а дельту D значения этого регулятора за какое-то время, D>Dуст для включения - запускаем мин по наработке(общей? за сутки?) котел, D<Dуст для отключ - останавливаем макс по наработке (общей? за сутки?) котел, типа серво-функции...

2) Выполняется сравнение количества работающих в данный момент котлов с их необходимым количеством.

...при таком алгоритме это не надо, регулятор сам определит нужное количество для поддержания уставки...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 19.9.2013, 5:51
Сообщение #18





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



В данный момент задача немного изменилась. Вместо ПИДа в котел загоняется Туст, а мощность котел сам подбирает, в зависимости от разности Ттек и Туст. Остается задача выбора котла для подключения и отключения. И, к примеру, при разнице Туст-Ттек 5-10 градусов - включаем один котел, 10-20 градусов - два, и т.д. Так конечно чуть проще, но вся предыдущая наработка у меня не годится...(( Сортировку по времени наработки реализовал пока в цикле case, в котором мы по порядку проходим по массиву с временами наработки. Думаю если в каждый шаг этого перебора внедрить условия наличия котла и вкл/выкл, то получится нечто подобное с предложенными структурами. Если не получится, буду пробовать структуру.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 19.9.2013, 6:28
Сообщение #19





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



Цитата(serge197a @ 18.9.2013, 16:34) *
Вам, чтоб работало нужно включать по минимальной наработке, а выключать по максимальной.
Поиск включаемого- выключаемого в структуре легко организуется в цикле FOR.
(см. пример Валенка)
Время наработки, состояние (авария) и состояние (работа) заносите в структуру и по команде от ПИД, + аварийные значения+ задержки производить выбор.
Включать лучше поочередно, через 1-2 минуту, а не по значению ПИД 100% сразу все.
Иначе при будет вылетать в перегрев.

Вот логику то я понял... Только теперь вместо команды ПИДа у меня Результат сравнения уставки и подачи - попадание в определенный диапазон. От этого определяем количество необходимых котлов. Только вот реализовать у меня это не получается.
Допустим Выбор котлов по наработке у меня работает, допустим я использую алгоритм Валенка для отсеивания включенных или выведенных котлов... А вот как подключить еще один котел используя цикл для выбора или вывести котел с макс наработкой, если мы попали в другой диапазон, это я уже не могу понять как сделать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
beastmaster
сообщение 19.9.2013, 6:29
Сообщение #20





Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815



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





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



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

Прикрепил часть кода, над которой работаю, чтоб нагляднее было. Там пока много лишнего, на которое не стоит обращать внимания...

Сообщение отредактировал vlad_45 - 19.9.2013, 7:19
Прикрепленные файлы
Прикрепленный файл  ________3.2.zip ( 24,67 килобайт ) Кол-во скачиваний: 26
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
beastmaster
сообщение 19.9.2013, 7:19
Сообщение #22





Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815



Если у вас достигнута уставка температуры, то это не значит, что для её поддержания не нужны котлы. То есть тепло, забираемое системой отопления, и тепло, вырабатываемое котлами, в данной точке уравновешены. Поэтому я не представляю, как можно с помощью такого регулирования по рассогласованию, когда достижение уставки означает отключение котлов, поддерживать нужную температуру. При одинаковой уставке, но при разной наружной температуре, в работе могут находиться разное количество котлов, т.к. потребление тепла системой тоже будет разным. Я бы на Вашем месте не занимался "изобретением велосипеда", а применил бы уже готовое решение для управления каскадом котлов на базе того же Siemens RMK770-4. Как раз возможность управления до 6 котлов там есть, причем с совершенно любыми горелками. А вашему контроллеру оставил бы вспомогательные функции например по управлению группами насосов, ГВС и т.д.

Сообщение отредактировал beastmaster - 19.9.2013, 7:20
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 19.9.2013, 7:21
Сообщение #23





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



Управление контурами отопления уже реализовано на этом же контроллере. Плюсом это не моя идея реализовать управление котлами, а задача организации... И в частности моя задача - написать программу для управления. Предлагаю пока условиться, что котлы отключаются при перегреве на 5 градусов, позже я думаю это можно поправить на другое действие. Пока для меня главная задача - подключать и отключать котлы при разных температурах

Сообщение отредактировал vlad_45 - 19.9.2013, 7:24
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
beastmaster
сообщение 19.9.2013, 7:25
Сообщение #24





Группа: Участники форума
Сообщений: 456
Регистрация: 19.3.2009
Из: Липецк
Пользователь №: 30815



Тогда лучше почитайте документацию на этот контроллер, там есть описания алгоритмов его работы. Может, это прояснит Вам ситуацию, и поможет написать программу.
Прикрепленные файлы
Прикрепленный файл  p3132ru_rmk770.pdf ( 3,72 мегабайт ) Кол-во скачиваний: 86
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 19.9.2013, 7:28
Сообщение #25





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



Обязательно ознакомлюсь после реализации включения/выключения котлов
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Usach
сообщение 23.9.2013, 10:21
Сообщение #26


дважды крещёный пионер


Группа: Участники форума
Сообщений: 4629
Регистрация: 13.7.2008
Из: г.Новосибирск
Пользователь №: 20580



получается, что Вы котлы коммутируете, как равные по мощности ступени нагревателя?
посмотрите у Овена - там куча контроллеров для электрических печек и сушилок на этом принципе работающих...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
vlad_45
сообщение 23.9.2013, 10:29
Сообщение #27





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



Цитата(Usach @ 23.9.2013, 13:21) *
получается, что Вы котлы коммутируете, как равные по мощности ступени нагревателя?
посмотрите у Овена - там куча контроллеров для электрических печек и сушилок на этом принципе работающих...

Да, только эти котлы имеют еще и аналоговое регулирование... И контроллеры температуры не рассматриваются, так как программа пишется своя для ПЛК, как раз таки ОВЕН. На данной стадии, правда, мы этот аналоговый вход используем для задания температуры котла, мощность он сам подбирать будет.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
tiptop
сообщение 23.9.2013, 11:43
Сообщение #28


сам себе 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
Последние сообщения Форума






RSS Текстовая версия Сейчас: 9.8.2025, 16:42
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных