Показано с 1 по 10 из 10

Тема: Работа с сокетами.

  1. #1

    По умолчанию Работа с сокетами.

    Здравствуйте. Нашел на форуме пример (не один) и пытаюсь в нем разобраться. Через комутаторы соединены два контроллера 110-30 m02 и еще я свой ноутбук к ним подключил. Запускаю этот проект в каждом контроллере.
    IP адреса контроллеров 192.127.1.1 и 192.127.1.2.
    Подскажите, правильно ли я понимаю работу проекта?
    1. флаги binitS и binitC инициализирует открытие сокета на сервере и клиенте соответственно.

    2. diClSocket:=TcpClientOpenSocket(502, '192.127.1.1', SIZEOF(BUF_SND)); тут из функции TcpClientOpenSocket с заданными параметрами возвращается дискриптор сокета, я так понял если он не -1 значит сокет открыт.

    3. для сервера так же
    diSrSocket:=TcpServerOpenSocket(502, 2, SIZEOF(BUF_RCV));

    Не соображу где показать контроллеру откуда считывать, есть функции TcpReceiveData и TcpSendData, им же нужно указать друг на друга ( в разных контроллерах) через ADR? Нужно объявить глобальную переменную? Или я вообще не правильно понимаю как происходит обмен?
    Вложения Вложения
    • Тип файла: pro plc2.pro (228.0 Кб, Просмотров: 10)

  2. #2

    По умолчанию

    Вот еще попытки организовать передачу между 2мя ПЛК. Дискрипторы возвращают отличное от "-1" (SOCKET_INVALID) значение, причем это значение постоянно увеличивается, но ничего не передается, связи нет. Что должны возвращать функции SysSockSetOption, SysSockConnect(1,0 "да", "нет"?), SysSockAccept (дискриптор подключившегося порта?) и SysSockInetAddr (в параметрах указан ip адрес сервера) при состоявшемся успешном соединении?
    Вложения Вложения

  3. #3

    По умолчанию

    Вот проекты сервера и клиента, которые заработали. С каждой стороны отправляется string "str" и на каждой стороне принимается в строку "str2". Все бы ничего только после отключения проектов эксперимент повторить не удалось. Обмена нет.
    Вложения Вложения
    Последний раз редактировалось Antadalion; 20.07.2016 в 10:44.

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    Цитата Сообщение от Antadalion Посмотреть сообщение
    Вот проекты сервера и клиента, которые заработали. С каждой стороны отправляется string "str" и на каждой стороне принимается в строку "str2". Все бы ничего только после отключения проектов эксперимент повторить не удалось. Обмена нет.
    ну какое то странное программирование, обычно сервер должен отвечать на запросы, а у Вас после того как клиент подключился сразу идет отправка каких то данных, да может клиент еще не готов принять. И эта пародия на таймаут может еще каким то образом влиять, не совпадать состояния фаз работы у клиента и сервера
    мой пример запускался при каждом включении программы http://www.owen.ru/forum/showthread....ll=1#post83823
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5

    По умолчанию

    Пример взят из видео (http://www.youtube.com/watch?v=ThVLXygHnnU) с описанием сокетов и их работы для CDSv3. Если сбросить питание контроллеров и затем запустить сервер и клиент (последовательность важна), то обмен работает, но стоит лишь остановить кого нибудь, то все, до следующего сброса питания. Можете пояснить, что происходит при сбросе питания, почему сокеты начинают так себя вести? На видео объясняют, что такое явление происходит при работе сокетом в блокирующем режим, а для неблокирующего режима нужна функция SysSockIoctl(hSocket, SOCKET_FIONBIO, ADR(mode)) где mode =1, которая в свою очередь после прочтения тем на форуме превратилась в SysSockSetOption(hSocket,SOCKET_SOL,SOCK_NBIO,0,0) для ПЛК110-30 M02.
    Видео примеры, где обмен работает, и где я пытался его сломать.
    https://yadi.sk/i/WO6resSqtX3fg обмен
    https://yadi.sk/i/So80cUz4tX3hC эксперименты

  6. #6

    По умолчанию

    Все это на самом деле предисловие для использования библиотек OSCAT. При использовании вложенного в библиотеку примера MB_CLIENT в параметрах IP_C видно, что открывается сокет клиента (возвращает дискриптор). А вот пример MB_SERVER при загрузке в контролер и старте вылетает с ошибкой соединения. Кстати все функции SysSockConnect в библиотеке oscat'a приведены в овенский порядок (для срабатывания на -1).

  7. #7

    По умолчанию

    Еще такой вопрос, через библиотеку OSCAT вообще можно организовать чтение SLAVE-конфигурации через конструкцию MB_CLIENT из библиотеки? Или обязательно нужно запускать MB_Serever из OSCAT'A??
    Последний раз редактировалось Antadalion; 26.07.2016 в 10:11.

  8. #8

    По умолчанию

    Пытаюсь реализовать клиент через библиотеку OSCAT. Блок IP_CONTROL2 привел в порядок, через него по TCP идет обмен.(см. скрин screen_IP_CONTROL). При добавлении блока MB_CLIENT для реализации протокола ModBus TCP, возникает ошибка FF 0000 - таймаут соединения (см. скрин screen_MB_CLIENT+IP_CONTROL). Подскажите, может кто-нибудь сталкивался? Во вложении сам проект.
    Изображения Изображения
    Вложения Вложения

  9. #9

    По умолчанию

    В блоке MODBUS_CLIENT массив DATA имеет размер 255, при считывании регистров удается считать только 125 регистров. Можно ли считывать большее количество регистров?

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    Цитата Сообщение от Antadalion Посмотреть сообщение
    В блоке MODBUS_CLIENT массив DATA имеет размер 255, при считывании регистров удается считать только 125 регистров. Можно ли считывать большее количество регистров?
    нет, всё упрется в 9 байт посылки
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Похожие темы

  1. как работать с сокетами ТСР на плк110
    от tishininoff в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.03.2016, 12:13
  2. Работа с сокетами в ПЛК308
    от Sergey_Byk в разделе ПЛК3хх
    Ответов: 1
    Последнее сообщение: 04.10.2011, 13:16
  3. проблема с сокетами
    от yuren в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 23.12.2009, 14:02
  4. Помогите примером работы с сокетами для ПЛК100
    от Заложник овена в разделе Сетевые технологии
    Ответов: 3
    Последнее сообщение: 19.10.2007, 22:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •