Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент
Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент
Статьи

Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент

Рассмотрим решение следующей практической задачи:

Необходимо организовать связь двух модулей MP712m Laurent-5 или MP718m Laurent-5G, чтобы один мог управлять другим по сети и обратно - второй модуль в случае события мог отправить команды управления на первый модуль.

Для конкретики, предположим что к первому модулю подключена кнопка (к линии общего назначения IO_1). Нужно что бы при нажатии на нее на втором модуле включалось реле RELE_1.

 

Задача связи двух и более модулей ранее уже рассматривалась в рамках статьи "Дистанционное управление кнопкой по Enternet с помощью mp718m Laurent-5G".

В ней использовался подход передачи Ke-команд управления через HTTP GET запрос с вызова Ke-команды $KE,URL в качестве реакции на событие в системе логических правил CAT. В текущей статье рассмотрим другой вариант возможной реализации - с использованием TCP клиента и команды $KE,PUT.

 

Итак, предположим, что в сети есть два модуля Laurent-5. У первого IP адрес 192.168.0.101, а у второго - 192.168.0.102. Давайте их "свяжем" друг с другом с помощью TCP клиентов. В каждом модуле, помимо TCP сервера, ожидающего подключений клиентов на порту 2424, есть так же и независимый TCP клиент. Ему указываются IP и порт сервера, к которому он должен сам подключиться и пытаться поддерживать связь (переподключаться автоматически, например, после сброса питания или разрыва сети).

По установленному подключению TCP клиент-сервер можно обмениваться Ke-командами управления между модулями в обе стороны, в том числе, в автономном режиме, связав различные события (нажатия кнопок, показания датчиков и т.д.) с отправкой данных по TCP соединению в системе логических правил CAT.

Заходим в WEB интерфейсе 1-го модуля в раздел "TCP клиент":

Задаем IP адрес второго модуля (192.168.0.102) и TCP порт сервера 2-го модуля (по умолчанию - 2424). Включаем TCP клиент соответствующей "галочкой". Если все в порядке (модули оба видны в сети, порт 2424 второго модуля не занят другой программой и т.д.) - статус клиента поменяется на значение "Подключено".

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент TCP Клиент модуля Laurent-5

 

Аналогично настроим TCP клиент 2-го модуля на связь с 1-ым модулем:

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент TCP Клиент модуля Laurent-5

 

Отлично! Теперь между модулями налажена двухсторонняя связь по TCP. Можно уже даже передавать Ke-команды управления с одного модуля на другой, но для начала следует выключить систему безопасности на обоих модулях. Иначе каждый из модулей потребует разблокировки интерфейса через пароль. В данном простом примере ограничимся просто выключением запроса пароля при обмене командами по TCP.

Для этого заходим в WEB в раздел "Общие Настройки" → "Безопасность" и снимаем соответствующую галочку:

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент TCP Клиент модуля Laurent-5




Настало время проверить связку модулей. Для отладки, давайте отправим Ke-команду управления с одного модуля на другой, например команду на включение реле. Для этого воспользуемся Ke-командой $KE,PUT которая будучи выполненной на конкретном модуле позволяет отправить произвольный набор байт данных в указанный интерфейс (TCP сервер, TCP клиент, порт RS-232 и т.д.).

 

Полный список всех Ke-команд поддерживаемых модулем можно найти в соответствующем документе Описание Ke-команд управления

 

Ke-команда для включения, например, 1-го реле выглядит следующим образом:

$KE,REL,1,1

Передадим ее на второй модуль с использованием Ke-комады $KE,PUT. Напомним, что команда позволяет отправить текстовую строку либо произвольный набор символов (включая непечатные) в HEX форме в указанный интерфейс (TCP сервер, TCP клиент, RS-232). Поскольку в теле команды управления реле есть непечатные символы (возврат каретки / перенос на новую строку) - то данные направим в интерфейс TCP клиента в HEX виде.

$KE,PUT,С,H,<Тело Ke-команды в HEX виде>

 

Подробности о том как перевести тело команды из ASCII (печатного текстового вида) в HEX можно найти в статье Конвертор Ke-команд в HEX.

 

Преобразовав команду $KE,REL,1,1 в HEX вид (добавив так же в конец символы возврата каретки и переноса на новую строку 0D 0A), помещаем полученную HEX строку в команду $KE,PUT:

$KE,PUT,C,H,244b452c52454c2c312c310d0a



Можно проверить, что с помощью этой команды выполненной на 1-ом модуле мы сможем включить 1-ое реле на втором модуле. Зайдем в терминал KE-команд в WEB интерфейсе 1-го модуля, скопируем туда эту команду и выполним ее:

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент TCP Клиент модуля Laurent-5

 

На 2-ом модуле произойдет включение RELE_1, в чем можно убедиться через WEB интерфейс. Соответственно, если теперь использовать эту команду как реакцию на событие CAT, то можно автоматизировать управление ресурсами второго модуля при возникновении событий на 1-ом и аналогично в обратную сторону.

 

Займемся системой CAT, но для начала - наладим аппаратные ресурсы. На первом модуле нужно подключить кнопку (или любой механический контакт, например геркон), чтобы детектировать факт его срабатывания. Подключать будем кнопку к линии общего назначения IO_1. Ее нужно перевести в режим "на вход" что бы детектировать уровень напряжения на входе линии.

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Настройка GPIO линий на вход

 

По умолчанию, все IO линии модуля настроены "на выход". Нажимаем на "стрелочку" возле линии IO_1 что бы перевести ее в режим "на вход".

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент GPIO входная линия

 

После изменения направления WEB интерфейс будет выглядеть следующим образом. При этом детектируемый входной сигнал (высокий / низкий уровень) может "плавать", если линию оставить "висящей в воздухе".

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент GPIO входная линия

 

Подключим к линии IO_1 подтягивающий резистор от клеммы +3.3 (напряжение +3.3 В от встроенного стабилизатора напряжения на плате). Теперь, если кнопка (контакт) не нажата, то на линии будет высокий уровень напряжения (+3.3 В через резистор). Если кнопку нажать (замкнуть контакт) - то на линии будет логический ноль ("посадим" IO_1 на землю).

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Laurent-5 Подтягивающий резистор для линии на вход

 

Добавим исходно запрошенную автоматику - отправка команды на включение реле на втором модуле при нажатии на кнопку на 1-ом модуле. Будем использовать систему CAT - редактируемые логические правила.

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Система CAT - программируемая логика

 

Создаем новое CAT событие - по изменению уровня сигнала на линии IO:

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Программируемый логический контроллер KernelChip

 

Выбираем линию IO_1 и тип события - при изменении уровня входного сигнала на линии с высокого на низкий (замыкание линии на "землю").

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Программирование ПЛК Laurent

 

Секцию дополнительных условий пропускаем. Настройки квот можно оставить по умолчанию. На следующем шаге - реакция. Задаем ее в виде списка Ke-команд. В частности, выполним ранее подготовленную команду $KE,PUT с помощью которой направим команду включения реле на 2-ой модуль через соединение по TCP клиенту.

Мастер Кит Прямое взаимодействие двух Laurent-5 / 5G через TCP клиент Программирование ПЛК Laurent

 

На последнем шаге можно дать удобное текстовое имя событию. После создания события оно появляется в списке в выключенном состоянии. Его следует включить с помощью соответствующей иконки.

 

Теперь при нажатии на кнопку подключенную к входной линии IO_1 модуль отправит по соединению TCP клиента набор байт представленных в виде HEX строки 244b452c52454c2c312c310d0a через Ke-команду $KE,PUT. Поскольку TCP клиент 1-го модуля установил соединение с TCP сервером 2-го модуля - он воспримет эти данные как KE-команду и выполнит ее. В частности, включит RELE_1.

Рейтинг@Mail.ru

Почему выбирают Мастер Китнас


Мы в Сети

Я

© 1999-2019 Мастер Кит