Может ли PMP20 одновременно быть клиентом и сервером в сети?
Да, и руководство разбирает именно такой пример: после включения питания контроллер поднимает сразу три независимые задачи связи — клиентскую, серверную и работающую без установления соединения. Каждая живёт на своём номере сокета и со своими регистрами.
Как это выглядит в примере. Адрес контроллера 192.168.0.60, адрес удалённого устройства 192.168.0.100.
- Сокет 1, клиент. Контроллер сам устанавливает соединение с портом 1000 удалённого устройства. Раз в секунду отправляет младшие байты регистров с D1000 по D1549 и принимает ответ в регистры с D1600 по D1999.
- Сокет 2, сервер. Контроллер прослушивает свой порт 1001 и ждёт подключения. После установления связи раз в секунду отправляет данные из регистров с D2000 по D2549 и принимает в регистры с D2600 по D2999.
- Сокет 3, без установления соединения. Локальный порт 1002, удалённый адрес 192.168.0.100, удалённый порт 3000. Обмен идёт с регистрами с D3000 по D3549 на отправку и с D3600 по D3999 на приём.
В каждой из трёх задач предусмотрено восстановление: при нарушении связи соединение закрывается и открывается заново.
Что важно для проекта. Три задачи не мешают друг другу, потому что у каждой свой номер сокета, свой локальный порт и своя область регистров. Именно так строится узел, который одновременно опрашивает подчинённое оборудование и сам отдаёт данные диспетчерской: контроллер выступает клиентом в одну сторону и сервером в другую.
Помните про общие лимиты: сокетов не больше 64, соединений каждого типа не больше 32.
Прикреплённая документация
Георгий Жуков
Ведущий инженер