Найти тему

Насосная. Панель шнейдер и хайвел. (часть 1)

Оглавление

Ранее я уже чуть-чуть коснулся этого проекта. Состав автоматики : панель shneider, контроллер haiwell, 6 частотников, датчики...

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

Изначально я думал реализовать все функции в ПЛК, а тачпанель для отображения, но потом пересмотрел эту концепцию из-за не особой дружелюбности IDE хайвела, при этом контроллер решил оставить мастером в сети.

Функции в ПЛК:

  • Связь со всеми устройствами
  • Контроль работы насосов
  • масштабирование датчиков
  • ПИД регулятор

Функции в панели:

  • редактирование и хранение уставок
  • человеко-машинный интерфейс
  • ротация насосов
  • распределение нагрузки по насосам.
  • В ТЗ было указано: что 4 насоса в работе (ротации), 2 резервных (включаются, если рабочих не хватает).

Режимы работы насосов:

  • выкл. (выведен из работы)
  • ручной пуск (всегда работает, с постоянной скоростью)
  • автоматический (ротация + ПИД)

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

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

Структура программы в ПЛК

Сейчас у меня нет цели подробно описывать работу в средах программирования для панели и хайвела. Цель - описать структуру, чтоб мог сам вспомнить месяцев через 6, что же я здесь натворил.

получение уставок с панели...
получение уставок с панели...

Красным выделены блоки чтения значений режимов насосов с панели. Изначально, была задумка из панели получать число 0-4, и обрабатывать его в контроллере, но в итоге трансформировалось в решение, обрабатывать режимы в панели (легче сделать ротацию и включение резервов в скриптах в панели). Из панели получаю 0 - выкл, 1 -вкл.

Здесь еще отправка температуры в панель. Статусов насосов (число из двух битов (0- если текущая частота ПЧ больше 0, 1 - насос в аварии (сформированной контроллером) ). По моему в панели не использую (уже не помню :) )

Тупо читаем с панели уставки скоростей для ПЧ
Тупо читаем с панели уставки скоростей для ПЧ
Отправка команд и заданий в ПЧ, чтение текущей скорости из ПЧ
Отправка команд и заданий в ПЧ, чтение текущей скорости из ПЧ

-5

-6

Аварии формируются следующим образом. Если есть команда на запуск ПЧ, и в течении контрольного времени мы видим скорость "0", то фомируем аварию "нет запуска ПЧ". Подразумевалось, что будут прессостаты на насосах, но их нет.

-7

-8

Теперь посмотрим subprogramms

make_uf_cmd (формирователь команды в ПЧ)
make_uf_cmd (формирователь команды в ПЧ)

Формирователь аварии "нет запуска ПЧ"
Формирователь аварии "нет запуска ПЧ"

Не получилось сделать одну функцию для всех насосов, пришлось тупо скопипастить для каждого. Здесь версия с использованием внутреннего тактового генератора (на сименсе сработал такой подход, здесь считает один счетчик и все)

Вспомогательная функция для формирования аварий.
Вспомогательная функция для формирования аварий.

Систему имен в ПЛК использовал следующую:

V1 - режим первого насоса, V2 - второго ...

V11 - контрольное время для первого, V12 - для второго ...

V31 - частота из ПЧ1, V32 - частота из ПЧ2 ...

V41 - статус насоса 1, V42 - статус насоса 2 ...

т.е. номер переменной заканчивается на номер насоса.

Проект делал с большими перерывами, поэтому может чехарда с переменными, но проект работает.

Вкратце так. Осталась тачпанель.

Часть 2