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

Тема: ПЛК100 HTTP-запрос методом GET

  1. #1

    По умолчанию ПЛК100 HTTP-запрос методом GET

    Добрый день! Хотелось бы узнать, есть ли возможность ПЛК100 послать HTTP-запрос методом GET другому устройству в локальной сети?

  2. #2
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    можно, если есть опыт

  3. #3

    По умолчанию

    Не подскажете, в каком направлении копать? Есть ли какие то примеры?
    Я так понимаю, это связано с библиотекой SysLibSockets.lib?

  4. #4
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Угу, ищите библиотеку оскат-нетворк, там есть клиент хттп

  5. #5

    По умолчанию

    (* ПЕРЕМЕННЫЕ СОКЕТА *)
    CONNECT: BOOL;
    STATE: INT := 0;
    SOCK: DINT;
    SOCK_ACC: DINT;
    TCP_ADR: SOCKADDRESS;
    ACC_ADR: SOCKADDRESS;
    PADDR: DWORD;
    RES: BOOL;
    PARAM_CTRL: DINT;
    RCV_BYTES_CNT: DINT := 0;
    SND_CNT: DINT := 0;
    SYMBOL_COUNT: DWORD := 0;
    ANSVER_REQ: BOOL := FALSE;

    P_DINT: POINTER TO DINT;
    P_BYTE: POINTER TO BYTE;
    DATA: BYTE;
    (* ЗАКОНЧЕНЫ ПЕРЕМЕННЫЕ СОКЕТА *)


    (* ОТКРЫТИЕ СОКЕТА - ОБМЕН С КОМПЬЮТЕРОМ *)
    SOCK := SysSockCreate( SOCKET_AF_INET, SOCKET_STREAM, SOCKET_IPPROTO_TCP );
    TCP_ADR.sin_family := SOCKET_AF_INET;
    TCP_ADR.sin_port := 5555;
    TCP_ADR.sin_addr := SOCKET_INADDR_ANY;
    PADDR := ADR( TCP_ADR );
    RES := SysSockBind( SOCK, PADDR, SIZEOF( TCP_ADR ) );
    RES := SysSockListen( SOCK, 1 );
    PADDR := ADR( ACC_ADR );
    SOCK_ACC := SOCK;
    PARAM_CTRL := 1;
    SysSockIoctl( SOCK_ACC, SOCKET_FIONBIO, ADR( PARAM_CTRL ) );
    CONNECT := FALSE;
    (* ЗАКОНЧЕНО ОТКРЫТИЕ СОКЕТА *)


    (* СВЯЗЬ С ХОСТОМ *)
    RCV_BYTES_CNT := SysSockRecv( SOCK_ACC, ADR( RCVBUF[ 0 ] ) , 1536, SOCKET_MSG_OOB ); (* ЧИТАЕМ БУФЕР *)
    IF ( RCV_BYTES_CNT > 0 ) AND ( RCVBUF[0] = 104 ) AND ( RCVBUF[1] = 111 ) THEN (* ПРЕРЫВАЕМ ЦИКЛ ЕСЛИ НЕТ ПРИНЯТЫХ БАЙТ *)
    (* обработка принятого сообщения *)

    CASE BYTE_TO_INT( RCVBUF[4] ) OF
    0: (* УПРАВЛЕНИЕ *)
    (* ПОСЫЛКА ОТ ХОСТА В КОНТРОЛЛЕР *)
    READ_DATA();
    END_CASE

    ANSVER_REQ := TRUE;

    ELSE
    (* ОТВЕТ ГЕНЕРИРУЕМ В СЛЕДУЮЩЕМ ЦИКЛЕ ПОСЛЕ ОБРАБОТКИ ЗАПРОСА *)
    IF ANSVER_REQ THEN
    ANSVER_REQ := FALSE;
    (* ПОСЫЛКА ОТ КОНТРОЛЛЕРА В ХОСТ *)
    WRITE_DATA();
    SYMBOL_COUNT := WRITE_DATA.COUNT;
    SND_CNT := SysSockSend( SOCK_ACC, ADR( SEND_BUF[ 0 ] ), SYMBOL_COUNT, 0 );
    END_IF (* ANSVER_REQ *)
    END_IF (* RCV_BYTES_CNT > 0 *)
    (* ЗАКОНЧЕНА СВЯЗЬ С ХОСТОМ *)


    ...........
    здесь сервер, для клиента сначала нужно отправлять запрос а потом ждать ответ
    в запросе должна быть строка

    GET http://www.yandex.ru/index.htm$R$N$R$N

    ну или подобное для вашего сайта

  6. #6
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Дмитрий слегка перепутал, задача из плк отправить пк запрос, а не в качестве веб-сервера использовать контроллер

Похожие темы

  1. укт38 . согласно протоколу необходимо делать запрос.
    от aha в разделе Сетевые технологии
    Ответов: 0
    Последнее сообщение: 28.10.2010, 08:33
  2. запрос архивного файла по 485
    от Антон12345 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 04.03.2010, 14:33
  3. Запрос ключа при входе в Codesys
    от Назаров Александр в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 17.08.2009, 13:42
  4. Запрос ТРМ-201
    от hilih в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 13.04.2009, 11:10

Ваши права

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