Предисловие
Один мой хороший товарищ занимается автоматизацией зданий. И вот как-то за кружкой пива пожаловался он мне на один из объектов, который находится у него в эксплуатации. «Головой» всей тамошней автоматики является ПЛК 100 известного отечественного производителя ОВЕН. Работает он автономно, без постороннего вмешательства, но раз в месяц необходимо с него снимать логи и контролировать общую исправность всей автоматики в здании. Проблема в том, что в шкафу, в котором расположен ПЛК, по каким-то причинам не провели Ethernet от местной сетки. Дотянуть провод, по неким организационным причинам не представляется возможным. И вешать GSM модем нельзя, т.к. шкаф находится в подвале, где нету сети. При этом до шкафа с ПЛК добивает местная Wi-Fi сеть, однако у ПЛК 100 нет Wi-Fi.
И вот приходится каждый месяц ездить на объект с ноутбуком, включаться переходником USB-RS232 в прибор и снимать логи. В результате, я пообещал «допилить» ПЛК, добавив в него Wi-Fi.
Общая идея
Поглядев описание на прибор, я увидел, что на борту он имеет Ethernet, два RS-232 и RS-485. При этом Ethernet, по описанным выше причинам, для меня был бесполезен. RS-485 использовался в качестве полевой шины для управления автоматикой. А вот RS-232 использовался только для снятия логов. Его и было принято решения модифицировать в Wi-Fi.
Для этого требовалось раздобыть UART-WIFI модуль, разобрать ПЛК, найти микросхему UART-RS232 и подпаяться прямо к её UART'у (иными словами, к UART'у внутреннего процессора ПЛК, на котором «сидит» RS232).
Вскрыв корпус ПЛК, около разъемов RS232 были быстренько обнаружены и идентифицированы микросхемы драйверов. Интересно, что для двух разных портов RS232 используются 2 разных драйвера: MAX3232 от Maxim и ADM3251E от Analog Devices.
Ну, для нас это не столь и важно, т.к. драйвер будет удалён с платы и заменён на Wi-Fi модуль.
Вторая часть — поиск Wi-Fi модуля. К нему были выставлены следующие требования:
- выводной монтаж модуля (т.е. не SMD) — чтобы легко было подпаяться к выводам, а не утюжить под него плату
- наличие Transparent режима (мост UART-TCP) — т.е. минимальное число АТ-команд, необходимое для работы
- наличие антенны прямо на модуле или возможность её легкого подключения
- разумеется, управление по UART
- желательно, цена до $10
Первым делом, была идея воспользоваться модулем на базе гремящего на весь рунет чипа esp8266. Но почитав о нём в интернете, не понял есть ли в нем, Transparent режим и к тому же много-то намеков, что пока прошивка с АТ-командами работает недостаточно стабильно. В общем, решил поискать ещё.
В итоге на aliexpress был обнаружен очень подходящий по описанию модуль по имени RAK425. Производитель сего чуда был легко нагуглен по названию модуля. На сайте производителя оказалась вменяемая документация и ещё какие-то файлы, которые я особо и не смотрел. Ребята произвели на меня впечатление «приличных» китайцев, так что было принято решение брать. Правда, штучную продажу найти не удалось, потому купил «упаковку» из 5-ти штучек за $50 не считая доставки — пусть лежат, найду применение и остальным со временем.
Работаем паяльником
Первым делом, открываем даташит на микросхему ADM3251E и ищем контакты для питания её TTL уровня — Vcc, GND (контакты 2 и 10 соответственно). Наш Wi-Fi модуль работает от напряжения 3,3В, поэтому на всякий случай нужно померить чем запитана ADM3251E у ОВЕНа. Вот тут облом — мультиметр показал 4.9В.
Попытаем счастье с MAX3232. По даташиту питание идет на контакты 15 и 16. Мне повезло и питание там 3,3В, так что принимаем решение подключать модуль сюда.
А что, если питание не 3.3В?
Если питание больше, то можно воспользоваться недорогим и легкодоступным линейным стабилизатором напряжения а-ля кренка, в каком-нибудь выводном корпусе типа ТО-92. Типа LP2950CZ-3.3/NOPB — судя по всему должна потянуть по току.
Подготавливаем Wi-Fi модуль, напаяв на нужные контакты 4 провода (Vcc, GND, RxD и TxD в соответствии с распиновкой из документации). Сам модуль можно положить прямо внутрь корпуса ПЛК100. Для того, что бы он там ничего не коротнул заворачиваем модуль в термоусадку.
Теперь находим в даташите на микросхему контакты, к которым нужно подпаять линии RxD и TxD. Выпаиваем драйвер и на его место сажаем наш модуль:
Теперь засовываем модуль внутрь ПЛК и собираем. Всё очень удачно помещается, так что ПЛК выглядит снаружи девственно нетронутым.
Настраиваем W-Fi модуль
Чем мне понравился RAK425, так это красиво реализованным в нём transparent transmission, т.е. прозрачный мост UART-WIFI в нём организовывается вообще без поддержки АТ-команд, т.е. для программы в ПЛК100 передача процесс передачи в комп вообще не пришлось править — он по прежнему считает, что передаёт данные в RS232.
Работает так: после подачи питания модуль поднимает собственную точку доступа. Подключившись ноутом к этой точке, набираем в браузере адрес модуля (по-умолчанию 192.168.7.1) и попадаем на веб-страницу его настройки. Там пишем название Wi-Fi сети к которой хотим подключиться и пароль к ней. А так же параметры TCP соединения: я открыл на модуле TCP-сервер на порту 1234. Перезагружаем ПЛК100 по питанию (а значит и наш модуль) и после рестарта модуль подключается к нашей Wi-Fi сети. Теперь все данные, которые мы отправляет в наш сервер автоматически ретранслируются в UART модуля (а значит и в UART процессора ПЛК100).
Приводить скриншоты процесса настройки не вижу смысла, там всё очень просто, понятно и описано в документации.
На этом в общем-то и всё. Единственное, что потребовалось далее это пробросить порт на IP нашего модуля в роутере на объекте и мониторить состояние автоматики через интернет. Вот уже второй месяц на исходе, как там всё работает и ездить ежемесячно на объект не приходится. Товарищу лафа, мне бутылка коньяка.
Заключение
Цель статьи не в том, что бы показать как прикрутить W-Fi к конткретному ПЛК100 (маловероятно, что аналогичная задача возникнет еще у кого-то), а в том, что бы продемонстрировать один из возможных подходов для установки удаленного доступа к какому-либо оборудованию, которое изначально для этого не предназначено.
Способ проще и быстрее. Но не так захватывающе.
После того как всё было сделано и запущено, мне рассказали о более простом способе реализации того же самого. Как оказалось, многие современные роутеры умеют работать в обратном режиме, т.е. в качестве WAN использовать Wi-Fi, а в качестве LAN — Ethernet. Я этого тогда просто не знал.
Потенциальные минусы такого решения:
Потенциальные минусы такого решения:
- роутер необходимо чем-то питать — не факт что в шкафу есть такая возможность;
- роутер на DIN-рейку стоит дорого и не факт, что так умеет делать. Не DIN-реечный роутер может «не радовать взор» электриков местных