PDA

Просмотр полной версии : Ротация двух насосов



Вова13
23.12.2022, 16:21
Добрый день. Казалось бы ,простая задача, чередовать два насоса по времени. Но после отключения питания, стартует всегда первый насос.
-Есть переменная (условно-дни) которая по достижении заданного значения = нулю.
Например6 уставка 7 дней,когда проходит 7 дней переменная =нулю.
Эта переменная retine,при сбросе питания она сохраняется. При значении =0 происходит переключение на другой насос.
Как только не пробовал сохранять состояние насосов(через retine ,Счетчик ,) .
В общем, часы сохраняются, насосы сбрасываются на первый.
Дайте идею.Как реализовать .

kondor3000
23.12.2022, 16:38
Добрый день. Казалось бы ,простая задача, чередовать два насоса по времени. Но после отключения питания, стартует всегда первый насос.
-Есть переменная (условно-дни) которая по достижении заданного значения = нулю.
Например6 уставка 7 дней,когда проходит 7 дней переменная =нулю.
Эта переменная retine,при сбросе питания она сохраняется. При значении =0 происходит переключение на другой насос.
Как только не пробовал сохранять состояние насосов(через retine ,Счетчик ,) .
В общем, часы сохраняются, насосы сбрасываются на первый.
Дайте идею.Как реализовать .

Вероятнее всего, у вас эта переменная перезаписывается программой при включении. Так гадать можно до посинения.
Вот аналогичная проблема с ПР, стоит RS триггер который при включении сбрасывается и обнуляет переменную, хотя она энергонезависимая https://owen.ru/forum/showthread.php?t=9398&page=671

Но решение зависит от проекта, поэтому проект в студию.

Вова13
23.12.2022, 17:43
Вот кусок, это именно ротация.
https://disk.yandex.ru/d/Kq9_oLzkrVFTkQ

1exan
23.12.2022, 18:01
Вот кусок, это именно ротация.
https://disk.yandex.ru/d/Kq9_oLzkrVFTkQ

А блок TRAB зачем в IL перевели? Кто ж будет в здравом уме в этом разбираться?

Сергей0308
23.12.2022, 18:27
Мне в принципе не понятно какая проблема создать импульс ротации раз в неделю, короче, давным-давно такой проект делал, там как раз ротация раз в неделю:

64784

Это какого уровня невежества нужно достичь, чтобы не суметь этого сделать, тут вариантов вагон и маленькая тележка, проблемы могут возникнуть только с выбором варианта, в смысле я и таймеры энергонезависимые выкладывал.
И, здесь подобная тема обсуждалась: https://owen.ru/forum/showthread.php?t=36564

Вова13
23.12.2022, 18:30
Trab не мой блок, он взят где-то на просторах этого форума очень давно. Честно говоря я не помню, на каком языке он был. С этим блоком проблем нет. Значение Trab не сбрасывается при отключении питания. Сбрасывается счётчик в ФБ "Ротация".

Вова13
23.12.2022, 18:35
Про невежество кончно Вы правы. Потратил рабочий день используя разные способы, и всё как то криво.
Про импульс раз в неделю.. мне помимо импульса переключения, нужен отсчёт дней наработки. Поэтому и взял tramp.

kondor3000
23.12.2022, 19:34
Про невежество кончно Вы правы. Потратил рабочий день используя разные способы, и всё как то криво.
Про импульс раз в неделю.. мне помимо импульса переключения, нужен отсчёт дней наработки. Поэтому и взял tramp.
Так работать не будет у вас )))
Бедный ПЛК не знает какая у вас идёт неделя 1 или 2, один насос включается при 0, второй при 1. Так всегда будет включаться 1 насос, какую переменную не сохраняй.
Самый простой способ запомнить какая идёт неделя, считать до 13, Ust_Dni: INT := 13; (с 0 до 13 будет 14 дней) и сохранять в Retain только блок TRAB ( он запомнит время и день недели).
А блок Rotation_N изменить так, только сравнение до 6 ( с 0 до 6 - 7 дней) и с 7 по 13 ( 7 дней)64785
Счётчик вообще выкинуть.

Вова13
23.12.2022, 19:42
Точно. Спасибо за идею. Требуемое время увеличу в два раз, в первой половине первый насос работает, во второй половине второй.
ПС неделя это условно... Уставка в днях задаётся 1-30 дней.

melky
24.12.2022, 10:52
Trab изначально был на CFC, простой счетчик 32-х разрядный, потому что счетчик встроенный ограничен. Кстати до сих пор работает ротация кондиционеров на ПЛК63...
Единственное, он запитан от ИБП, по этому проблемы начинать сначала там нет :)

kondor3000
24.12.2022, 12:48
Точно. Спасибо за идею. Требуемое время увеличу в два раз, в первой половине первый насос работает, во второй половине второй.
ПС неделя это условно... Уставка в днях задаётся 1-30 дней.

Это всё хорошо, только в блоке TRAB нельзя установить реальное время и это очень неудобно.
Вот проект с изменённым блоком Moy_CTU_TRAB.
Время читается в ПЛК, с помощью биб-ки SisLibTime.lib. Не знаю работает ли она в ПЛК 73, если нет возьмите время в самом ПЛК73.64789
Проект переключает до 12 часов 1 насос и после 12 часов 2 насос. Проект проверен на ПЛК 154.
При запуске программы, сразу устанавливается реальное время и в зависимости от него запускается нужный насос.

melky
24.12.2022, 13:11
kondor3000 когда делался Trab начиналось все со времени, а по факту счетчик может считать все что угодно, а так же сбрасывать любую расчетную единицу. Получился универсальным, по этому писать в него время не было смысла.

DIPHENHYDRAMINE
24.12.2022, 16:39
попробуй это....



https://asutp-volgograd.com/uploads/1/5/4/0/15400238/6358414250c.png?456



Блок не содержит энергонезависимых переменных (т.е. сам не является энергонезависимым), поэтому переключение между насосами происходит не по наименьшей наработке, а просто через равные промежутки времени.
Блок подходит для управления как тремя, так и двумя насосами, а также максимально просто расширяется до любого необходимого числа насосов, т.к. сам алгоритм переключения привязан не к конкретному числу, а к переменной N.
При возникновении аварии насос блокируется до принудительного сброса аварии.

Входы:
EN (BOOL) - запуск управлением насосами. По умолчанию = TRUE.
SW (BOOL) - принудительное переключение на следующий насос. Происходит по фронту сигнала.
PT (TIME) - период переключения насосов.
ET0 (TIME) - начальное время счета таймера. Необходимо для реализации энергонезависимого таймера.
MAIN (BYTE) - номер запускаемого после включения ПЛК насоса. По умолчанию = 1. Также может служить для энергонезависимой работы.
ALx (BOOL) - аварийный сигнал с насоса №x. Стоит таймер с задержкой активации в 0,5 секунды.
RSx (BOOL) - сигнал сброса аварии с насоса №x.

Выходы:
Px (BOOL) - запуск насоса №x.
ERRx (BOOL) - насос №x в аварийном состоянии. Либо имеется текущая авария, либо не сброшена старая.
CUR (BYTE) - номер текущего работающего насоса. Может использоваться для организации энергонезависимой работы.
ET (TIME) - отсчитанное на текущий момент таймером время.

энергонезависимая работа
Всё необходимое для такой работы реализовано в алгоритме. Для работы необходимо лишь задать пару RETAIN-переменных, либо в программе, где объявлен функциональный блок "PUMPS" (например в PLC_PRG), либо в области глобальных переменных, либо даже в области конфигурации Modbus (Slave). Это переменные i (номер текущего насоса) и et0 (время отсчитанное таймером):


https://asutp-volgograd.com/uploads/1/5/4/0/15400238/9511784_orig.png


Их необходимо привязать ко входам MAIN и ET0, и выходам CUR и ET соответственно (см. скриншот в начале поста). Таким образом, во время работы блока каждый цикл в наши энергонезависимые переменные будут записываться актуальные значения, и они сохраняться даже после пропадания питания. А в момент подачи питания в самом первом цикле они будут считаны функциональным блоком и работа возобновиться с работающего на момент сброса питания насоса и таймер будет считать с того же места, на котором остановился.

два насоса
Для работы только с двумя насосами необходимо просто-напросто оставить вход AL3 пустым. Функциональный блок при этом будет "думать", что третий насос находится всё время в аварии.



https://asutp-volgograd.com/uploads/1/5/4/0/15400238/7659858_orig.png

Вова13
24.12.2022, 19:03
Это всё хорошо, только в блоке TRAB нельзя установить реальное время и это очень неудобно.
Вот проект с изменённым блоком Moy_CTU_TRAB.
Время читается в ПЛК, с помощью биб-ки SisLibTime.lib. Не знаю работает ли она в ПЛК 73, если нет возьмите время в самом ПЛК73.64789
Проект переключает до 12 часов 1 насос и после 12 часов 2 насос. Проект проверен на ПЛК 154.
При запуске программы, сразу устанавливается реальное время и в зависимости от него запускается нужный насос.
Не совсем понимаю, для чего в моём случае программе нужно знать текущее время?
В моём случае нужно что бы ротация происходила через одинаковое количество дней. И уставка "дни" может устанавливаться в диапазоне от 1 до 30 дней.

kondor3000
24.12.2022, 21:56
Не совсем понимаю, для чего в моём случае программе нужно знать текущее время?
В моём случае нужно что бы ротация происходила через одинаковое количество дней. И уставка "дни" может устанавливаться в диапазоне от 1 до 30 дней.

Ну если не нужно, то оставьте как есть)

Вова13
24.12.2022, 22:35
А накой ротация по времени ? Техпроцесс непрывный и насос никогда неостанавливается ?
Процесс циклический.Два насоса, два ПЧ, работают по-очереди, плк управлеет ПЧ путём включения и регулировки частоты(0.. 10в).При аварии работающего насоса(определяется наличием перепада на диф. датчике давления) переключается на второй насос. В штатном режиме переключение по времени(1-30 суток). Также предусмотрено отключение насоса для ремонта, в таком случае ротации по времени и аварии нет. Работает только один насос. После включения второго в работу программа начинает выполнятся в штатном режиме ( с ротацией по времени).

Вова13
24.12.2022, 23:15
Если вообще 1 насос - он будет иногда останавливатся ? Я про техпроцесс а не про аварии и всякую нештатку.
Разбор воды бывает нулевым ?
Да, процесс непрерывный.
Это циркуляционный насос , контур замкнутый.Один из насосов всегда работает.

Вова13
25.12.2022, 00:05
Если вообще 1 насос - он будет иногда останавливатся ? Я про техпроцесс а не про аварии и всякую нештатку.
Разбор воды бывает нулевым ?

Я думал что это вопрос.

Вова13
25.12.2022, 00:05
Это ж с самой первой строчки ясно же.
Значит я Вас не понял.

Вова13
25.12.2022, 00:13
Если вообще 1 насос - он будет иногда останавливатся ? Я про техпроцесс а не про аварии и всякую нештатку.
Разбор воды бывает нулевым ?

Если в работе останется один насос, а второй будет выведен в ремон, то рабочий насос будет работать без остановки.