Как я сделал систему мониторинга для башенного крана
В своей практике я встречался со множеством башенных кранов, начиная от «советских» КБ различных моделей и их модификаций, заканчивая современными кранами, в том числе Liebherr. Причем, среди последних я сейчас встречаюсь не только с новыми, а и со старичками, которые иногда старше меня)
Если с новыми кранами все более-менее хорошо (мощная система диагностики практически всех компонентов электросхемы, большой экран с отображением множества параметров, современная схемотехника с использованием ПЧ), то со старичками часто приходится повозиться. Да, релейно-контакторная схема не сложна, но годы дают знать свое.
Отдельным пунктом стоит выделить экран в кабине оператора — ящик с маленьким сегментным экраном, показывающим только значение вылета тележки на стреле. И табличка с грузовой характеристикой, которую нужно выбрать и прикрутить к корпусу в соответствии со смонтированной длиной стрелы.
Старый экран, отображающий одну координату — актуальный вылет.
Прошлый век, в общем (и по смыслу, и по годам изготовления). Используются старые компоненты, которые все сложнее найти в случае выхода из строя, либо можно собрать из двух один).
В качестве датчика в таком дисплее используется потенциометр, установленный в блоке концевых выключателей.
Концевой выключатель с установленным потенциометром.
Естественно, возникла идея заменить старое на что-то более-менее современное. Т.к. для модернизации нужно разрешение завода-изготовителя, получить которое практически невозможно, то решено было сделать систему мониторинга параметров, которая никак не влияет на имеющуюся электрическую схему. По сути, — систему, являющуюся надстройкой.
Имея опыт программирования HMI (ЧМИ) и PLC с PLR, в голове прикинул проект, предложил руководству компании — и получил положительное решение. Значит, пора строить испытательный прототип. И приниматься за программирование.
В качестве HMI я использовал панель DOP-107EV производителя Delta Electronics.
Устройством, отвечающим за логику работы, решил выбрать хорошо знакомое мне программируемое реле EasyE4 от Eaton Electric — выбрал вариант с пружинными клеммами и без дисплея EASY-E4-AC-12RCX1P, и с модулем расширения 4AI+2AO — EASY-E4-DC-6AE1. О них, кстати, писал здесь ранее.
Запитывать панель HMI и модуль расширения было решено от блока питания Delta DRC-24V60W-1AZ — более гармонично смотрится рядом с EasyE4. Да и в надежности и помехозащищённости БП данного производителя я уверен на все 100%.
Вообще, конкретные модели оборудования выбирались исходя из наличия: возможны различные комбинации HMI — PLR, но наличие подводит) Кризис в полупроводниковой сфере и пандемия значительно влияют на ситуацию с ассортиментом и доступностью.
PLR и HMI соединяются при помощи обычного Ethernet-кабеля, протокол связи — Modbus TCP.
Схему прототипа составил следующую:
Схема прототипа системы мониторинга.
Для создания схем я использовал (и рекомендую его) продукт QElectroTech — хорошее, постоянно обновляемое бесплатное ПО с огромной базой компонентов — для небольших схем отличный вариант: я на нем проект на 16 листов с перекрестными ссылками нарисовал как-то:)
Дополнительно для тестового образца была закуплена периферия — различные разъёмы, клеммы, корпуса для панели и PLR, кабели для подсоединения датчиков, монтажные принадлежности (подбиралась периферия, опять же, в близлежащем магазине электротоваров и исходя из наличия).
Один из промежуточных этапов сборки прототипа.
Пока компоненты закупались, я начал программировать. Т.к. с рисованием и программированием интерфейсов у меня опыта больше, чем с программированием PLC/PLR, и в программе DIAScreen для HMI есть встроенный эмулятор — принялся за интерфейс.
Все экраны рисовал в фирменных «либхеровских» цветах — желтом и сером.
Получилось как-то так:
Экран системы мониторинга, установленный в кабине башенного крана.
Главный экран имеет 2 варианта отображения — желтый на сером и серый на желтом. Дневной и ночной режимы, если можно так сказать. Выбирается в настройках.
Общий вид и функционал экрана для крановщика (скриншоты из режима офлайн эмуляции панели, поэтому везде в значениях нули):
Главный экран. Темный режим.
Секция А: тележка стрелы.
А1 — актуальное положение;
А2, А3 — минимальное и максимальное значение вылета согласно смонтированному варианту стрелы;
А4 — максимальное допустимое положение тележки с актуальным грузом согласно установленной грузовой характеристике.
Секция В: Масса груза
В1 — актуальный груз;
В2 — допустимая масса груза на текущем вылете согласно установленной грузовой характеристике;
В3 — процент загрузки — отношение актуального груза к допустимому при текущем положении тележки (В1/В2).
Секция С: Глубина опускания крюка.
С1 — актуальная глубина опускания;
С2, С3 — минимальная и максимальная глубины опускания крюка.
Секция D: Анемометр.
Отображение текущей скорости ветра в м/с и км/ч. Настраиваемая подсветка раздела (предупреждение и запрет работы — оранжевый и красный фон раздела).
Секция E: дополнительная.
На данный момент в ней реализовано отображение грузовой характеристики.
Координаты А1, В1, С1 дублируются в виде прогресс-бара.
В качестве датчика высоты используется потенциометр, аналогичный испоьзуемому для тележки — блоки концевых выключателей однотипны, есть место под установку потенциометра.
В качестве датчика груза будет использован (пока ничего подходящего нет в наличии) датчик линейного положения. Рассматриваемая модель — KL 500–5K0/M-SE.
Среди базовых настроек, доступных оператору, можно установить яркость экрана, дату, время, выбрать светлый либо темный режим отображения.
Экран основных настроек.
Доступ к настройкам для сервисного персонала защищен динамическим паролем: две нижние кнопки становятся видимыми только после ввода корректного пароля.
Сервисные настройки состоят из двух экранов: экран выбора модели башенного крана и экран настроек датчиков.
При выборе и сохранении новой конфигурации башенного крана предыдущие настройки координат (параметры масштабирования датчиков) сбрасываются.
Перед настройкой системы необходимо корректно настроить механические концевые выключатели.
Настройка системы мониторинга сводится к выбору модели и смонтированной длины стрелы крана, при необходимости редактировании данных анемометра, уставок скорости ветрового предупреждения и запрета работы.
Экран настроек типа крана.
После данных настроек нужно перейти на страницу настроек датчиков.
Необходимо последовательно настроить 3 координаты: длину стрелы (предельные значения выставляются автоматически исходя из выбранной конфигурации на предыдущей странице), глубину опускания (устанавливается необходимая) и массу — в качестве эталонной массы вводится масса контрольного груза, который необходим для приемочных испытаний.
Экран настроек отображаемых координат
В нижней строке отображаются значения датчиков в Вольтах — при настройке необходимо следить, чтобы сигнал с датчиков был в пределах 0…10В на всем диапазоне работы.
Программирование PLR было увлекательным :)
Программа написана на языке ST (структурированный текст) — наиболее подошедший из имеющихся для использования с циклами условий, например «IF-THEN-ELSE» или «WHILE-DO».
Предварительно была произведена настройка «железа». В частности, установлен тип сигнала и размерность аналоговых входов и выходов модуля расширения.
Настройка каналов аналогового ввода-вывода модуля расширения.
Настроена передача слов (MW) через Modbus TCP.
Настройка Modbus базового модуля.
На входы программируемого реле (см. схему ранее) подал дискретные сигналы от аварийной кнопки («гриб», I01), включения управления крана (I02), а также сигнал «флюгерного» положения (I03) — когда в нерабочем состоянии кран может вращаться под действием ветра в любую сторону.
После изучения возможностей PLR и имеющихся стандартных функциональных блоков, для отображения актуальных координат были использованы блоки «LS» — блок масштабирования значений. Блок преобразует входной сигнал (в нашем случае сигнал в Вольтах с аналогового входа) в нужную нам величину — метры, тонны, метры в секунду. Ниже пример для преобразования сигнала от потенциометра тележечной лебедки стрелы.
LS01 (
EN := I01 AND I02,
I1 := IA05,
X1 := MW11,
Y1 := MW12,
X2 := MW13,
Y2 := MW14,
QV => MW15
);
EN — разрешение работы блока. Работает при сигналах на дискретных входах I01 и I02 — аварийная кнопка не нажата и управление крана включено, чтобы не загружать реле расчетами во время простоя.
I1 — источник сигнала для масштабирования. В данном случае это первый аналоговый вход модуля расширения.
Нумерация входов в программе.
Координаты X1, X2 — значения сигнала аналогового входа для крайних положений.
Координаты Y1, Y2 — соответствующие значения в метрах.
QV — выход блока — переменная, в которую будет записываться масштабированное значение.
В качестве значений используются слова — их можно перезаписывать и считывать из PLR при помощи HMI при настройке. Например, слову MW15 соответствует координата А1 на главном экране, MW12 и MW14 — координаты А2 и А3.
Аналогичным образом идет расчет координат для глубины опускания, массы груза, скорости ветра.
Еще одно использование блока LS — для формирования сигнала, пропорционального вылету стрелы, на аналоговом выходе. Данный сигнал необходим в случае установки и использования на кране системы антистолкновений при работе нескольких машин на одной стройплощадке с пересекающимися зонами работы (Anti Collision system). Для этой системы используется сигнал 0…3,3В. Данная реализация кода всегда дает сигнал 0,3В при минимальном вылете, и 3,0В при максимальном.
LS05 (
EN := I01 AND I02,
I1 := MW15,
X1 := MW12,
Y1 := 300,
X2 := MW14,
Y2 := 3000,
QV => QA05
);
Отдельного упоминания заслуживает грузовая характеристика. Представляет она собой кривую зависимости допустимой массы от положения тележки на стреле.
Пример грузовой характеристики башенного крана Liebherr 140EC-H6. Источник: liebherr.com
Проштудировав инструкцию к EasyE4, нашел функциональный блок PM — блок кривой нагрузки. «Идеально подходящий» -, подумал я. Настройка данного блока заключается во внесении данных в таблицу. Первый столбец — вылет, второй — соответствующая масса. Запустил эмуляцию, проверил — работает.
Настройка блока PM — поле характеристической кривой.
Но не тут-то было. Всего таких блоков в памяти реле можно использовать аж 4 штуки. А учитывая, что на каждую из кривых надо 2 блока (зависимость массы от вылета и обратная зависимость — вылета от массы), получается, что можно внести только 2 характеристики. А для кранов может быть и 4, и 6, и даже 10 вариантов характеристик, зависящих от смонтированной длины стрелы и запасовки. И самый большой минус — данные в табличную часть можно занести только вручную (правая часть скриншота выше — задаваемые точки). Обращался по этому поводу в официальную техподдержку — на данный момент возможности вносить данные через протокол связи нету. А каждый раз загружать новую программу, отличающуюся только внесенными данными — не самый лучший вариант. Тем более, если в планах расширять функционал, вносить правки во множество программ, отличающихся только значениями в таблицах — не самый разумный подход.
Что ж, пришлось искать выход из положения. Фактически, кривую нагрузки можно рассматривать как последовательность прямых отрезков. Разница значений на малых радиусах между кривой и спрямленной линией небольшая, а на конце стрелы так вообще кривую нагрузки не отличить от прямой.
Что дает возможность использования все того же блока LS, передавая в него ближайшие меньшую и бОльшую известные координаты кривой нагрузки. А вот данные конкретной характеристики можно загружать из панели. Для этого я использовал такой инструмент, как наборы рецептов.
Окно ввода наборов данных («рецептов»).
Именно эту функцию делает страница настроек с выбором модели крана и длины его стрелы — загружает в PLR нужный набор значений вылета стрелы и соответствующих им грузоподъемностей. Как дополнительное удобство — данные в «рецепты» можно импортировать через csv-файл, подготовленный во внешнем редакторе. Но нужно учитывать, что тот же Excel, либо Google Sheets, при открытии по умолчанию производят конвертацию форматов данных в csv, и нужно либо отключать эти конвертации, либо использовать другие редакторы.
Каждый из рецептов представляет собой строку длиной 50 слов, первые 25 ипользуются для значений вылетов, остальные — для соотвествующих значений. Если в конкретной кривой нагрузки меньше 25 значений, то оставшиеся ячейки заполняются нулями. При вызове всплывающего экрана проверяется условие «значение > 0», что является условием видимости значения на экране.
if (screen.IsOpen(10) == 1) then
if (mem.static.Read(101) == 0) then
mem.inter.WriteBit(1, 1, 0)
else
mem.inter.WriteBit(1, 1, 1)
end
if (mem.static.Read(102) == 0) then
mem.inter.WriteBit(1, 2, 0)
else
mem.inter.WriteBit(1, 2, 1)
end
… и т.д. для первых 25 байтов данных активного рецепта (байт 26 содержит значение массы для первого байта с вылетом, 27-й для 2-го, и т.д., поэтому проверять все 50 байтов нету смысла).
Таким образом, при построении характеристики видны только значащие цифры.
Отображение грузовой характеристики в табличном виде.
В зависимости от комбинации сигналов на входах I01…I03 возможно отображение всплывающих экранов состояния крана.
Состояния крана: 1) Требуется включение управления, 2) Нажат аварийный выключатель, 3) Кран во флюгерном положении, 4) Кран во флюгерном положении, аварийный выключатель нажат.
На данный момент тестовый вариант системы смонтирован на башенном кране и проходит обкатку. Уже есть несколько мыслей по добавлению функционала, которые будут реализованы с ближашем будущем.