Вход

Просмотр полной версии : ПР100 для смены очередности работы насосов



poligon
29.10.2024, 14:44
Здравствуйте. Есть 2 насоса которые обеспечивают циркуляцию теплоносителя через теплообменник (закрытый контур). На каждый насос свой частотный преобразователь. Контроля за давлением нет, защиты от сухого хода тоже. Есть у меня идея сделать чередование этих насосов на реле ПР100, а так же хоть какую то минимальную защиту на случай утечки теплоносителя.

С частотных преобразователей хочу читать через RS485 значение тока, с ПР100 значение давления и задавать время ротации, считать и сохранять наработку. Управление (пуск/стоп) через дискретный выход ПР100. В маленький щиток установить ПР100 и 2 переключателя на 3 положения. В «авто» частотники переключает ПР100. В ручном — принудительный запуск. «0» остановлено. В самом ПР100 алгоритм отслеживания давления и остановки двигателей в случае утечки. Ну и ситуации вида: если один тумблер в 0, а второй в авто -> должен работать тот, что в авто, без ротации. И т.д. Буду делать всё это первый раз. Подскажите правильно ли рассуждаю и достаточно ли будет ПР100? Насосы и частотники работают. Буду докупать ПР100 и 2 датчика давления.

Сергей0308
29.10.2024, 15:02
Я бы ПР200 предпочёл с питающим напряжением = 24В, с экрана можно менять уставку давления, время ротации, активировать- деактивировать защиты, вдруг какой датчик сломается и многое другое! Жадный платит дважды!

poligon
29.10.2024, 17:09
Я как раз хотел делать это всё по rs485. Чтобы щит работал автономно и не лазить в него. Больше интересует в нужном ли направлении я двигаюсь. Смотрел готовый контроллер Суна 122, но не понравилось что переключение насосов идёт через контактор. Я хочу чтобы одновременно с плавной остановкой одного насоса плавно разгонялся другой (подобрать время разгона/торможения в частотнике).

Сема
29.10.2024, 17:16
Таймер переключений можно настроить в СУНА. Согласовать с временем разгона и торможения. Всё.

poligon
01.11.2024, 19:19
Немного поразмыслив, пришел к выводу, что время наработки считать не имеет смысла. Тумблер на щите включает либо «ручной» либо «авто» режим для каждого насоса. При ручном режиме с тумблера сигнал напрямую подается на вход ПУСК частотника. Я же лишь фиксирую этот момент через дискретный вход ПР100 чтобы узнать о ручном режиме по modbus.

Если тумблер 1-го насоса переводится в «Авто», то включается 1 насос и работает «бесконечно» т.к. он один. Тумблер 2-го насоса при этом в нуле. Как только 2-й насос переводится в «авто», то 1-й продолжает работать, но запускается таймер, который по окончании отсчета включит 2-й насос и отключит 1-й. И эта смена насосов происходит бесконечно пока оба насоса в «Авто».

Важный момент: когда оба насоса в «авто» и работает в данный момент, например 2-й, то при переводе его тумблера в ноль (на случай ремонта) – включится 1-й насос. И соответственно наоборот. Т.е. циркуляция воды не прекратится.

Если при этом пока не учитывать сигналы ошибки от частотников, то в симуляторе всё прекрасно работает.

Единственный вопрос который у меня возник: что будет если подать питание на щит когда оба тумблера в «авто»? При такой ситуации всегда должен включаться сначала 1-й насос. Вход I3 прочитается раньше входа I4 ?

poligon
01.11.2024, 20:00
Кроме как добавить задержку 0,1 сек на вход I4 на этот случай больше ничего не придумал. Вроде работает.

Теперь надо придумать как задавать в часах интервал смены насосов по Modbus, считывать сколько осталось до смены насоса и останавливать всё при получении сигнала аварии от частотника.

kondor3000
01.11.2024, 20:31
Единственный вопрос который у меня возник: что будет если подать питание на щит когда оба тумблера в «авто»? При такой ситуации всегда должен включаться сначала 1-й насос. Вход I3 прочитается раньше входа I4 ?

У вас могут включится оба выхода одновременно, чтобы этого не получилось, лучше использовать блок с приоритетом 1 выхода
Тут выложил EFrol
https://owen.ru/forum/showthread.php?t=26216&page=346#3458

А здесь примеры на 4-8 насосов (можно уменьшить) с авариями, задачей времени ротации
https://owen.ru/forum/showthread.php?t=38920&page=2#13

Сергей0308
01.11.2024, 20:35
Вот здесь обсуждали ротацию и включение резервного насоса на смену насоса ушедшего в аварию: https://owen.ru/forum/showthread.php?t=36564

Может есть смысл это посмотреть?

Обычно ставлю для каждого насоса селекторный переключатель на 3 положения, в смысле, выключен, включён и автоматический режим. Режим "выключен" используется для ремонта, чтобы насос не включился, режим включён можно использовать для принудительного включения насоса, например чтобы " толкнуть", проверить и подтянуть сальники после набивки, в автоматическом режиме насосы включаются в автоматический режим работы и работают до ротации или аварии. Также может быть каскадное регулирование, это когда одного насоса не хватает и ему на помощь включаются другие насосы из числа включенных в автоматический режим и не находящихся в аварии, здесь рассматривали каскадное регулирование:
https://owen.ru/forum/showthread.php?t=32428&page=4

Dimensy
01.11.2024, 21:01
А как должна вести себя система, если один насос в ручном режиме, а другой в авто?

poligon
02.11.2024, 10:33
Обычно ставлю для каждого насоса селекторный переключатель на 3 положения, в смысле, выключен, включён и автоматический режим. Режим "выключен" используется для ремонта, чтобы насос не включился, режим включён можно использовать для принудительного включения насоса, например чтобы " толкнуть", проверить и подтянуть сальники после набивки, в автоматическом режиме насосы включаются в автоматический режим работы и работают до ротации или аварии.
Именно так я и хочу сделать! В симуляторе сейчас работает всё как и задумал. Само реле мне ещё не скоро приедет.


А как должна вести себя система, если один насос в ручном режиме, а другой в авто?
Будут работать оба насоса. Только по Modbus я буду видеть что один включен принудительно. Этот случай как раз описал выше Сергей0308. Когда нужно просто толкнуть один насос или временно "надавить" двумя насосами.

Dimensy
02.11.2024, 12:30
Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
79777

Сергей0308
02.11.2024, 12:59
Так с перспективой расширения до 8 насосов, в принципе можно расширить до 32 насосов без существенного усложнения программы(по ссылке).
На практике ему это на вряд ли понадобится, но он же не один в нашей галактике, в смысле, может у других больше насосов. Кто-то на форуме делал насосную станцию с 12 насосами с периодом ротации в единицы минут, я спросил где это требуется, но товарищ не смог ответить, в смысле, наверно ещё не придумал где такое требуется.

poligon
02.11.2024, 22:19
Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
79777

В вашем примере при "авто" на одном насосе -> таймер не останавливается. И если до конца интервала остается пара секунд и включить "авто" на второй насос, то первый доработает эти пару секунд и переключится на второй. А в моем примере таймер запускается только при "авто" на обоих насосах и отсчитывает полный интервал переключения. На мой взгляд так лучше.

Сделал задание интервала по Modbus и вход аварий. Не могу придумать как считать с Blink сколько осталось до конца отсчета. Чтобы по Modbus прочитать что то типа: "до смены насоса осталось 10 часов".

Сергей0308
02.11.2024, 23:01
Может сделать ротацию раз в сутки, например в 9 часов или 2 раза в сутки, в 9 и 21 час или раз в неделю, например в понедельник в 10 часов, короче, суть в том, чтобы время ротации было всем известно, в смысле, не надо смотреть(высчитывать) когда произойдёт ротация.
Если не одумаетесь, таймер с прямым и обратным отсчётом времени здесь выкладывал: https://owen.ru/forum/showthread.php?t=33720&page=17

poligon
03.11.2024, 00:44
Если не одумаетесь
А что не так в моем алгоритме?

Или вы имеете ввиду чтобы меньше заморачиваться? Не хочу привязываться к часам. Помрет батарейка, отключится свет и привет ротация.

melky
03.11.2024, 08:24
poligon вам надо использовать таймеры с выходом "время" и энергонезависимые. Это не про штатные FBD лоджика. Ищите реализации. Их есть и в FBD и в ST, народ выкладывал.
А разве часы в ПР перестают работать при мертвой батарейке? Время вроде не сохранят, но при включенном питании вроде будут считать время.

Ну и инициализацию переменных не забудьте. если за батарейку переживаете. Чтобы при выключении питания и включении заменить обнулившиеся сетевые переменные значениями по умолчанию.

Сергей0308
03.11.2024, 14:21
А что не так в моем алгоритме?

Или вы имеете ввиду чтобы меньше заморачиваться? Не хочу привязываться к часам. Помрет батарейка, отключится свет и привет ротация.

Во-первых это не так, в смысле, ротация останется, изменится только время ротации, а период сохранится.
Если важно и время ротации, что мешает менять батарейку раз в 5 лет?
В этом плане, мне тоже видны преимущества ПР200, в смысле, время можно настроить прямо с экрана ПР, как я понимаю, по сети Вы не планируете синхронизацию времени, иначе такой проблемы и возникнуть не может!

poligon
20.01.2025, 21:58
Пришла мне релюшка. Программа работает. И мне очень нравится. Сейчас чтобы сделать ротацию раз в сутки я выставил в blink "1 день". И если в 10:00 один из насосов перевести в "0" и обратно в "авто", то начнется отсчет "1 суток" и по истечении этого времени будет смена насоса. И так каждый день. Если пропадет питание, то отсчет "1 суток" начнется от времени включения. И вот этот момент мне не нравится. Хотя всё работает.


Может сделать ротацию раз в сутки, например .... в понедельник в 10 часов
Да. Похоже так и надо делать.

Сейчас мне нужно заменить блок blink на такой блок:
- возможно задать время срабатывания и интервал в днях;
- должен быть вход Enable. Когда он не активен, то на выходе должен быть 0 и счетчик прошедших дней сброшен. При активации Enable начальное состояние выхода 0. По достижении заданного времени и количества дней переключаться в 1. Снова по достижении заданного времени и количества дней переключаться обратно в 0.
- один выход.

И вот тут я завис. Так и не смог сделать такой вот свой Blink. Проблема с фиксацией состояния на выходе согласно вышеописанного алгоритма. Т.е. как только системное время становится 10:00:00, то на 1 секунду появляется импульс счета. Как только насчитали 3 таких импульса -> переключили выход (для трех дней). Но блок ON_OFF сохраняет своё состояние при снятии Enable и как его при этом обнулить я не понимаю.

kondor3000
20.01.2025, 22:27
Пришла мне релюшка. Программа работает. И мне очень нравится. Сейчас чтобы сделать ротацию раз в сутки я выставил в blink "1 день". И если в 10:00 один из насосов перевести в "0" и обратно в "авто", то начнется отсчет "1 суток" и по истечении этого времени будет смена насоса. И так каждый день. Если пропадет питание, то отсчет "1 суток" начнется от времени включения. И вот этот момент мне не нравится. Хотя всё работает.

Новые ПР100 поддерживают язык ST, готовые блоки на 2-4-8 выходов с ротацией по времени 10 часов, по минимальной наработке, время можно менять.

Последний, 4 насоса_Нараб_Ротация по времени_4 Уровня_7_____ https://owen.ru/forum/showthread.php?t=38920&page=2#13
Уровни можно выбросить, оставить константу 1.
Здесь доработанный Опер таймер с запоминанием наработки на языке ST______ https://owen.ru/forum/showthread.php?t=38721#8
А также блок текущего времени. ФБ (Функц. блоки) на ST, переносятся просто копипастом текста к себе в проект.

Блок ON_OFF - это R_Trig + XOR, первый импульс -включается, 2 -выключается, 3 -опять включается,
чтобы сбросить Блок ON_OFF можно на входе поставить OR, на второй вход OR переменную сброс.

Сергей0308
21.01.2025, 01:24
Пришла мне релюшка. Программа работает. И мне очень нравится. Сейчас чтобы сделать ротацию раз в сутки я выставил в blink "1 день". И если в 10:00 один из насосов перевести в "0" и обратно в "авто", то начнется отсчет "1 суток" и по истечении этого времени будет смена насоса. И так каждый день. Если пропадет питание, то отсчет "1 суток" начнется от времени включения. И вот этот момент мне не нравится. Хотя всё работает.


Да. Похоже так и надо делать.

Сейчас мне нужно заменить блок blink на такой блок:
- возможно задать время срабатывания и интервал в днях;
- должен быть вход Enable. Когда он не активен, то на выходе должен быть 0 и счетчик прошедших дней сброшен. При активации Enable начальное состояние выхода 0. По достижении заданного времени и количества дней переключаться в 1. Снова по достижении заданного времени и количества дней переключаться обратно в 0.
- один выход.

И вот тут я завис. Так и не смог сделать такой вот свой Blink. Проблема с фиксацией состояния на выходе согласно вышеописанного алгоритма. Т.е. как только системное время становится 10:00:00, то на 1 секунду появляется импульс счета. Как только насчитали 3 таких импульса -> переключили выход (для трех дней). Но блок ON_OFF сохраняет своё состояние при снятии Enable и как его при этом обнулить я не понимаю.

Сравнительно давно на форуме обсуждали назначение времени ротации, тему не помню(можете поискать), но проект сохранился, в смысле, там можно назначать время ротации:
81453

Кроме того делали проект командоаппарата реального времени с маской недели на 32 команды:
81454
Хоть он и 8-и канальный, но память динамическая, в смысле, можно использовать все 32-е команды на один канал.

Здесь подобный, но одноканальный и без маски недели:
81455

Если просто надо энергонезависимый таймер, здесь выкладывал:
https://owen.ru/forum/showthread.php?t=33720&page=17

И, я так понимаю, Вы принципиально не смотрите, что вам предлагают, в смысле, чем не подходит, что я предлагал и ссылки давал в постах #2 и 8???
Какой тогда смысл, что-то спрашивать?

CleanS
21.01.2025, 12:27
Взять блок Blink, настроить на выдачу секунд, 0,5 на 0,5 например. Далее считать счётчиком минуты и универсальным счётчиком CTN часы (только включить в свойствах "Сохранение состояния" на случай пропадания питания). А дальше делай чего хочешь. Хочешь считай наработку в часах. Хочешь отнимай от уставки и получишь остаток времени работы. Я бы ещё сигнал с Blink прикрутил к зелёному светодиоду F1, пусть моргает. Видно что идут секундные импульсы.

kondor3000
21.01.2025, 14:17
И вот тут я завис. Так и не смог сделать такой вот свой Blink. Проблема с фиксацией состояния на выходе согласно вышеописанного алгоритма. Т.е. как только системное время становится 10:00:00, то на 1 секунду появляется импульс счета. Как только насчитали 3 таких импульса -> переключили выход (для трех дней). Но блок ON_OFF сохраняет своё состояние при снятии Enable и как его при этом обнулить я не понимаю.

Всё у вас работает, вынес всё из макроса наружу, при записи в счётчик числа 3, переключение происходит на 3 сутки в 10 часов, как и положено.81470 На скрине на счётчике число 2 и переключение через 4 секунды 81471 Переключилось
Сброс сделал элементом OR перед блоком ON_OFF

Dimensy
21.01.2025, 20:20
Вот, у себя в загашнике нашел. Может пригодится

poligon
21.01.2025, 21:54
... я так понимаю, Вы принципиально не смотрите, что вам предлагают ...
Если честно, то я просто не понимаю эти примеры. Логику построения. Тяжело дается FBD.


Всё у вас работает
Нет. Всё дело в сигнале "сброс". И откуда его взять "правильный".


Новые ПР100 поддерживают язык ST
А вот это дело. Вспомнил что в студенческие годы программировал в Delphi и сотворил такое чудо. И вроде даже работает как надо.

kondor3000
21.01.2025, 22:06
Нет. Всё дело в сигнале "сброс". И откуда его взять "правильный".
А вот это дело. Вспомнил что в студенческие годы программировал в Delphi и сотворил такое чудо. И вроде даже работает как надо.

Ну и правильно, писать надо на чём умеешь) Осталось верхнюю часть переписать на ST, там 5-7 строк должно хватить, половину можно выкинуть.
На счёт сброса так и не понял, что вы хотели.

poligon
22.01.2025, 11:16
На счёт сброса так и не понял, что вы хотели.
Вы вывели сброс на отдельный вход I8. А нужно чтобы выход ON_OFF всегда сбрасывался в 0 при пропадании сигнала I (Enable).

kondor3000
23.01.2025, 14:16
Вы вывели сброс на отдельный вход I8. А нужно чтобы выход ON_OFF всегда сбрасывался в 0 при пропадании сигнала I (Enable).

Так подключите куда надо через R_Trig, вместо I8, будет сброс по фронту,
или F_Trig, будет сброс по спаду.