
Сообщение от
7in
Необходимость переписать на ST появилась в связи с тем, что в других похожих задачах на объекте заложен СПК без ПР и хотелось бы заранее попробовать реализацию на ST(на ПР), т.к. её должно быть легко в будущем перенести на ПЛК/СПК.
Помимо этого, я (возможно ошибочно) предполагал что реализация на ST позволит без больших усилий увеличить количество насосов с 8 до скажем 16, что тоже возможно пригодится.
Действительно, стоило сразу расписать алгоритм:
На вход ФБ подаются две целочисленные переменные
1. Битовая маска разрешенных насосов
2. Необходимое в данный момент количество включенных насосов
На выходе ФБ соответственно битовая маска на включение насосов
Сам алгоритм:
В соответствии с количеством необходимых насосов (поступивших на вход 2) ФБ выдает битовую маску на их включение, при этом включая только разрешённые насосы, начиная с младшего бита в маске.
Для каждого из насосов считается время наработки, в процессе работы при увеличении кол-ва необходимых насосов включается насос с наименьшей наработкой, в случае уменьшения - отключается насос с наибольшей наработкой. Наработка сбрасывается на 0 при перезапуске ПР.
Если в процессе работы изменилась битовая маска разрешенных насосов - необходимо включить/отключить насосы, чтобы необходимое количество соответствовало числу активных бит в маске на выходе ФБ.
Читал множество обсуждений на форуме касательно того, что равномерное распределение наработки между всеми насосами не есть хорошо и приведет к ситуации что в один момент времени выйдут из строя сразу все насосы - я это понимаю и прошу воздержаться от обсуждения данного вопроса, поскольку необходим именно описываемый выше алгоритм.