1. Нужно выбросить эту программу - потренировались и хватит. Для дальнейших тестов создавать другие минимальные тестовые программы.
Почему выбросить - уже нет места на холсте для продолжения работы, все блоки вперемежку по функциональности.
2. Осознайте масштаб задачи - у Вас 5 узлов в программе (4 насоса и 1 общее для всех насосов).
Каждый узел характеризуется: состояния, активна предупредительная сигнализация, активна защитная блокировка, команда от вышестоящей системы (панели оператора - локальной или удалённой).
Активность защитной блокировки фиксируется на SR-триггере и сбрасывается только от кнопки "сброс" оператором.
Защитная блокировка одного насоса не влияет на другие насосы.
Защитная блокировка от общего узла - останавливает все насосы.
Каждый насос может находится в одном из взаимоисключающем состоянии: в работе, запускается, останавливается, остановлен и готов к работе, остановлен по блокировке, остановлен и выведен в ремонт (при этом нет сигнализации).
3. Таким образом, получаете несколько горизонтально расположенных кодовых фрагментов:
- обработка входных сигналов (AI - в давления, уровни, перепады давлений)
- на основе полученных измерений, качества измерений (достоверность/исправность датчика), состояний DI (кнопок/переключателей/датчиков) формируются предупредительной сигнализации.
- по предупредительным состояниям с задержкой на таймерах формируются фиксирующиеся сигналы блокировок
- по состоянию измерений AI, состоянию DI (кнопок/переключателей/датчиков), блокировок формируются сигналы состояний узлов (насосов и общей части) - в частности готовности к пуску.
- по каким-то условиям формируется сигнал общего пуска.
- дальше идёт алгоритм каскада (количества требуемых к работе), индивидуальной работы насоса
- дальше находится индивидуальный (или один общий для всех) регулятор скорости вращения насоса
Т.е. ещё до рабочего алгоритма нужно много сделать.
По каскаду на такое количество насосов ничего не скажу - не делал и опыта нет. Можете попробовать сделать грубые приблизительные программные модели трубопровода (апериодическое звено 2 порядка), насоса (нелинейная кривая производительности от скорости вращения) и ПЧВ (зависимость тока от скорости - тут нужно что-то другое придумать, не пойму пока) и проверить выбранный алгоритм на модели.
Мне показалось, что речь о сетевых насосах.
Могу предположить, что давление перед насосами стабилизируется подпиткой и расширительным баком.
Таким образом, перепад давления превращается в поддержание постоянного давления в коллекторе после насосов.
Чтобы не зависеть от давления подпитки и поддерживать постоянный расход через теплосеть, можно регулировать перепад на насосе.
Так что, если мои предположения верны, то можно и перепад регулировать.
Думаю, что помимо каскада нужно определиться, какой параметр и как регулируют насосы.
Такой регулятор называется П-регулятор, практически в любом приборе есть, даже самом дешёвом, типа ТРМ1(с аналоговым выходом).
Надо сделать нормальную систему регулирования, а не то что Вы пытаетесь, в смысле, ваша система управления получится очень неустойчивой, мне так кажется!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Готовый код отдать не могу, иначе новички хлеб отнимут, но проиллюстрировать главный холст картинкой векторной графики могу - svg.
Edge не позволяет сильно увеличивать масштаб, поэтому смотрю в редакторе Inkscape.
Сумма слов не равна смыслу фразы
И готовым кодом поделиться не могу, и желания делать за кого-то у меня нет - не сложно, но трудоёмко. Это звучит пафоснее, чем "новички хлеб отнимут".
А по алгоритму, лично мне не понятно, какой алгоритм предполагается, по какому критерию выбирается количество насосов, какая скорость должна быть у каждого из них.
Как-то готовил статью для пояснения.
https://www.cyberforum.ru/blogs/534277/10475.html
И здесь на форуме несколько раз пояснял подход.
Сразу уточню - в статье каскадный регулятор не рабочий, узнал это позже во время ПНР, но статья всё равно не о регуляторе, а а методике, поэтому исправлять не стал.