И хорошо еще, если география цепей ограничена цеховыми стенами, но довольно часто приходится тянуть кабель в соседний цех, соседний корпус и соседний район.
Широко внедряя шину CAN для связи отдельных блоков своего оборудования я имел возможность протестировать ее возможности на совершенно реальном производстве. Результаты ее работы настолько меня впечатлили в плане надежности и возможностей, что я решил создать полностью свой логический контроллер, который бы не заканчивался одним блоком, а представлял бы собой целую сеть из маленьких модулей, соединенных между собой обычной витой парой.
Первые пять устройств уже полноценно работают, так что мой принцип — никогда не говорить о своих идеях и разработках, пока они не заработают, позволяет мне поделиться результатами.
CAN to LAN адаптер
Одним из базовых устройств, постоянное присутствие которого в системе не обязательно, является адаптер CAN — LAN. Этот адаптер выполняет сразу несколько функций. Во первых, он позволяет подключиться к ПК через USB порт чтобы настроить конфигурацию любого другого блока в сетях CAN и LAN.
Основной же функцией этого адаптера в составе системы является построение моста связи CAN <> LAN — LAN <> CAN. Сразу замечу, я тестировал, передача сигналов по такому маршруту происходит быстрее, чем время срабатывания механического реле.
Таким
образом, можно создавать рои CAN устройств, в какой-то точке
заворачивать CAN в LAN, затем где-то в другом месте, в соседнем цеху,
корпусе, да чего там, другой стране, если есть внешний IP адрес,
такой же адаптер возвращает пакеты обратно в CAN и раздает их другому
рою устройств.
Для шины CAN я использую витую
пару, 4 провода земля, два питание 24В, последняя пара — шина CAN.
Устройства соединяются гирляндой. В одной подсистеме может находиться
до 490 устройств.
Разумеется, все протоколы
обмена данными, арбитража, фильтрации адресов, подписки на устройства
я тщательно продумал и считаю, что всё работает правильно.
Сегмент моста LAN — LAN использует протокол UDP, тем не менее, есть возможность пересылать данные на сервер по HTTP для последующей визуализации на любом устройстве, подключенном к интернету. Или на табло из Smart-TV в режиме киоска.
Как это все работает.
Фундаментально я определил три
логических объекта: вход, выход и переменная. У каждого устройства есть по 5
переменных. У каждой переменной есть два условия, это установка
и сброс.
Изменение состояния входа анонсируется по всей CAN шине и далее, в LAN, если CAN — LAN адаптер подписан на это устройство.
У каждого устройства прописывается до десяти виртуальных входов. Каждый вход связан с любым устройством в сети или с локальной переменной. Например, вход «1» — это 5-й порт этого блока, вход «2» — 3-й вход блока номер «25» в цеху через дорогу, а вход «3» это локальная переменная «4»
Эти виртуальные входы прописываются в функции управления выходами в условно «си-шной» форме.
Выходами являются физические выходы, в данном случае он один, а так же переменные, с точки зрения логики работы они такие же выходы.
У каждого выхода логику работы определяет функция управления. Выглядит она например, так: «(1|(2&! 3) & (! 5|! 7))», т. е. должен быть сигнал на первом входе, или одновременно на втором, но не на третьем и хотя бы один из пятого и седьмого тоже должен быть выключен.
Переменные, как я уже написал, можно устанавливать и сбрасывать. И использовать их состояние в функциях управления другими выходами, в том числе, другими переменными.
У каждого физического входа можно установить таймер задержки включения. Если сигнал появился, но таймер еще не отсчитал, индикатор горит красным, как только таймер досчитает, цвет индикатора поменяется на синий и по шине пробежит событие изменения входных сигналов.
Основой блока выходов является микросхема драйвера L9822E. Она содержит 8 ключей, цепи диагностики и защиты по току. Поскольку она управляется по SPI шине, я посчитал уместным сделать гальваническую развязку с помощью ADuM5401. Микроконтроллер постоянно опрашивает драйвер, не сработала ли защита? Не оборвана ли цепь нагрузки? Всю эту информацию можно получить в любой точке сети. Логику работы входов и выходов я уже описал выше.
Простой PID термоконтроллер
Для сети это точно такое же устройство, как и все вышеперечисленные., только основной его функцией является управление нагревом. Пожалуй, самым удобным и надежным датчиком температуры является герметичный DS18B20, с однопроводной шиной. Именно такой порт есть на борту устройства.
Уставка и ПИД константы задаются через управляющую программу, как и все настройки у остальных устройств. У него тоже есть виртуальные входы и переменные, а также один виртуальный выход, назначение которого — блокировка нагрузки.
Управление нагрузкой может осуществляться двумя способами. Первый — это обычный ШИМ. Скважность регулируется от десятка герц до нескольких минут.
Второй, мой любимый способ управления силовыми нагрузками в сотни киловатт это сигма-дельта модулятор. Первый способ хорошо уживается с контакторами, второй — с симисторами.
Все остальные устройства и датчики, всего, чего угодно, которых я сделал уже больше сотни, тоже могут быть подключены к этой шине. Поддержание температуры и влажности в «чистой комнате», контроль избыточного давления приточной вентиляции, контроль состояния воздушных фильтров, аналоговые блоки управления сервоприводами воздушных заслонок, модули управления частотными преобразователями, блоки управления сервоусилителями. Практически любые функции управления производственным конвейером с передаточными столами, лифтами, роботами — перекладчиками могут быть реализованы за счет сети из таких простых контроллеров. Да, собственно, уже реализованы.