- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Логика управления насосной группой.
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 08 июн 2022, 18:57
- Имя: Андрей
- Страна: Russia
- город/регион: Vladimir
- Благодарил (а): 2 раза
Логика управления насосной группой.
Здравствуйте! Звать меня Андреем, ежели тему создал не в том месте, то прошу прощения.
Пытаюсь написать логику насосной группы (переключение агрегатов по наработке по времени), уперся в одном моменте, не знаю как решить.
Пишу в codesys 3.5. Отладку провожу в режиме эмуляции. Язык ST. Привожу код:
PROGRAM PLC_PRG
VAR
mt1: MY_TON;
mt2: MY_TON;
start: BOOL;
pump1_on: BOOL;
pump2_on: BOOL;
pump1_finidhed: BOOL;
pump2_finidhed: BOOL:=TRUE;
pump1_working: BOOL;
pump2_working: BOOL;
END_VAR
******************************************************************************************
mt1(IN := pump1_on, PT := T#2S);
mt2(IN := pump2_on, PT := T#2S);
IF start THEN
IF pump2_finidhed AND NOT pump1_finidhed THEN
pump1_on := TRUE;
pump1_working:= TRUE;
IF PLC_PRG.mt1.Q THEN
pump1_finidhed := TRUE;
pump2_finidhed := FALSE;
pump1_working:= FALSE;
pump2_on := FALSE;
END_IF
END_IF
IF pump1_finidhed AND NOT pump2_finidhed THEN
pump2_on := TRUE;
pump2_working:= TRUE;
IF PLC_PRG.mt2.Q THEN
pump2_finidhed := TRUE;
pump1_finidhed := FALSE;
pump2_working:= FALSE;
pump1_on := FALSE;
END_IF
END_IF
ELSE
pump1_on := FALSE;
pump2_on := FALSE;
pump1_working:= FALSE;
pump2_working:= FALSE;
END_IF
Логику таймера MY_TON не привожу, он рабочий. Если потребуется - приведу.
При нажатии кнопки Start система запускается. "Насос 1" отрабатывает до уставки по времени, переключается на второй, затем второй штатно переходит на первый и тут система встает. Первый насос не меняет состояние. Таймер доходит до уставки ,обнуляется и считает по новой. Переменные, которые должны менять свое состояние по срабатыванию выхода таймера (переменной PLC_PRG.mt1.Q) свое состояние не меняют.
Решительно не понимаю, где я не прав. Очень прошу помощи.
Пытаюсь написать логику насосной группы (переключение агрегатов по наработке по времени), уперся в одном моменте, не знаю как решить.
Пишу в codesys 3.5. Отладку провожу в режиме эмуляции. Язык ST. Привожу код:
PROGRAM PLC_PRG
VAR
mt1: MY_TON;
mt2: MY_TON;
start: BOOL;
pump1_on: BOOL;
pump2_on: BOOL;
pump1_finidhed: BOOL;
pump2_finidhed: BOOL:=TRUE;
pump1_working: BOOL;
pump2_working: BOOL;
END_VAR
******************************************************************************************
mt1(IN := pump1_on, PT := T#2S);
mt2(IN := pump2_on, PT := T#2S);
IF start THEN
IF pump2_finidhed AND NOT pump1_finidhed THEN
pump1_on := TRUE;
pump1_working:= TRUE;
IF PLC_PRG.mt1.Q THEN
pump1_finidhed := TRUE;
pump2_finidhed := FALSE;
pump1_working:= FALSE;
pump2_on := FALSE;
END_IF
END_IF
IF pump1_finidhed AND NOT pump2_finidhed THEN
pump2_on := TRUE;
pump2_working:= TRUE;
IF PLC_PRG.mt2.Q THEN
pump2_finidhed := TRUE;
pump1_finidhed := FALSE;
pump2_working:= FALSE;
pump1_on := FALSE;
END_IF
END_IF
ELSE
pump1_on := FALSE;
pump2_on := FALSE;
pump1_working:= FALSE;
pump2_working:= FALSE;
END_IF
Логику таймера MY_TON не привожу, он рабочий. Если потребуется - приведу.
При нажатии кнопки Start система запускается. "Насос 1" отрабатывает до уставки по времени, переключается на второй, затем второй штатно переходит на первый и тут система встает. Первый насос не меняет состояние. Таймер доходит до уставки ,обнуляется и считает по новой. Переменные, которые должны менять свое состояние по срабатыванию выхода таймера (переменной PLC_PRG.mt1.Q) свое состояние не меняют.
Решительно не понимаю, где я не прав. Очень прошу помощи.
-
- здесь недавно
- Сообщения: 33
- Зарегистрирован: 19 ноя 2018, 13:53
- Имя: Иван
- Страна: Украина
- город/регион: Полтавщина
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Логика управления насосной группой.
Я не очень силён в программировании PLC, хотя когда-то писал простенькие программы. Счетчик на втором насосе обнуляется? При втором проходе система переключает на второй насос, проверяет уставку а она уже равна пороговому и сразу включает первый.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 08 июн 2022, 18:57
- Имя: Андрей
- Страна: Russia
- город/регион: Vladimir
- Благодарил (а): 2 раза
Логика управления насосной группой.
Вы правы! Переписал с другим таймером и все гораздо ловчее получилось.
IF START THEN
STOP := FALSE;
ELSE STOP := TRUE;
END_IF
RS(SET := START, RESET1 := STOP, Q1 => M1);
TP1(IN := M1 AND NOT PUMP2_ON, PT := T#1S, Q => PUMP1_ON, ET => XX);
TP2(IN := NOT PUMP1_ON, PT := T#1S, Q => PUMP2_ON, ET => XY);
IF STOP THEN
PUMP1_ON := FALSE;
PUMP2_ON := FALSE;
END_IF
IF START THEN
STOP := FALSE;
ELSE STOP := TRUE;
END_IF
RS(SET := START, RESET1 := STOP, Q1 => M1);
TP1(IN := M1 AND NOT PUMP2_ON, PT := T#1S, Q => PUMP1_ON, ET => XX);
TP2(IN := NOT PUMP1_ON, PT := T#1S, Q => PUMP2_ON, ET => XY);
IF STOP THEN
PUMP1_ON := FALSE;
PUMP2_ON := FALSE;
END_IF
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Логика управления насосной группой.
STOP:= NOT START;
Так, по моему, гораздо проще и понятнее.
RS(SET := START, RESET1 := NOT START, Q1 => M1);
Так тоже, но зачем у вас тогда тут RS триггер?
Отправлено спустя 1 минуту 51 секунду:
Старайтесь, что бы присваивание переменной у вас было только в одном месте кода, иначе - задолбаетесь при отладке и после переделок.
Отправлено спустя 12 минут 15 секунд:
Таймеры тут не подойдут, как хранилище времени. Так как после выключения установки - они сбрасываются.
Лично я, обычно, завожу генератор (из двух таймеров) на минуту (наработка в часах), и по переднему фронту таймера:
IF POS(TPump1WorkOsc.Q) THEN
Pump1WorkTime:= Pump1WorkTime + 1;
END_IF
Pump1WorkTime - Persistent.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Логика управления насосной группой.
Вообще говоря - время наработки ценная информация, которая должна сохранятся и суммироваться. По наработке насоса планируют его ремонт, поэтому эта информация хранится обычно в энергонезависимых переменных, и сбрасывается специальной командой.
Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.
Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 08 июн 2022, 18:57
- Имя: Андрей
- Страна: Russia
- город/регион: Vladimir
- Благодарил (а): 2 раза
Логика управления насосной группой.
Здравствуйте. Не поделитесь алгоритмом?petr2off писал(а): ↑14 июн 2022, 07:20 Вообще говоря - время наработки ценная информация, которая должна сохранятся и суммироваться. По наработке насоса планируют его ремонт, поэтому эта информация хранится обычно в энергонезависимых переменных, и сбрасывается специальной командой.
Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.
Неправильно описал то, что хотел. "два раза два раза", как гворится.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Логика управления насосной группой.
Там на Контаре была реализация. А у него ST нотации нет в принципе. Т.е. нужно делать скрины - это трудоемко довольно и, простите, просто лень на это время убивать.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 08 июн 2022, 18:57
- Имя: Андрей
- Страна: Russia
- город/регион: Vladimir
- Благодарил (а): 2 раза
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Логика управления насосной группой.
А саму наработку без таймеров как? Делитель времени цикла программы?
ЗЫ. А если один насос не соответствует режиму (выведен на ремонт, на пример)?
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Логика управления насосной группой.
У Контара есть свой ФБ управления насосом. Который именнт выход наработку, и вход сброс наработки.
Если насос в ремонте, то он не участвует в выборе насоса из насосной группы. А так все просто - пришел от датчика уровня сигнал пора - смотрим насос с наименьшей наработкой и включаем. Там конечно все понавороченей было сделано, скажем если что то с гавном богато - включались дополнительные насосы из группы, еще насос мог отключится по перегреву, тогда другой лямку тянул. А еще иногда включались на короткое время насосы с большрой наработкой вне очерели, что бы не "заиливались"
Если насос в ремонте, то он не участвует в выборе насоса из насосной группы. А так все просто - пришел от датчика уровня сигнал пора - смотрим насос с наименьшей наработкой и включаем. Там конечно все понавороченей было сделано, скажем если что то с гавном богато - включались дополнительные насосы из группы, еще насос мог отключится по перегреву, тогда другой лямку тянул. А еще иногда включались на короткое время насосы с большрой наработкой вне очерели, что бы не "заиливались"
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Логика управления насосной группой.
Ну, тут согласен, можно без таймеров ))
Так я задал выше вопрос, как без таймеров наработку насосов посчитать? И предложил вариант
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- авторитет
- Сообщения: 865
- Зарегистрирован: 16 ноя 2016, 11:33
- Имя: Максим Владимирович
- Страна: Россия
- город/регион: Магнитогорск
- Благодарил (а): 16 раз
- Поблагодарили: 223 раза
Логика управления насосной группой.
На Симатиках можно сделать организационный блок, который запускается раз в секунду и просто прибавлять единичку к счётчику наработки. Дальше уже это накопленное значение переводится в минуты/часы/дни без особых проблем...
С Codesys не работал, поэтому можно ли там такое провернуть - утверждать не буду...
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Логика управления насосной группой.
OB в симатике, который вызывается раз в 1с?
Я уже про это писал...
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Логика управления насосной группой.
Блок закрытый - не факт что таймеру сделан (я правильно полагаю, что под таймером мы понимаем групп ФБ (типа TON например),
можно по включению получить системное время, по выключению получить системное время и разность прибавить к счетчику наработки, например.
можно по включению получить системное время, по выключению получить системное время и разность прибавить к счетчику наработки, например.
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Логика управления насосной группой.
Да, все верно, я тоже уяснил.
Именно так FB (TP, TON, TOF) и работают.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.