Найти тему

Насосная. Панель шнейдер и хайвел. Часть 4.

Часть 1.

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

Итак, что у нас есть:

  • 6 насосов 2 из которых в резерве, 4 в ротации
  • Насосы могут иметь нерабочее состояние
  • Ротация происходит через равные промежутки.
  • ПИД регулятор.

Начнем с регулятора. У нас 6 насосов. Весь диапазон выхода ПИД сделал 0-600. Т.е. по 100 единиц на насос. (пока ротацию не учитываем)

0-100 - зона работы насоса 1

100-200 - зона работы насоса 2

200-300 - зона работы насоса 3

300-400 - зона работы насоса 4

400-500 - зона работы насоса 5 (назначен для первого резервного)

500-600 - зона работы насоса 6 (назначен для второго резервного)

Допустим, ПИД достиг уровня 350. Т.е. мы должны включить 1,2,3 насоссы на полную мощность, а насос 4 на 50%.

Теперь добавим ротацию. Т.е. для рассмотренного выше случая все без изменений, первый насос - насос1.

Пусть прошло время, произошел импульс ротации, первый насос станет - насос №2. Тогда 2,3,4 должны включится на полную мощность, а 5 на 50%, так до следующего импульса ротации. После шестого, первым снова станет насос №1.

Еще нужно учесть, что насосы могут быть в аварии, или находится в режиме "ручной" или "выключен", в этом случае ротация должна перескакивать на следующий, а если ПИД-регулятор попадает на недоступный, то мы тоже должны это учесть.

С задачами определились, теперь надо как-то сделать :)

Вспомним, что режимы насосов, задание на запуск, флаг аварии, задание скорости отправляемое в плк - это массивы, индекс ы котором - номер насоса.

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

Теперь реализация :

Ротация

Периодическая ротация
Периодическая ротация
Проверка условий и перескок
Проверка условий и перескок

Формирование массива "АВТО"

-4

Может возникнуть вопрос, почему не сделана проверка в макросе, где происходит смена основного насоса. Дело в том, что он вызывается с периодичностью раз в сутки, а за сутки много чего может произойти.

Распределение выхода ПИД по насосам

-5

Идея в том, что ПИД у нас 0-600, а скоростной вход насоса 0-100. ПИД распределяем между насосами. На последний ы списке отправляется остаток.

Запуск резервов

-6

Запуск резервов работает следующим образом. Если Все насосы в авто запущены, а ПИД решил, что нужно еще, то программа пытается запустить первый резерв, потом второй (по необходимости), если первый не доступен, то запускает сразу второй.