TCP Connector соединит несоединимое
Содержание
Зачем это надо?
Приходилось ли вам сталкиваться с ситуацией, когда почти всё хорошо подходит друг к другу и должно бы работать, но состыковать не получается - ответные части системы, как назло, не стыкуются?
В системах телеметрии и автоматики такое случается сплошь и рядом. Производители оборудования, к сожалению, не продумывают все варианты его подключения, которые могут возникать у пользователя, и реализуют лишь то, что посчитали необходимым. Наиболее привычная роль для большинства OPC серверов, способных работать с оборудованием по IP сети, - TCP клиент. OPC сервер - это программа-прослойка между оборудованием и SCADA-системой, которая ведет общение с оборудованием производителя по его собственным протоколам или по стандартным (к примеру, Modbus TCP), с последующим преобразованием к интерфейсу межпрограммного обмена OPC (древний OLE, который допилили и приспособили как стандартное средство обмена между ПО систем автоматики).
Работа в качестве TCP клиента предполагает, что оборудование выступает в роли TCP сервера, то есть принимает подключения от удаленных клиентов. В качестве примеров таких серверов на ум приходят KEPServer, OPC-сервер Modbus MasterOPC, OPC-сервер "ЛОГИКА". Они позволяют подключиться к удаленным устройствам по протоколу TCP и выполнять их опрос, но вот подключение по инициативе удаленного устройства - невозможно. Сценарий, когда устройство подключается к серверу, не предусмотрен, хотя это ничему не противоречит. Ведь опрос ведется по протоколу прикладного уровня, а протокол TCP всего лишь обеспечивает передачу данных туда и обратно между OPC сервером и устройством.
Для дополнительной ясности сути проблемы приведу примитивную аналогию. Представьте, что из стены, вместо розетки 220 В, торчит вилка. И из вашего телевизора тоже выходит провод с вилкой. Вы точно знаете, что это не ошибка, и на торчащей из стены вилке есть 220 В - просто электрики почему-то решили вместо розеток поставить вилки. Конечно же, всё просто - вам нужен специальный переходник, состоящий из двух розеток, соединенных отрезком электрического кабеля. 🙂 Может случиться и обратная ситуация - в стене электрическая розетка, и в вашем электроприборе - тоже розетка. Тут, очевидно, помог бы соединительный кабель с двумя вилками на концах. А еще бывает ситуация, когда нужен вполне традиционный удлинитель - вилка с одной стороны и розетка с другой, но чтобы был защищен предохранителем...
Сервер в сетевом протоколе TCP очень похож на розетку, а клиент - на вилку. А программа TCP Connector - это универсальный кабель-переходник, которым можно соединить серверы (розетки) и клиенты(вилки) совершенно любым образом. И между ними пойдет обмен данными как ни в чем ни бывало (потечет электрический ток). Можно соединить TCP сервер с TCP сервером или TCP клиент с TCP клиентом. Можно и традиционно, как в рядовом прокси-сервере, - клиент подключаем к серверу через программу TCP Connector, которая, собственно, является клиентом для сервера, и сервером - для клиента.
Еще можно сказать, что TCP Connector позволяет "вывернуть наизнанку" TCP сервер, превращая его в TCP клиента. Или же, наоборот, превратить TCP клиента в TCP сервер! И, в качестве дополнительной плюшки, он следит за состоянием подключения, и при длительном отсутствии обмена (более 10 минут), его (TCP соединение) корректно завершает и перезапускает (это если бы вываливалась вилка из розетки, а её кто-то все время аккуратно вставлял обратно). Это очень актуально, в виду того, что 90% виденных мною контроллеров систем автоматики и телеметрии, общающихся по TCP, рвут TCP сессии как попало, и оборванное подключение может висеть если не часами, то по полчаса - запросто (зависит от многих факторов и настроек оборудования и программ на пути маршрутизации данных через сети операторов связи и Интернет). А некоторые, написанные "оптимистичными программистами", сервера опроса находятся в полной уверенности, что всё хорошо, и до посинения ждут ответов на свои запросы от уже давно ушедшего со связи устройства. Особенно регулярно такое происходит при передаче данных через сети мобильной связи (GPRS), а усугубляется - низким уровнем сигнала в месте установки телеметрического контроллера.
Да, есть еще одна плюшка - перед вами предстают все данные обмена, то есть TCP Connector заменяет сниффер, и оказывается полезен как при отладке оборудования и программ для работы с ним, так и при необходимости разобраться с "чужим" протоколом на уровне байт.
Программа TCP Connector не блещет миловидным интерфейсом (скриншоты кликабельны), но это и не её задача. Она очень легко настраивается и достаточно надежно работает. После настройки, при каждом последующем запуске, она автоматически восстанавливает все сконфигурированные подключения (количество коих не ограничено). Это позволяет добавить её в автозагрузку (к примеру, с помощью планировщика Windows) и использовать в составе комплекта ПО сервера телеметрии. Приблизительно таким образом предшественница TCP Connector (с несколько меньшими возможностями) в режиме 24/7 успешно работает, позволяя OPC-серверу "ЛОГИКА" опрашивать свою железку (тепловычислитель в котельной) через GPRS телеметрический контроллер, не имеющий собственного белого IP адреса, и подключающийся к серверу телеметрии в качестве TCP клиента.
Настройка
Настройка TCP Connector заключается в создании правил обмена данными. В каждом правиле есть две стороны, достаточно условно именуемых сокетами. Для каждого сокета необходимо и достаточно указать:
1. режим работы - сервер или клиент;
2. порт - для сервера это порт, который будет прослушиваться, а для клиента - порт, к которому следует подключиться;
3. только для режима "клиент" - IP адрес или имя узла, к которому необходимо подключиться.
Также для каждого правила можно (но не обязательно) выбрать цвет шрифта и режим отображения в журнале обмена - ASCII (то есть текст) или HEX (то есть все байты данных будут выводиться в виде их 16-ричных значений). Журнал обмена удобен для отладочных целей, его емкость ограничена 10 000 строк текста (дабы не оказывать излишнюю нагрузку на процессор и память).
Если в редактируемом правиле обмена указаны уникальные настройки для обоих сокетов, то, при нажатии на кнопку Применить, оно будет добавлено как новое правило. Если же настройки хотя бы одного из сокетов совпадают с уже имеющимся в списке правилом, то новое правило не создается, а изменения вносятся в уже существующее правило.
Чтобы удалить правило обмена, его нужно выделить в списке и по правой кнопке мышки вызвать всплывающее меню, в котором выбрать пункт Удалить.
Все правила сохраняются и применяются автоматически при нажатии кнопки Применить, и при последующих запусках TCP Connector они активируются также автоматически.
Не забудьте настроить разрешения на доступ в сеть для TCP Connector в брандмауэре Windows и/или фаерволе и антивирусе. В корпоративных сетях также следует помнить, что сетевые соединения (входящие - особенно) с вероятностью 99% может рубить сисадмин на своих роутерах, и с ним нужно обязательно согласовать все детали.
Скачать TCP Connector
Инсталлятор программы TCP Connector доступен по этой ссылке. Программа бесплатная, без рекламы, спама и других пакостей. 🙂
СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Как долго искал.
Пробовал виртуальные порты связывать через com2com, та ещё история, а так всё просто!!!
Спасибо!!!!
Осталось поставить в автозапуск.
Добрый день!
Будет ли дополнение для UDP протокола.
Добрый день, Дмитрий. Будет ли обновление версии этого приложения? Принимаются ли замечания к работе приложения или можно ли кому-либо задавать по нему вопросы? Заранее спасибо за ответ
Добрый день, Михаил!
По поводу обновления - если будут найдены ошибки в работе ПО, обновление выпустим. Замечания к работе всегда принимаем и пожелания тоже, вопросы задавайте - можете писать в комментариях и на почту albina.pavlenko.90@gmail.com.
Cпасибо большее, отличная программа, особенно для отладки собственных девайсов.