Найти тему
Будни инженера

Измерение уровня в бункерах

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

Сейчас в бункере два ёмкостных датчика, которые работают не очень надёжно. Пока сделаем как есть, потом датчики поменяем и добавим средний.

Быстро (и без приобретения дополнительного оборудования) можно вывести изображение бункера с датчиками на панели оператора (всего их имеется три штуки, можно вывести на все). Надо будет только немного доработать программы контроллеров и панелей. Впрочем, это я уже сделал.

Выглядеть это будет примерно так:

Измерение уровня в бункерах
Измерение уровня в бункерах

Кроме состояния датчиков (зелёный цвет - датчик “видит” сырьё, серый - “не видит”) будет также отображаться состояние бункера в целом. Оператору так будет удобнее работать - он будет знать, что сейчас происходит - наполнение или разгрузка. Возможны следующие состояния:

  • 0 - пусто
  • 1 - разгрузка
  • 2 - наполнение
  • 3 - авария (неисправность)
  • 4 - переполнение
  • 5 - не определено

Возможно, кому-нибудь пригодится алгоритм определения состояния. Он основан на отслеживании состояния датчиков:

  • Если нижний или средний датчик увидел продукт - наполнение.
  • Если верхний датчик увидел продукт - переполнение.
  • Если верхний или средний датчик перестал видеть продукт - разгрузка.
  • Если нижний датчик перестал видеть продукт - пусто.
  • Аварию пока не определяем, диагностика - это отдельная тема.
  • В остальных случаях - не определено. Хотя остальных случаев, можно сказать, и не будет.

Кроме того, если состояние определяется как переполнение, авария или пусто, то поле с надписью СОСТОЯНИЕ будет красного цвета, чтобы привлечь внимание оператора (см. рис.).

Как привлечь внимание оператора
Как привлечь внимание оператора

Как и где можно реализовать этот алгоритм?

Это можно сделать либо в контроллере, либо в панели.

В контроллере вроде как более правильно, однако тогда придётся передавать в панель дополнительный регистр, а это совершенно ненужная дополнительная нагрузка на канал связи.

Поэтому я сделал всё в панели оператора. Вот здесь я немного рассказал о панелях, которые мы используем. В этих панелях можно реализовать данный алгоритм двумя способами: с помощью макросов на Си либо с помощью таких блоков как “Функциональная область”.

Я выбрал второй путь, поскольку алгоритм простой и нет смысла заморачиваться с написанием макросов, которые к тому же нельзя проверить в режиме эмуляции (а только на реальной панели, которой у меня нет сейчас под рукой).

Завтра мы всё это сделаем - перепрошьём контроллеры и панели уже на месте. Но ещё надо будет сделать индикацию на другом рабочем месте (до него примерно метров 200). Я уже примерно прикинул, как будем это делать. Расскажу позже. Так что подписывайтесь на канал, если не хотите пропустить…

Ну и не забывайте делиться статьёй с друзьями, если сочтёте её полезной для общества )))