Просмотр полной версии : Ротация насосов
DaHe4ka_c_kape
04.06.2025, 00:26
Лос
5 поплавков ( сухой ход , низ.Сред. Выс. Перелив )
С запуском и настройкой по поплавкам разобрался , теперь не знаю как и какую функцию использовать для ротации насосов по наработке.
Сухой ход без него все 3 насоса будут выкл.
Перелив , все 3 насоса включаются
А вот для оставшихся 3-х поплавков , нужны условия.
При низком уровне , включается 1 насос , меньше всего отработавший
При среднем уровне , включаются 2 насоса , так же меньше всего моточасов
При высок , включаются 3 насоса
На входе есть сигнал о том что насос в работе , можно на этом завязать время работы
Как должна выглядеть функция , помогите ))
In_Da_Cher_A
04.06.2025, 03:18
, теперь не знаю как и какую функцию использоватьобычно используют свою голову :D
для ротации насосов по наработке.в поиск
Как должна выглядеть функция , помогите ))как алгоритм, написанный в среде ОВЕН Лоджик.
реально, прошёлся по страницам - на каждой странице одна две темы про ротацию
весь поиск забит ротацией
но всё, на что тебя хватило - это тупо сделать тему и начать вопить помогите
твой проект - делай сам, не жди что за тебя сделают, думай своей головой
Перелив, видимо так же все выключает.
В поиске есть масса решений. Разобраться в них сложно. Идеи Вас устроят? Насколько хорошо Вы знаете ST?
kondor3000
04.06.2025, 08:45
Здесь есть третий пример
4 насоса_Наработка_Ротация по времени_4 Уровня_7
https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
Делал в свое время для градирни.
Вот, убрал все лишнее
witalexxx
04.06.2025, 10:20
Здесь есть третий пример
4 насоса_Наработка_Ротация по времени_4 Уровня_7
https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
Здравствуйте. К сожалению на SТ построение функциональных блоков делать не умею, подскажите пожалуйста, как Вашу программу переделать на 3 насоса, то есть на объекте планируется использовать не 4, а 3 насоса, как исключить 4 насос, оставив всю логику работы программы с тремя насосами?
kondor3000
04.06.2025, 12:50
Здравствуйте. К сожалению на SТ построение функциональных блоков делать не умею, подскажите пожалуйста, как Вашу программу переделать на 3 насоса, то есть на объекте планируется использовать не 4, а 3 насоса, как исключить 4 насос, оставив всю логику работы программы с тремя насосами?
Откройте в программе ФБ, там всё подписано. В массивах и в кол-ве насосов, где есть 4, заменить на 3.
witalexxx
04.06.2025, 16:12
Спасибо за ответ, но что то не получается, заменил но программа после отработки третьего насоса виснет и дает ошибку в симуляторе. Скрин.84168
При этом ошибок нет в конфигурации кода.
kondor3000
04.06.2025, 16:21
Спасибо за ответ, но что то не получается, заменил но программа после отработки третьего насоса виснет и дает ошибку в симуляторе. Скрин.[
При этом ошибок нет в конфигурации кода.
Вот переделанный проект на 3 насоса - 8
Новый проект с выбором текущего насоса - 9
Новый проект с памятью наработки- 10
witalexxx
05.06.2025, 08:11
Огромное Вам спасибо. Ваш проект можно использовать как основу для решения различных задач - водоотведение, вентиляция, и т. п.
witalexxx
02.07.2025, 15:20
Здравствуйте. А можно в этом проекте после сброса времени ротации каким то образом изменять очередность запуска насосов? После сброса ротации первым всегда запускается первый насос, и, если произведена замена насоса, каким образом можно начать ротацию с замененного насоса, то есть как организовать переход на ручное управление насосами, минуя ротацию для проверки насосов?
Сергей0308
02.07.2025, 15:57
Здравствуйте. А можно в этом проекте после сброса времени ротации каким то образом изменять очередность запуска насосов? После сброса ротации первым всегда запускается первый насос, и, если произведена замена насоса, каким образом можно начать ротацию с замененного насоса, то есть как организовать переход на ручное управление насосами, минуя ротацию для проверки насосов?
Обычно ручное управление делают минуя ПР(автоматику), в смысле, для каждого насоса ставят селекторный переключатель на три положения: включён/выключен/автоматический режим, всё!
kondor3000
02.07.2025, 17:34
Здравствуйте. А можно в этом проекте после сброса времени ротации каким то образом изменять очередность запуска насосов? После сброса ротации первым всегда запускается первый насос, и, если произведена замена насоса, каким образом можно начать ротацию с замененного насоса, то есть как организовать переход на ручное управление насосами, минуя ротацию для проверки насосов?
Можно, в моих проектах можно вывести переменную main и задавать номер включаемого насоса.
https://owen.ru/forum/showthread.php?t=41447&p=465379&viewfull=1#post465379
lord2210
07.07.2025, 09:49
Макрос "Очередь" применить, где-то на просторе форума он есть.
Здравствуйте. А можно в этом проекте после сброса времени ротации каким то образом изменять очередность запуска насосов? После сброса ротации первым всегда запускается первый насос, и, если произведена замена насоса, каким образом можно начать ротацию с замененного насоса, то есть как организовать переход на ручное управление насосами, минуя ротацию для проверки насосов?
witalexxx
07.07.2025, 14:27
Здравствуйте. Внимательно всегда читаю Ваши посты, про селекторный выключатель на три положения видел от Вас информацию в других постах. У меня вопрос больше уходит в диспетчеризацию, что бы оператор мог удаленно отключить насосы и выбрать требуемый насос в работу, либо исключить с работы, там много нюансов и хотелок у начальников. Схема с ротацией на 3 насоса будет дополняться и блоками для дистанционного управления, и блоком учета выкаченной жидкости в кубометрах с учетом объема емкости, и блоками удаленного управления на макросах типа SelShgB (в зависимости от типа переменной). Еще раз спасибо за совет, у Вас есть очень интересные решения на форуме.
Сергей0308
07.07.2025, 21:39
Вот здесь ротацию делали:
https://owen.ru/forum/showthread.php?t=36564&p=385145&viewfull=1#post385145
И, если деактивировать любой из входов, соответствующих включению данного насоса в автоматическую работу, то этот насос будет исключён из ротации и запускаться не будет!
84715
witalexxx
25.07.2025, 12:06
Здравствуйте. В этой программе есть баг. Скриншот 85021. Его суть в том, что при загрузке проекта в ПР200, при тестировании ротации с временем ротации в 60 секунд, при исключении из ротации, в моем случае насоса 2 по аварии, а 1,3,4 продолжали работать в ротации с циклом 60 секунд (маленький цикл ротации выбран для теста силовой части, как поведут себя контакты выходов DO1...DO4, нагруженные на контактор). Но, при снятии аварии с насоса 2 он включался в работу, так как у него была самая маленькая наработка, и, когда оканчивалось время ротации насоса 2 и должен был включиться следующий насос, происходило передергивание выхода DO2, то есть, насос 2 отключался на 0,5 секунды, пытался включиться 3 насос (следующий по минимальной наработке) и сразу отключался, и обратно включался 2 насос, хотя он не должен был априори включаться, у него вышло время ротации, и так происходило 4-5 цикла, постоянно с таким багом выключался насос 2, потом опять пытался включиться насос 3, выключался и опять включался насос 2. Таким образом, насос 2 кратковременно отключаясь при окончании времени ротации, снова включался, не давая отработать цикл ротации остальных насосов, он отработал вместо 60 секунд цикла ротации все 300 в одно лицо. Я программу не корректировал, исходник залил в ПР200, только в макросе изменил время ротации.
kondor3000
25.07.2025, 12:16
Здравствуйте. В этой программе есть баг. Скриншот 85021. Его суть в том, что при загрузке проекта в ПР200, при тестировании ротации с временем ротации в 60 секунд, при исключении из ротации, в моем случае насоса 2 по аварии, а 1,3,4 продолжали работать в ротации с циклом 60 секунд (маленький цикл ротации выбран для теста силовой части, как поведут себя контакты выходов DO1...DO4, нагруженные на контактор). Но, при снятии аварии с насоса 2 он включался в работу, так как у него была самая маленькая наработка, и, когда оканчивалось время ротации насоса 2 и должен был включиться следующий насос, происходило передергивание выхода DO2, то есть, насос 2 отключался на 0,5 секунды, пытался включиться 3 насос (следующий по минимальной наработке) и сразу отключался, и обратно включался 2 насос, хотя он не должен был априори включаться, у него вышло время ротации, и так происходило 4-5 цикла, постоянно с таким багом выключался насос 2, потом опять пытался включиться насос 3, выключался и опять включался насос 2. Таким образом, насос 2 кратковременно отключаясь при окончании времени ротации, снова включался, не давая отработать цикл ротации остальных насосов, он отработал вместо 60 секунд цикла ротации все 300 в одно лицо. Я программу не корректировал, исходник залил в ПР200, только в макросе изменил время ротации.
В программе есть функция минимальной наработки, удалите её и будет переключаться по кругу.
Тут выложены примеры программ, далее каждый делает как ему надо.
witalexxx
13.10.2025, 14:52
Вот переделанный проект на 3 насоса - 8
Новый проект с выбором текущего насоса - 9
Здравствуйте, можно уточнить момент, в программе ротации на 3 насоса при замене времени ротации в макросе через редактирование макроса (версия ПО 2.10.367.0) бывают случаи86152, когда после записи программы в ПР200 и подачи команды enable при разрешении работы в ротации 1 насоса ротация насосов не происходит, запускается первый насос и он не переключается через заданное время, а постоянно находится в работе, только сбросом времени ротации командой Res можно добиться чередования, как обойти такую ситуацию, бывает при пропадании питания на ПР200 и восстановлении ротация насосов не происходит.
kondor3000
13.10.2025, 15:21
Здравствуйте, можно уточнить момент, в программе ротации на 3 насоса при замене времени ротации в макросе через редактирование макроса (версия ПО 2.10.367.0) бывают случаи86152, когда после записи программы в ПР200 и подачи команды enable при разрешении работы в ротации 1 насоса ротация насосов не происходит, запускается первый насос и он не переключается через заданное время, а постоянно находится в работе, только сбросом времени ротации командой Res можно добиться чередования, как обойти такую ситуацию, бывает при пропадании питания на ПР200 и восстановлении ротация насосов не происходит.
В 9 примере, можно руками включить любой из 3 насосов, переменной Main, она выведена на вход.
Либо выведете на вход переменную PT, и задавайте время прямо с экрана, для сброса таймера введите PT= 0.
Это только примеры проектов, каждый делает как ему надо.
Ещё как вариант, можно закоментировать строку с функцией Min3 // Выбор насоса по мин. наработке через 5 час,
тогда насосы будут переключаться не по мин. наработке, а по кругу.
Кроме того, в этих проектах не сохраняется наработка, лучше переделать под 3 насоса восьмой проект отсюда
https://owen.ru/forum/showthread.php?t=38920&page=2#13
OL_2.11.369.0
А куда всё исчезло?
Или этого уже давно ничего нет?
86156
kondor3000
13.10.2025, 18:51
OL_2.11.369.0
А куда всё исчезло?
Или этого уже давно ничего нет?
86156
Это уже второй раз пропало, недавно работало.
witalexxx
06.11.2025, 15:11
Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.86620
Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.86620
вот что ИИ-ассистент говорит:
1) Критично: Вы используете массивы размером [0..3] (4 элемента), но насосы нумеруются от 1 до 3. Индекс 0 не используется, но может быть ошибочно задействован, особенно при арифметике с индексами (j := Sel_1(i>num, i, i-num)).
При этом закомментированы 4–5 насосы, но логика частично все равно поддерживает 5, что создаёт путаницу
2) Ошибки в логике выбора основного насоса. Если все насосы в аварии, то nonorm = num, и цикл не выполнится → main останется в аварийном состоянии.
Позже используется boiler[j] := TRUE только если NOT alarm[j], но если нет исправных насосов, то run = 0, и ничего не запускается — это ОК.
НО: затем есть блок:
if main=0 and ET<=PT1 and not Q then
Main:=Min3_1(T1_,T2_,T3_);
end_if
main=0 — некорректное состояние, так как насосы нумеруются с 1 до 3.
Min3_1(...) возвращает номер насоса? Но если main=0, это ошибка логики
3) Проблемы с таймером и управлением PT1, ET, Q
❌ Нарушена логика управления таймером TON
TON(In:=In or ET=PT1, PT:=PT1, Pause:=Pauz, ET=>ET, Q=>Q);
Условие In or ET=PT1 приведёт к зацикливанию: как только ET = PT1, In снова становится TRUE, и таймер запускается снова мгновенно.
Это приведёт к непредсказуемому поведению: Q может быть TRUE один скан, потом снова FALSE, и т.д.
Поведение не соответствует стандартному TON (обычно In — внешнее условие, а не зависящее от внутреннего состояния таймера).
4) Проблемы с обработкой Res (сброс)
Res устанавливается в true внутри FB, но также является входной переменной.
Это нарушение контракта: входные переменные не должны изменяться внутри FB.
Поведение будет непредсказуемым, если Res используется вне FB.
6) Неявная инициализация и побочные эффекты
amount := amount; // бессмысленная строка
if run>3 then run:=0; end_if // странная защита
if run>3 then run:=0 — если насосов 3, run не может быть >3. Это лишняя проверка или признак ошибки логики выше.
КРИТИЧЕСКАЯ ОШИБКА:
Вы интерпретируете PT как часы, но преобразуете в миллисекунды как будто это минуты.
PT = 5 → PT1 = 5 * 60000 = 300 000 мс = 5 минут, а не 5 часов!
не знаю насколько прав искусственный интеллект, но выглядит убедительно
Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.86620
А Вы не думали о том, чтобы всю программу переписать на ST и раз в 10 упростить?
kondor3000
06.11.2025, 16:56
Добрый день. Периодически приходится возвращаться к ротации насосов на ST. Используя программы ротации на функциональных блоках ST глубокоуважаемого пользователя kondor3000 опять столкнулся с проблемами. В симуляторе все замечательно работает, при заливке в ПР200-24.4, да и в ПР200-24.8 программы ротации, ротация через раз, как работать с этим? Версию использую старую, версия 2.10.367.0. Как победить, уж слишком хороши программы ротации на ST, но почему тогда в симуляторах все работает, а в железе кругом баги? Можно, конечно, сделать ротацию на простых блоках, но очень много места программа занимает.86620
Вы можете сделать скрин в онлайн отладке, когда не работает блок?
Проблема скорее всего в переменной Main, если она слетит, блок не будет работать.
С экрана она не задаётся, то есть пока не досчитает таймер, переключения не будет. А слетать может, если нет защиты от помех при переключении насосов.
witalexxx
10.11.2025, 09:20
А Вы не думали о том, чтобы всю программу переписать на ST и раз в 10 упростить?
Я в ST ничего не делал и не смогу сделать, не изучал. К сожалению, все что связано с ST, приходится использовать чужие разработки и необходимый функционал доделывать на фб. Проекты kondora3000 по ротации очень удобны, но там есть нюансы, я не понимаю, почему чистый проект по той же ротации работает, но как только начинаешь не изменяя функцию (функциональный блок ST) вносить дополнительные блоки, то все ломается? Тут человек целый ИИ для анализа ошибок в программе использовал, но я программу не трогал, только к скаченной добавил функциональные блоки и тут такой букет ошибок, откуда?
witalexxx
10.11.2025, 09:46
Вы можете сделать скрин в онлайн отладке, когда не работает блок?
Проблема скорее всего в переменной Main, если она слетит, блок не будет работать.
С экрана она не задаётся, то есть пока не досчитает таймер, переключения не будет. А слетать может, если нет защиты от помех при переключении насосов.
У меня нет помех для переменной main, ПР200 стоит на стенде и у него идеальные условия работы, нет силовых цепей рядом. По вопросу скрина в онлайн отладке - нужен скрин, когда виснет 1-й насос и блок Up_3nas1 не изменяет свое состояние, в том смысле, что М_Nas постоянно при зависании равно 1, и main не меняется, тоже равен 1, ведь именно так все и происходит при отсутствии ротации, выходит время цикла ротации и нет переключения на следующий насос.
Тут человек целый ИИ для анализа ошибок в программе использовал
может быть целую
Я в ST ничего не делал и не смогу сделать, не изучал. К сожалению, все что связано с ST, приходится использовать чужие разработки и необходимый функционал доделывать на фб. Проекты kondora3000 по ротации очень удобны, но там есть нюансы, я не понимаю, почему чистый проект по той же ротации работает, но как только начинаешь не изменяя функцию (функциональный блок ST) вносить дополнительные блоки, то все ломается? Тут человек целый ИИ для анализа ошибок в программе использовал, но я программу не трогал, только к скаченной добавил функциональные блоки и тут такой букет ошибок, откуда?
Иногда, чтобы ускорить разработку, многие нюансы не учитываются, основываясь не предположении, что входные сигналы будут поступать в систему в строго определенном порядке. В результате, если порядок иной (за счёт добавления новых функций) можно нарваться на "подводный камень".
Для решения таких проблем есть 2 выхода:
- Полный (тщательный и глубокий) анализ чужого кода на предмет выявления этих "подводных камней" с целью их обхода.
- Полностью самостоятельная разработка с целью создания собственных "подводных камней", но о которых Вы будете уже знать.
Я всегда выбираю 2-й путь, т.к. 1-й в итоге всегда приводит ко 2-му.
Если у Вас есть большое желание создать свой собственный продукт, то я готов Вам помочь, при условии, если Вы чётко распишите ТЗ.
witalexxx
10.11.2025, 11:26
Интересно, как коррелируются между собой функции на ST и функциональные блоки? О каких подводных камнях идет речь, если в симуляторе дружат и ФБ и ST, а при заливке в железо все виснет? У меня есть огромный вопрос к ПР200, уже сталкивался с некорректной работой их аналоговых входов CI (кондуктометрических, ПР200 24.8), которые в дискретном режиме самопроизвольно переключаются с 0 в 1 при отсутствии входных сигналов, там физически ничего не подключено, а они барабанят в с 1 в 0, при том, что нет помех, и, поэтому пришлось отказаться от их использования для контроля уровня сточных вод по поплавку. Если на входах ПР ловит глюки, то что говорить о корректной работе всей логики, дружба между циклом работы программы, энергонезависимой, оперативной памятью, хранящей переменные, которые может быть вылетают оттуда при сбросе питания, что объясняет стабильную работу в симуляторе и сбои непосредственно в самом программируемом реле. По вопросу помощи большое спасибо, но очень интересно самому все сделать, есть альтернатива ротации на ФБ, но на ST очень все красиво и компактно. Еще раз спасибо kondor3000, если бы не баги при наполнении основы программы дополнительным функционалом, то его ротации на насосы в разных ипостасях очень гут. У меня на очистных его программа ротации на 5 насосов замечательно трудится, хотя тоже были проблемы с ротацией, ту победил, а эту никак на 3 насоса.8666386664
kondor3000
10.11.2025, 11:57
У меня на очистных его программа ротации на 5 насосов замечательно трудится, хотя тоже были проблемы с ротацией, ту победил, а эту никак на 3 насоса.
Это ведь один и тот же ФБ, 3 или 5 насосов никак не влияют не переключение насосов и скорее всего не работает по другим причинам.
Попробуйте залить подправленный проект. Так же можно вывести задачу таймера РТ на экран, когда зависнет проверить сброс на 0, а потом устанивить 1 (1 мин.).
А если хотите разобраться выложите оба тех проекта.
Интересно, как коррелируются между собой функции на ST и функциональные блоки? О каких подводных камнях идет речь, если в симуляторе дружат и ФБ и ST, а при заливке в железо все виснет? У меня есть огромный вопрос к ПР200, уже сталкивался с некорректной работой их аналоговых входов CI (кондуктометрических, ПР200 24.8), которые в дискретном режиме самопроизвольно переключаются с 0 в 1 при отсутствии входных сигналов, там физически ничего не подключено, а они барабанят в с 1 в 0, при том, что нет помех, и, поэтому пришлось отказаться от их использования для контроля уровня сточных вод по поплавку. Если на входах ПР ловит глюки, то что говорить о корректной работе всей логики, дружба между циклом работы программы, энергонезависимой, оперативной памятью, хранящей переменные, которые может быть вылетают оттуда при сбросе питания, что объясняет стабильную работу в симуляторе и сбои непосредственно в самом программируемом реле. По вопросу помощи большое спасибо, но очень интересно самому все сделать, есть альтернатива ротации на ФБ, но на ST очень все красиво и компактно. Еще раз спасибо kondor3000, если бы не баги при наполнении основы программы дополнительным функционалом, то его ротации на насосы в разных ипостасях очень гут. У меня на очистных его программа ротации на 5 насосов замечательно трудится, хотя тоже были проблемы с ротацией, ту победил, а эту никак на 3 насоса.8666386664
Есть такое выражение "не боги горшки обжигают" - людям свойственно ошибаться. Поэтому такое количество обновлений и релизов выпускаются бесконечно. Тем более, что мы (прикладники) находимся в конце этой "пищевой цепочки". До нас косячат производители чипов, потом схемотехники, далее системные программисты, а потом уже и мы вносим свои. Именно поэтому, чтобы хоть как-то быть "независимым", хоть немного уменьшить зависимость от огромного количества посредников - все свои проекты портирую на Arduino (стараюсь писать на Ассемблере без использования чужих библиотек - где это возможно). Чтобы между мной и процессором был только даташит на него и всё.:o
Если бы Вы знали, на сколько важно уметь составлять ТЗ. Поверьте, если человек не может составить сам себе ТЗ, то он никогда не напишет 100% рабочий код (и не важно на чём - ST, FBD, LD и т.д.)
witalexxx
10.11.2025, 14:54
Это ведь один и тот же ФБ, 3 или 5 насосов никак не влияют не переключение насосов и скорее всего не работает по другим причинам.
Попробуйте залить подправленный проект. Так же можно вывести задачу таймера РТ на экран, когда зависнет проверить сброс на 0, а потом устанивить 1 (1 мин.).
А если хотите разобраться выложите оба тех проекта.
Спасибо, уважаемый kondor3000, залил подправленный проект, на стенде пока все работает.
kondor3000
10.11.2025, 15:37
Спасибо, уважаемый kondor3000, залил подправленный проект, на стенде пока все работает.
Похоже проблема была в потере знака больше, в строке сброса таймера, было так ET=PT1, а должно быть так ET>=PT1
В третьей строке снизу, где сброс таймера и переключение Main:=Main+1;
if Q and ET>=PT1 or Res then PT1:=0; In:=false; ET:=0; Main:=Main+1; end_if
В реальном ПР, переменная ЕТ может проскочить равенство на несколько единиц и сброс не сработает.
Вам надо исправить в обоих проектах. Или вообще удалить кусок and ET>=PT1
И ещё, вы зачем то создали дубликаты всех функций по 2 раза, надо удалить все лишние функции.
Проект выше Запасной 3 редактируемый_2 .owle исправил.
witalexxx
11.11.2025, 11:44
Цитата: <И ещё, вы зачем то создали дубликаты всех функций по 2 раза, надо удалить все лишние функции>. Я так понимаю, дубликаты функций создаются при копировании функционального блока ST? Как правильно переносить функциональный блок на ST из существующего проекта в новый проект, я делал все копированием функциональных блоков, или надо создавать новый функциональный блок на ST и писать в нем код, такой же как в исходном проекте? В исправленном Вами проекте куда то исчезла ротация по заданному времени работы, то есть при изменении уровня давления по входу AI насосы переключаются с ротацией, но ротационный включенный насос будет включен до тех пор, пока уровень давления не упадет до порога выключения насоса, то есть, насос будет работать и не переключается на следующий насос по заданному времени работы, равному 1 минуте. Но при снижении давления до порога выключения насоса следующим уже включиться тот насос у которого минимальная наработка. В принципе и так хорошо, что работает, но что с ротацией пока не пойму. Может быть все же действительно в реальном ПР переменная ЕТ каким то образом проскакивает равенство на несколько единиц и и ротация не сработает по заданной уставке времени ротации?
Может быть все же действительно в реальном ПР переменная ЕТ каким то образом проскакивает равенство на несколько единиц и и ротация не сработает по заданной уставке времени ротации?
Что значит "может быть"? Однозначно проскакивает!!! К гадалке не ходи!
Поменяли насос, сбросили наработку в 0. Он работает скажем 12 часов и должен 2 часа отдохнуть и потом снова кого-то подменить.
И так до тех пор пока его наработка не сравняется со средней наработкой всей группы.
Или как?
Сергей0308
11.11.2025, 12:48
Что значит "может быть"? Однозначно проскакивает!!! К гадалке не ходи!
Поменяли насос, сбросили наработку в 0. Он работает скажем 12 часов и должен 2 часа отдохнуть и потом снова кого-то подменить.
И так до тех пор пока его наработка не сравняется со средней наработкой всей группы.
Или как?
Я тоже подобное всегда пытаюсь спросить, в смысле, обычно, люди "теряются" не понимая как они хотят! Короче, если это такую логику товарищ хочет, то это и есть работа с выравнивание наработки! Если не так товарищ хочет, то это не работа с выравниванием наработки и не надо морочить мозги ни себе ни людям, короче, тогда в своей голове пусть для начала разберётся!
Для чего выравнивать наработку - это отдельный вопрос, наверно его лучше и не затрагивать!
Я почему и топил за ТЗ. Надо сначала определиться со своими "хотелками".
kondor3000
11.11.2025, 13:21
В исправленном Вами проекте куда то исчезла ротация по заданному времени работы, то есть при изменении уровня давления по входу AI насосы переключаются с ротацией, но ротационный включенный насос будет включен до тех пор, пока уровень давления не упадет до порога выключения насоса, то есть, насос будет работать и не переключается на следующий насос по заданному времени работы, равному 1 минуте. Но при снижении давления до порога выключения насоса следующим уже включиться тот насос у которого минимальная наработка. В принципе и так хорошо, что работает, но что с ротацией пока не пойму. Может быть все же действительно в реальном ПР переменная ЕТ каким то образом проскакивает равенство на несколько единиц и и ротация не сработает по заданной уставке времени ротации?
Что то вы понаписали, не понятное.
Время задачи осталось 1 мин (можно менять),
Включение по минимальной наработки сделал только 1 раз (main=0) , потом +1 при ротации. У вас же сброс наработки при включении, какая минимальная наработка вообще может быть, если все наработки по 0.
Вот строка выбора по минимальной наработке. Допишите Q or в начале строки, будет по минимальной работать всегда.
Только при работе по 1 минуте, так не стоит делать.
if Q or main=0 and ET<=PT1 and not Q then Main:=Min3(T1_,T2_,T3_);end_if // Выбор насоса по мин. наработке через 1 мин
Про строку сброса таймера и ротацию +1 уже написал выше.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot