Необходимость переписать на ST появилась в связи с тем, что в других похожих задачах на объекте заложен СПК без ПР и хотелось бы заранее попробовать реализацию на ST(на ПР), т.к. её должно быть легко в будущем перенести на ПЛК/СПК.
Помимо этого, я (возможно ошибочно) предполагал что реализация на ST позволит без больших усилий увеличить количество насосов с 8 до скажем 16, что тоже возможно пригодится.
Действительно, стоило сразу расписать алгоритм:
На вход ФБ подаются две целочисленные переменные
1. Битовая маска разрешенных насосов
2. Необходимое в данный момент количество включенных насосов
На выходе ФБ соответственно битовая маска на включение насосов
Сам алгоритм:
В соответствии с количеством необходимых насосов (поступивших на вход 2) ФБ выдает битовую маску на их включение, при этом включая только разрешённые насосы, начиная с младшего бита в маске.
Для каждого из насосов считается время наработки, в процессе работы при увеличении кол-ва необходимых насосов включается насос с наименьшей наработкой, в случае уменьшения - отключается насос с наибольшей наработкой. Наработка сбрасывается на 0 при перезапуске ПР.
Если в процессе работы изменилась битовая маска разрешенных насосов - необходимо включить/отключить насосы, чтобы необходимое количество соответствовало числу активных бит в маске на выходе ФБ.
Читал множество обсуждений на форуме касательно того, что равномерное распределение наработки между всеми насосами не есть хорошо и приведет к ситуации что в один момент времени выйдут из строя сразу все насосы - я это понимаю и прошу воздержаться от обсуждения данного вопроса, поскольку необходим именно описываемый выше алгоритм.
Вы понимаете, что такое наработка насосов? В смысле она не зависит от количества перезапусков ПР.
И что при изменение готовых(разрешённых) к работе насосов надо их передёргивать(выключать-включать) - это мракобесие, в смысле мой вариант свободен от этих недостатков.
Так что можно и мой вариант использовать, в смысле, большой разницы не будет.
Да, чуть не забыл, мой вариант позволяет в случае аварии включать ему на замену другой без всяких передёргиваний насосов, хоть убей не могу понять зачем у вас это сделано, это же очень неудобно!
И, легко расширяется до 32 насосов, я писал об этом в теме, что ссылку дал, не просто, а очень просто, думаю намного проще чем в СТ!
Мой алгоритм выполняет равномерное использование готовых к работе насосов!
Последний раз редактировалось Сергей0308; 27.12.2023 в 12:32.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Что такое наработка я понимаю, что она никак не связана кол-вом перезапусков ПР я тоже понимаю. Я просто хотел обозначить что не нужно считать наработку "за все время", достаточно только с момента включения контроллера.
Касательно "передёргивать" - возможно некорректно выразился, я под "включить/отключить" подразумевал не перезапуск всех насосов, а то, что если один из работающих насосов ушел в аварию - нужно насос с аварией отключить и включить ему на замену другой из разрешенных.
Приведенную вами ссылку на ваше решения я изучаю в данный момент, возможно действительно получится применить в моём случае. Спасибо!
Последний раз редактировалось 7in; 27.12.2023 в 12:43.
Вот накидал для 4 насосов, на ST, при желании можно расширить до 16 и больше. Кроме маски аварий и кол-ва необходимых насосов, 1 Работа насосов.jpg
вывел наработку по 4 насосам в секундах (можно сделать в минутах и часах). Наработка считается как Нараб=Часы*10000+Мин*100+Сек.
Если наработка не нужна, можно её убрать на выходах. Переключаться будет всё равно.
Ротация происходит через 10 часов ( можно изменить), по минимальной наработке. При аварии переключается на следующий исправный насос.
При включении ПР наработка сохраняется, сброс сделать не проблема, например по таймеру ТР на 0,5 сек ( ручной сброс есть).
Последний раз редактировалось kondor3000; 30.12.2023 в 23:08.
Только берите последний пример с запоминанием наработки. https://owen.ru/forum/showthread.php...l=1#post426052
Достаточно задачу PT1 перенести из VAR в VAR_INPUT, потом обновить ФБ по ПКМ и все дела)
Последний раз редактировалось kondor3000; 26.03.2025 в 14:40.