1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Логика управления насосной группой.

Ответить

Автор темы
Shagrath
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 08 июн 2022, 18:57
Имя: Андрей
Страна: Russia
город/регион: Vladimir
Благодарил (а): 2 раза

Логика управления насосной группой.

Сообщение Shagrath »

Здравствуйте! Звать меня Андреем, ежели тему создал не в том месте, то прошу прощения.

Пытаюсь написать логику насосной группы (переключение агрегатов по наработке по времени), уперся в одном моменте, не знаю как решить.
Пишу в 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) свое состояние не меняют.
Решительно не понимаю, где я не прав. Очень прошу помощи.

Kaskad11
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 19 ноя 2018, 13:53
Имя: Иван
Страна: Украина
город/регион: Полтавщина
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Логика управления насосной группой.

Сообщение Kaskad11 »

Я не очень силён в программировании PLC, хотя когда-то писал простенькие программы. Счетчик на втором насосе обнуляется? При втором проходе система переключает на второй насос, проверяет уставку а она уже равна пороговому и сразу включает первый.

Автор темы
Shagrath
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 08 июн 2022, 18:57
Имя: Андрей
Страна: Russia
город/регион: Vladimir
Благодарил (а): 2 раза

Логика управления насосной группой.

Сообщение Shagrath »

Вы правы! Переписал с другим таймером и все гораздо ловчее получилось.

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
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2340
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1998 раз
Поблагодарили: 176 раз

Логика управления насосной группой.

Сообщение keysansa »

Shagrath писал(а): 11 июн 2022, 23:45 Вы правы! Переписал с другим таймером и все гораздо ловчее получилось.
Shagrath писал(а): 11 июн 2022, 23:45 IF START THEN
STOP := FALSE;
ELSE STOP := TRUE;
END_IF
STOP:= NOT START;
Так, по моему, гораздо проще и понятнее.
Shagrath писал(а): 11 июн 2022, 23:45 RS(SET := START, RESET1 := STOP, Q1 => M1);
RS(SET := START, RESET1 := NOT START, Q1 => M1);
Так тоже, но зачем у вас тогда тут RS триггер?

Отправлено спустя 1 минуту 51 секунду:
Shagrath писал(а): 11 июн 2022, 23:45 IF STOP THEN
PUMP1_ON := FALSE;
PUMP2_ON := FALSE;
END_IF
Старайтесь, что бы присваивание переменной у вас было только в одном месте кода, иначе - задолбаетесь при отладке и после переделок.

Отправлено спустя 12 минут 15 секунд:
Shagrath писал(а): 08 июн 2022, 19:24 логику насосной группы (переключение агрегатов по наработке по времени)
Таймеры тут не подойдут, как хранилище времени. Так как после выключения установки - они сбрасываются.
Лично я, обычно, завожу генератор (из двух таймеров) на минуту (наработка в часах), и по переднему фронту таймера:
IF POS(TPump1WorkOsc.Q) THEN
Pump1WorkTime:= Pump1WorkTime + 1;
END_IF
Pump1WorkTime - Persistent.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1621
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 190 раз

Логика управления насосной группой.

Сообщение petr2off »

Вообще говоря - время наработки ценная информация, которая должна сохранятся и суммироваться. По наработке насоса планируют его ремонт, поэтому эта информация хранится обычно в энергонезависимых переменных, и сбрасывается специальной командой.
Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.

Автор темы
Shagrath
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 08 июн 2022, 18:57
Имя: Андрей
Страна: Russia
город/регион: Vladimir
Благодарил (а): 2 раза

Логика управления насосной группой.

Сообщение Shagrath »

petr2off писал(а): 14 июн 2022, 07:20 Вообще говоря - время наработки ценная информация, которая должна сохранятся и суммироваться. По наработке насоса планируют его ремонт, поэтому эта информация хранится обычно в энергонезависимых переменных, и сбрасывается специальной командой.
Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.
Здравствуйте. Не поделитесь алгоритмом?
keysansa писал(а): 13 июн 2022, 14:27 Так тоже, но зачем у вас тогда тут RS триггер?
Неправильно описал то, что хотел. "два раза два раза", как гворится.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1621
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 190 раз

Логика управления насосной группой.

Сообщение petr2off »

Там на Контаре была реализация. А у него ST нотации нет в принципе. Т.е. нужно делать скрины - это трудоемко довольно и, простите, просто лень на это время убивать.

Автор темы
Shagrath
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 08 июн 2022, 18:57
Имя: Андрей
Страна: Russia
город/регион: Vladimir
Благодарил (а): 2 раза

Логика управления насосной группой.

Сообщение Shagrath »

petr2off писал(а): 14 июн 2022, 15:57 Там на Контаре была реализация. А у него ST нотации нет в принципе. Т.е. нужно делать скрины - это трудоемко довольно и, простите, просто лень на это время убивать.
Понимаю, нет проблем.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2340
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1998 раз
Поблагодарили: 176 раз

Логика управления насосной группой.

Сообщение keysansa »

petr2off писал(а): 14 июн 2022, 07:20 Для КНС я эту задачу решал без таймеров вообще, при превышения уровня выше заданного - включался насос с наименьшей наработкой.
А саму наработку без таймеров как? Делитель времени цикла программы?
ЗЫ. А если один насос не соответствует режиму (выведен на ремонт, на пример)?
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1621
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 190 раз

Логика управления насосной группой.

Сообщение petr2off »

У Контара есть свой ФБ управления насосом. Который именнт выход наработку, и вход сброс наработки.
Если насос в ремонте, то он не участвует в выборе насоса из насосной группы. А так все просто - пришел от датчика уровня сигнал пора - смотрим насос с наименьшей наработкой и включаем. Там конечно все понавороченей было сделано, скажем если что то с гавном богато - включались дополнительные насосы из группы, еще насос мог отключится по перегреву, тогда другой лямку тянул. А еще иногда включались на короткое время насосы с большрой наработкой вне очерели, что бы не "заиливались"
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2340
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1998 раз
Поблагодарили: 176 раз

Логика управления насосной группой.

Сообщение keysansa »

petr2off писал(а): 16 июн 2022, 16:12 У Контара есть свой ФБ управления насосом.
Ну, тут согласен, можно без таймеров ))
petr2off писал(а): 16 июн 2022, 16:12 А так все просто - пришел от датчика уровня сигнал пора - смотрим насос с наименьшей наработкой и включаем.
Так я задал выше вопрос, как без таймеров наработку насосов посчитать? И предложил вариант
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

Parliament74
авторитет
авторитет
Сообщения: 814
Зарегистрирован: 16 ноя 2016, 11:33
Имя: Максим Владимирович
Страна: Россия
город/регион: Магнитогорск
Благодарил (а): 16 раз
Поблагодарили: 211 раз

Логика управления насосной группой.

Сообщение Parliament74 »

keysansa писал(а): 16 июн 2022, 16:43 Так я задал выше вопрос, как без таймеров наработку насосов посчитать?
На Симатиках можно сделать организационный блок, который запускается раз в секунду и просто прибавлять единичку к счётчику наработки. Дальше уже это накопленное значение переводится в минуты/часы/дни без особых проблем...
С Codesys не работал, поэтому можно ли там такое провернуть - утверждать не буду...
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2340
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1998 раз
Поблагодарили: 176 раз

Логика управления насосной группой.

Сообщение keysansa »

OB в симатике, который вызывается раз в 1с?
keysansa писал(а): 16 июн 2022, 13:19 Делитель времени цикла программы?
Я уже про это писал...
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1621
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 190 раз

Логика управления насосной группой.

Сообщение petr2off »

Блок закрытый - не факт что таймеру сделан (я правильно полагаю, что под таймером мы понимаем групп ФБ (типа TON например),
можно по включению получить системное время, по выключению получить системное время и разность прибавить к счетчику наработки, например.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2340
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1998 раз
Поблагодарили: 176 раз

Логика управления насосной группой.

Сообщение keysansa »

petr2off писал(а): 17 июн 2022, 08:17 Блок закрытый - не факт что таймеру сделан (я правильно полагаю, что под таймером мы понимаем групп ФБ (типа TON например),
Да, все верно, я тоже уяснил.
petr2off писал(а): 17 июн 2022, 08:17 можно по включению получить системное время, по выключению получить системное время и разность прибавить к счетчику наработки, например.
Именно так FB (TP, TON, TOF) и работают.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «Вопросы от студентов»