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

Тема: Поддержка Socket в ПЛК110 М02

  1. #1

    По умолчанию Поддержка Socket в ПЛК110 М02

    Коллеги!
    Портирую свой проект со старых ПЛК на М02 и с ужасом обнаруживаю, что SysLibSocket не работает, так как раньше на старых ПЛК.
    Буду конечно ещё копать, но может уже всё откопано? Никто не замечал? может всё просто и уже есть рецепт? типа нового SysLibSocket.lib или ещё чего???

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

    По умолчанию

    ну как бы да, постарались привести к более правильному варианту
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну как бы да, постарались привести к более правильному варианту
    Отлично! Очень рад за нас за всех =)
    Не сочтите за труд подскажите, пожалуйста, ссылку где написано как правильно и наиболее близко к стандарту работать с syslibsocket?
    Буду очень благодарен.

    С уважением,
    Шатохин А.В.

  4. #4

    По умолчанию

    msdn.com?
    Пример в студию
    Тролль-наседка, добрый, нежный и ласковый

  5. #5

    По умолчанию

    с удовольствием =)


    VAR_GLOBAL
    state:BYTE:=0;
    counter:WORD:=0;
    yelka_adr:SOCKADDRESS; (* адрес *)
    sock: DINT:=0; (* переменная для хранения сокета *)
    diByte_sINT;
    con_res:BOOL;
    int_for_send: UINT; (*шлём вот такую штуку *)
    END_VAR


    CASE state OF
    0: (* задаём адрес и больше сюда не лазием *)
    yelka_adr.sin_family:=SOCKET_AF_INET;
    yelka_adr.sin_port:=SysSockHtons(80);
    yelka_adr.sin_addr:=16#4EAB40F2; (* *)
    state:=1;
    1: (* здесь сидим 10 секунд *)
    counter:=counter+1;
    IF counter > 10000 THEN
    counter:=0;
    state:=2;
    END_IF;
    2: (* начинаем *)
    sock := SysSockCreate(SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP);
    SysSockIoctl( sock, SOCKET_FIONBIO, ADR(diParam));
    state:=3;
    3: (* коннектимся *)
    con_res:=SysSockConnect(sock, ADR(yelka_adr), SIZEOF(yelka_adr));
    state:=4;
    4: (* отправляем байты *)
    diByte_s:=SysSockSend(sock, ADR(int_to_send), SIZEOF(int_to_send), SOCKET_MSG_OOB);
    state:=5;
    5: (* немного подождали *)
    counter:=counter+1;
    IF counter > 2000 THEN
    counter:=0;
    state:=6;
    END_IF;
    6: (* начинаем заново *)
    SysSockShutdown(sock, 2);
    SysSockClose(sock);
    sock:=0;
    state:=1;
    END_CASE;

  6. #6
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Цитата Сообщение от Андрей Шатохин Посмотреть сообщение
    SysSockIoctl( sock, SOCKET_FIONBIO, ADR(diParam));
    ;
    Если Вы используете неблокирующий режим, то обратите внимание на это
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  7. #7
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию

    Андрей, есть ещё проблема: если Вы пытаетесь передать объём данных >255 байт работать будет только на прошивке 45 и выше. Подробнее читайте тут и ниже.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  8. #8

    По умолчанию

    Всем спасибо за участие, помогли! Разобрались!
    Для всех, кто пойдет следом подвожу итог, лишним не будет - сэкономлю чьё-то время
    (в ссылках что давали выше нет одной ма-а-аленькой детали, которую ещё поискать надо).
    Действительно в М02 сокеты работают, и, как говорят знающие люди, стали ближе к стандартам.
    Моя проблема решилась переводом сокета в неблокирующий режим следующим образом.

    SysSockSetOption( SOCK, SOCKET_SOL, SOCK_NBIO, 0, 0 ) ;

    где SOCK_NBIO: WORD:= 16#1014;

    P.S. А проблемы ограничения передачи 256 байт, как была в старых ПЛК110 с прошивкой 2.15.8, в М02 нет, что то же прям позитив-позитив. =)

  9. #9

    По умолчанию

    И не забываем использовать HTONS и HTONL!
    Тролль-наседка, добрый, нежный и ласковый

Похожие темы

  1. Поддержка Modbus TCP
    от Солнечный заяц в разделе СПК2хх
    Ответов: 77
    Последнее сообщение: 23.04.2018, 02:12
  2. Поддержка МОДУС
    от CheeryNick в разделе Модус 5684-0
    Ответов: 14
    Последнее сообщение: 18.06.2015, 10:15
  3. Socket и ПЛК
    от o_nik в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 01.07.2011, 15:46
  4. ПЛК-150, Ethernet порт для работы с Socket
    от Elka в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 25.01.2011, 13:55
  5. УВАЖАЕМАЯ ТЕХ. ПОДДЕРЖКА!!!
    от Лёша в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 25.08.2009, 11:03

Ваши права

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