И хорошо еще, если география цепей ограничена цеховыми стенами, но довольно часто приходится тянуть кабель в соседний цех, соседний корпус и соседний район.

Широко внедряя шину 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  в режиме киоска.


Блок входов

Содержит 10 гальванически развязанных входов, из них 8 имеют общую шину и позволяют включать подтяжку «вверх» или «вниз». Еще два входа отвязаны от остальных и могут работать с переменным током.

Помимо входов, на блоке есть один выход — твердотельное реле с защитой до 36В AC/DC.


Как это все работает.


Фундаментально я определил три логических объекта: вход, выход и переменная. У каждого устройства есть по 5 переменных. У каждой переменной есть два условия, это установка и сброс.

Изменение состояния входа анонсируется по всей CAN шине и далее, в LAN, если CAN — LAN адаптер подписан на это устройство.

У каждого устройства прописывается до десяти виртуальных входов. Каждый вход связан с любым устройством в сети или с локальной переменной. Например, вход «1» — это 5-й порт этого блока, вход «2» — 3-й вход блока номер «25» в цеху через дорогу, а вход «3» это локальная переменная «4» 

Эти виртуальные входы прописываются в функции управления выходами в условно «си-шной» форме. 

Выходами являются физические выходы, в данном случае он один, а так же переменные, с точки зрения логики работы они такие же выходы. 

У каждого выхода логику работы определяет функция управления. Выглядит она например, так: «(1|(2&! 3) & (! 5|! 7))», т. е. должен быть сигнал на первом входе, или одновременно на втором, но не на третьем и хотя бы один из пятого и седьмого тоже должен быть выключен.

Переменные, как я уже написал, можно устанавливать и сбрасывать. И использовать их состояние в функциях управления другими выходами, в том числе, другими переменными.

У каждого физического входа можно установить таймер задержки включения. Если сигнал появился, но таймер еще не отсчитал, индикатор горит красным, как только таймер досчитает, цвет индикатора поменяется на синий и по шине пробежит событие изменения входных сигналов.


Блок выходов

Содержит 10 гальванически развязанных выходов, из них 8 имеют общую шину. Выходы имеют защиту по току и возможность диагностики цепи нагрузки. Еще два выхода собраны на отдельных твердотельных реле.

Кроме того, есть один гальванически развязанный вход, AC/DC до 36В

Основой блока выходов является микросхема драйвера L9822E. Она содержит 8 ключей, цепи диагностики и защиты по току. Поскольку она управляется по SPI шине, я посчитал уместным сделать гальваническую развязку с помощью ADuM5401. Микроконтроллер постоянно опрашивает драйвер, не сработала ли защита? Не оборвана ли цепь нагрузки? Всю эту информацию можно получить в любой точке сети. Логику работы входов и выходов я уже описал выше.


Блок на 2 входа и 2 выхода

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


Распределенный программируемый логический контроллер. Юрий Ильин, инженер

Простой PID термоконтроллер

Для сети это точно такое же устройство, как и все вышеперечисленные., только основной его функцией является управление нагревом. Пожалуй, самым удобным и надежным датчиком температуры является герметичный DS18B20, с однопроводной шиной. Именно такой порт есть на борту устройства.

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

Управление нагрузкой может осуществляться двумя способами. Первый — это обычный ШИМ. Скважность регулируется от десятка герц до нескольких минут. 

Второй, мой любимый способ управления силовыми нагрузками в сотни киловатт это сигма-дельта модулятор. Первый способ хорошо уживается с контакторами, второй — с симисторами.


Все остальные устройства и датчики, всего, чего угодно, которых я сделал уже больше сотни, тоже могут быть подключены к этой шине. Поддержание температуры и влажности в «чистой комнате», контроль избыточного давления приточной вентиляции, контроль состояния воздушных фильтров, аналоговые блоки управления сервоприводами воздушных заслонок, модули управления частотными преобразователями, блоки управления сервоусилителями. Практически любые функции  управления производственным конвейером с передаточными столами, лифтами, роботами — перекладчиками могут быть реализованы за счет сети из таких простых контроллеров. Да, собственно, уже реализованы.

Блог