Сейчас работаю над отображением уровней в бункере. Производственники попросили сделать, чтобы это было возможно в нескольких участках цеха.
Сейчас в бункере два ёмкостных датчика, которые работают не очень надёжно. Пока сделаем как есть, потом датчики поменяем и добавим средний.
Быстро (и без приобретения дополнительного оборудования) можно вывести изображение бункера с датчиками на панели оператора (всего их имеется три штуки, можно вывести на все). Надо будет только немного доработать программы контроллеров и панелей. Впрочем, это я уже сделал.
Выглядеть это будет примерно так:
Кроме состояния датчиков (зелёный цвет - датчик “видит” сырьё, серый - “не видит”) будет также отображаться состояние бункера в целом. Оператору так будет удобнее работать - он будет знать, что сейчас происходит - наполнение или разгрузка. Возможны следующие состояния:
- 0 - пусто
- 1 - разгрузка
- 2 - наполнение
- 3 - авария (неисправность)
- 4 - переполнение
- 5 - не определено
Возможно, кому-нибудь пригодится алгоритм определения состояния. Он основан на отслеживании состояния датчиков:
- Если нижний или средний датчик увидел продукт - наполнение.
- Если верхний датчик увидел продукт - переполнение.
- Если верхний или средний датчик перестал видеть продукт - разгрузка.
- Если нижний датчик перестал видеть продукт - пусто.
- Аварию пока не определяем, диагностика - это отдельная тема.
- В остальных случаях - не определено. Хотя остальных случаев, можно сказать, и не будет.
Кроме того, если состояние определяется как переполнение, авария или пусто, то поле с надписью СОСТОЯНИЕ будет красного цвета, чтобы привлечь внимание оператора (см. рис.).
Как и где можно реализовать этот алгоритм?
Это можно сделать либо в контроллере, либо в панели.
В контроллере вроде как более правильно, однако тогда придётся передавать в панель дополнительный регистр, а это совершенно ненужная дополнительная нагрузка на канал связи.
Поэтому я сделал всё в панели оператора. Вот здесь я немного рассказал о панелях, которые мы используем. В этих панелях можно реализовать данный алгоритм двумя способами: с помощью макросов на Си либо с помощью таких блоков как “Функциональная область”.
Я выбрал второй путь, поскольку алгоритм простой и нет смысла заморачиваться с написанием макросов, которые к тому же нельзя проверить в режиме эмуляции (а только на реальной панели, которой у меня нет сейчас под рукой).
Завтра мы всё это сделаем - перепрошьём контроллеры и панели уже на месте. Но ещё надо будет сделать индикацию на другом рабочем месте (до него примерно метров 200). Я уже примерно прикинул, как будем это делать. Расскажу позже. Так что подписывайтесь на канал, если не хотите пропустить…
Ну и не забывайте делиться статьёй с друзьями, если сочтёте её полезной для общества )))