PDA

Просмотр полной версии : ПЛК210 TCP Client нужен рабочий пример



-=Vovka=-
30.04.2021, 09:37
Доброго времени суток!
Осваиваю ПЛК210-4. Необходимо сделать обмен по TCP через сокеты с компьютером. ПЛК в качестве клиента.
Я уже столько информации перелопатил... :mad:
Пожалуйста, поделитесь рабочим примером!
Т.е. чтоб я загрузил проект, который у Вас заработал, в ПЛК, запустил указанную Вами программу на ПК и связь заработала!
ЗЫ. Порты 502 и 4711 на маршрутизаторе проброшены и проверены

Евгений Кислов
30.04.2021, 10:38
Добрый день.
Пример с сайта, безусловно, рабочий.
См. видео: https://dropmefiles.com/Uphpy

Открыл проект с сайта, изменил таргет на ПЛК, обновил компилятор и профиль визуализации до 3.5.14.30.
И указал IP и порт своего ПК в проекте.

Для поднятия TCP-сервера на ПК использовал Hercules Setup Utility.
https://www.hw-group.com/software/hercules-setup-utility

-=Vovka=-
30.04.2021, 11:07
Добрый день.
Пример с сайта, безусловно, рабочий.

Я использую пример с сайта "Реализация обмена через сокеты", "TCP: сервер и клиент (https://owen.ru/product/codesys_v3/example_of_work)"
Кстати, этот пример с ошибками. По загрузке пишет, что "не удалось загрузить одну или более библиотек", а в логе ошибок вот:
54886
Кстати, кодесис как-то интересно количество ошибок считает...

Поэтому создал новый проект и скопировал туда код.
Так вот, ПЛК все время находится в состоянии попытки подключения к серверу, т.е. eState = CREATE
54887

Евгений Кислов
30.04.2021, 11:58
Кстати, этот пример с ошибками.

Этот пример создан для CODESYS V3.5 SP11 Patch 5 (и это указано на сайте), а вы используете CODESYS V3.5 SP14 Patch 3.

-=Vovka=-
30.04.2021, 12:06
Этот пример создан для CODESYS V3.5 SP11 Patch 5 (и это указано на сайте), а вы используете CODESYS V3.5 SP14 Patch 3.
И как конвертировать?

Евгений Кислов
30.04.2021, 13:03
И как конвертировать?

https://youtu.be/vHtfk3lmtdc

-=Vovka=-
30.04.2021, 14:19
https://youtu.be/vHtfk3lmtdc
Спасибо, конвертировал, ошибки пропали, но все равно один и тот же статус: eState = CREATE

Сделал сервер на esp8266. Подключаюсь к esp8266 из Windows - обмен есть, а вот ПЛК молчит :(

Может в ПЛК нужно порт прописать или какой пункт отметить?

Евгений Кислов
30.04.2021, 14:25
Спасибо, конвертировал, ошибки пропали, но все равно один и тот же статус: eState = CREATE

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

-=Vovka=-
30.04.2021, 14:49
Тогда, на мой взгляд, у вас какие-то проблемы на стороне сервера.
Особенно с учетом того, что судя по скрину в другой теме - вы даже не может к нему TCP клиентом с того же ПК подключиться.

Вот не могу понять, где проблема?
Все подключено к маршрутизатору.
Сделал TCP-сервер на esp8266. Эта есп подключается по Wi-Fi к маршрутизатору. Порт в маршрутизаторе проброшен.
Подключаюсь из Windows через hercules в качестве клиента к этой есп - обмен есть. Т.е. сервер работает и маршрутизатор пропускает трафик к есп.
Теперь подключаюсь в качестве клиента из ПЛК - все время один и тот же статус: eState = CREATE

Другой вариант. Делаю на ПЛК сервер. Подключаюсь серверу на ПК в Windows - обмен есть!

Получается, что когда ПЛК-сервер обмен с ПК идет, а вот когда ПЛК-клиент - нет!

Тут либо что-то в программе для ПЛК, либо где-то нужно что-то прописать/включить?

-=Vovka=-
30.04.2021, 15:38
О каком пробросе портов вы все время упоминаете? Ваша есп ведь находится в одной локальной сети с плк, по-моему Вы просто выставили наружу в интернет порт сервера, а локальные участники из-за этого не могут до него до стучаться
Убрал все порты - ничего не поменялось: все варианты работают, кроме ПЛК в режиме клиента!

-=Vovka=-
30.04.2021, 16:48
Ну, т.е. с плк пинг, патчпинг до сервера идут, телнет на порт тоже подключается и только в кдс не соединяется клиент

Я так понимаю: раз ПЛК работает в режиме сервера - а это обмен в обе стороны, но не работает в режиме клиента, при этом сервер к которому ПЛК пытается подключится работает с другими клиентами, то тут либо проблема с программой в ПЛК, либо есть какая-то настройка в ПЛК. Судя по утверждению (https://owen.ru/forum/showthread.php?t=34765&p=355068&viewfull=1#post355068) Евгений Кислова код рабочий, то остается какая-то настройка в ПЛК

Евгений Кислов
30.04.2021, 16:48
Другой вариант. Делаю на ПЛК сервер. Подключаюсь серверу на ПК в Windows - обмен есть!

Получается, что когда ПЛК-сервер обмен с ПК идет, а вот когда ПЛК-клиент - нет!

Тут либо что-то в программе для ПЛК, либо где-то нужно что-то прописать/включить?

Сделайте на ПК сервер, а на ПЛК запустите клиента.
Я уже выкладывал видео, в котором видно, что максимум, что нужно поменять в примере для его запуска - IP и порт.
https://owen.ru/forum/showthread.php?t=34765&p=355068&viewfull=1#post355068

-=Vovka=-
30.04.2021, 17:25
Сделайте на ПК сервер, а на ПЛК запустите клиента.

Вот сделал:
54909

а вот сам проект:
54910

Евгений Кислов
30.04.2021, 18:44
У вас физически какой Ethernet-порт на ПЛК используется?

-=Vovka=-
30.04.2021, 19:14
У вас физически какой Ethernet-порт на ПЛК используется?
Вот этот:
54913

В WEB-конфигураторе кроме IP ничего не менял.

Евгений Кислов
30.04.2021, 19:23
Ок, давайте вы попробуете к TCP-серверу ПК (Hercules) подключиться TCP-клиентом с другого ПК из этой же сети (тоже через Hercules).

-=Vovka=-
30.04.2021, 19:40
нет второго ПК, только мобильник на андроиде

я ж делал TCP сервер на esp8266 и с ПК подключался к нему, а вот с ПЛК не могу!

Евгений Кислов
30.04.2021, 19:48
нет второго ПК, только мобильник на андроиде

я ж делал TCP сервер на esp8266 и с ПК подключался к нему, а вот с ПЛК не могу!

Ок, тогда давайте проведем другой эксперимент.
Запустите исходный пример на виртуальном контроллере на ПК и попробуйте связаться с esp8266.

-=Vovka=-
30.04.2021, 20:34
Ок, тогда давайте проведем другой эксперимент.
Запустите исходный пример на виртуальном контроллере на ПК и попробуйте связаться с esp8266.

54917

А с Hercules работает!

Евгений Кислов
30.04.2021, 20:37
В эмуляции, естественно, работать не будет.


Запустите исходный пример на виртуальном контроллере на ПК и попробуйте связаться с esp8266.

https://owen.ru/forum/showthread.php?t=28167&page=5&p=296706&viewfull=1#post296706

Евгений Кислов
30.04.2021, 20:44
1. Прочитайте, пожалуйста, статью по моей ссылке выше, чтобы отключить эмуляцию и запустить виртуальный контроллер.
2. Я предлагал проверить связь виртуального контроллера и esp, а не виртуального контроллера и Hercules.

-=Vovka=-
30.04.2021, 20:55
В эмуляции, естественно, работать не будет.
https://owen.ru/forum/showthread.php?t=28167&page=5&p=296706&viewfull=1#post296706
Подключиться не получается: какой Gateway выбирать и потом какой активный путь прописывать?
Кстати,вроде запустил через иконку в трее виртуальный контроллер, а кликаю опять на иконке - пункт запуска не стал серым - по идее не запустился. Сколько не кликал - не запускается

Евгений Кислов
30.04.2021, 20:59
Подключиться не получается: какой Gateway выбирать и потом какой активный путь прописывать?

Gateway - localhost, потом Сканирование сети сделать.


Кстати,вроде запустил через иконку в трее виртуальный контроллер, а кликаю опять на иконке - пункт запуска не стал серым - по идее не запустился. Сколько не кликал - не запускается

Через Пуск - Программы запустите.

-=Vovka=-
30.04.2021, 21:06
Gateway - localhost, потом Сканирование сети сделать.
Через Пуск - Программы запустите.

Перезагрузка Windows помогла. Есть связь с esp8266!
54919

Евгений Кислов
30.04.2021, 21:09
Ок, т.е. проблема точно не в проекте.
Тогда я предлагаю подключить ПЛК напрямую к ПК и проверить, не связана ли проблема с какими-то настройками роутера, исключив его из системы.

-=Vovka=-
30.04.2021, 21:26
Ок, т.е. проблема точно не в проекте.
Тогда я предлагаю подключить ПЛК напрямую к ПК и проверить, не связана ли проблема с какими-то настройками роутера, исключив его из системы.

Подключил на прямую, адрес исправил на 192.168.1.1 (забыл переменную открыть)
54920

Евгений Кислов
30.04.2021, 21:30
А пинг с ПЛК до ПК вообще есть?

-=Vovka=-
30.04.2021, 21:35
А пинг с ПЛК до ПК вообще есть?

54921



.

Евгений Кислов
30.04.2021, 21:46
Спасибо.
Я предлагаю 11 мая связаться по TeamViewer, чтобы разобраться с вашей ситуацией.

-=Vovka=-
30.04.2021, 21:49
Хорошо







.

-=Vovka=-
04.05.2021, 14:28
Спасибо.
Я предлагаю 11 мая связаться по TeamViewer, чтобы разобраться с вашей ситуацией.

Нашел я причину!
Оказывается один из файерволов (Windows или встроенный в антивирус Nod32) блокировал соединение, если компьютер выполнял роль сервера!
Если компьютер был как клиент, то трафик не блокировался!
Пришлось esp8266 запрограммировать как клиент и соединения не было!
Скачал для мобильника приложение TCP Client - с компьютером тоже не мог соединиться, а вот с esp8266-сервер было соединение.
В файервол Windows добавил правила на порт - ничего не поменялось.
Тогда полез в настройки защиты сети в Nod32 - как добавить правило не нашел, но выставил "Защита сети"->"Файервол"->"Режим фильтрации" как "Интерактивный режим" и при подключении ПЛК появилось окно с запросом, что делать с этим соединением. Установил, что разрешить это соединение и запомнить навсегда.
Опять зашел в настройки Nod32, но так и не нашел, где добавилось это правило...

В общем все работает! Спасибо всем!

IlyaFD
19.05.2021, 16:02
При подобных работах первое что идет на отключение это антивирус. Жаль раньше тему не видел, написал бы.