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

Тема: ПЛК100+PING(ICMP)+ROUTER

  1. #1

    По умолчанию ПЛК100+PING(ICMP)+ROUTER

    Здравствуйте
    Вот возникла проблема для проверки надёжности сети использую пинги. На удалённом объекте стоит ADSL-роутер и через него в сеть выходит ПЛК100 для отправки текущих значений в диспетчерские.
    И вот недавно на новых объектах столкнулся с такой проблемой:
    При проверке связи с диспетчерской в случае отсутствия связи роутер возвращает от своего имени, что данная сеть не доступна и конечно при считывании ответа в буфере правильные контрольные данные и ПЛК100 считает, что с сетью все в порядке. Ведь в получаемом буфере только мусор который мы сами отправили. Ранее на других объектах такого не замечал, но там и другие модемы и оборудование провайдера. Вот хотелось с пингами разобраться получше.

    Ton_PingSend(IN:=NOT Ton_PingSend.Q, PT:=t#450ms);
    IF Ton_PingSend.Q THEN
    sock_adrPing.sin_addr:=*******; (*айпиадрес сетевоге оборудования*)
    resd:=SysSockSendTo(sockPing,ADR(my_bufs),32,0,ADR (sock_adrPing),SIZEOF(sock_adrPing)); (*Послали ICMP пакет*)
    END_IF


    tmrPing(IN:=NOT tmrPing.Q, PT:=t#0.005s);
    (*Организуем таймер для обеспечении временной задержки ожидания ответа*)
    IF tmrPing.Q THEN (*Время ожидания истекло считываем данные*)
    my_BUFr:='';
    PINGstart_TON:=FALSE;
    resd:=SysSockRecvFrom(sockPing,ADR(my_bufr),32,0,A DR(sock_adr1),SIZEOF(sock_adr1));
    IF FIND(my_BUFr, '123456')<>0 THEN (*Сравниваем переданные и принятые данные в случае идентичности Ping вернулся наш*)
    blnTestOK:=TRUE;
    qBlnConnect:=TRUE; (*Пометели что со связью всё ОК*)
    END_IF
    END_IF

    Вот этой перепроверки оказалось недостаточно:
    IF FIND(my_BUFr, '123456')<>0 THEN (*Сравниваем переданные и принятые данные в случае идентичности Ping вернулся наш*)

    Разумеется любым снифером видно кто ответил, но как в кодесис можно подглядеть кто на самом деле ответил на пинг?

    P. S. Во вложении скрин сниферра на котором видно, что ICMP пакет содержит информацию с IP-адресом отправителя. Можно как нибудь получить весь пакет целиком в кодесис?
    Изображения Изображения
    Последний раз редактировалось Gans; 01.05.2011 в 09:33. Причина: Добавил вложение
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

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

    По умолчанию

    а способ использовать регистр с заведомо известным изменяемым значением в этом случае не будет более выгодно выглядеть по сравнении с пингом?

  3. #3

    По умолчанию

    Спасибо конечно за вариант, но если удастся довести до ума пинги, то это будет правильней. Писать программку для изменения значения регистра в ModBus-TCP конечно вариант, но это уже когда красиво не получится, да и трафик не резиновый. Пинги на мой взгляд самый экономичный и целесообразный вариант, вот только недавно купленные модемы именно так себя ведут + оборудование у провайдера в том месте тоже со странностями.
    Для решения этой проблемки вариантов масса – сейчас у меня на удаленных объектах модем просто каждые пару часов обесточивается на 10 секунд, а подвисание модема примерно раз в неделю. Таким образом, получается, что проблема почти решена, заказчик про данную проблему даже не в курсе :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

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

    По умолчанию

    по сети по моему не важно, переслать пинг или запросить один бит. Тут мне кажется не красота а надежность имеет приоритет. Не все провайдеры разрешают пинг, так сказать защита от начинающих хакеров. Кроме состояния сети по пингу Вы больше информации не узнаете, а если у Вас еще и порт Модбаса заблокирован, Вы запингуетесь, а об ошибке и не узнаете

  5. #5

    По умолчанию

    С провайдером договорные отношения - в которых черным по белому все расписано и за это провайдер получает деньги и соответственно уверен, что ни чего не заблокируют. Описанная ситуация это всего навсего частный случай, ведь оборудования много и не всегда есть возможность на ответной части разметить свои программы, а протокол ICMP (Ping-и) должен поддерживаться всеми (ну только если собственник оборудования не запретил).
    Меня всё таки по прежнему интересуют именно пинги и как отличить ответ роутера "Данная подсеть не доступна" от ответа что всё в порядке.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  6. #6

    По умолчанию

    Gans скажи, пожалуйста, марку ADSL-роутера в вашем случае. Тоже замечал, не стабильные пинги у ПЛК100, пинговал напрямую с компа правда комп был старый с частотой 800Мгц у ПЛК прошивки свежие.

  7. #7

    По умолчанию

    Здравствуйте Андрей (если не ошибаюсь)
    Модем вот этот: http://www.nix.ru/autocatalog/modems...UTP_87052.html
    Но похоже выяснился диагноз (на 60%): - температура в помещении 42 градуса, а оборудование в щите :-( при снижении температуры ниже 30 градусов потерь связи не наблюдалось.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

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

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    Вот этой перепроверки оказалось недостаточно:
    IF FIND(my_BUFr, '123456')<>0 THEN (*Сравниваем переданные и принятые данные в случае идентичности Ping вернулся наш*)

    Разумеется любым снифером видно кто ответил, но как в кодесис можно подглядеть кто на самом деле ответил на пинг?

    P. S. Во вложении скрин сниферра на котором видно, что ICMP пакет содержит информацию с IP-адресом отправителя. Можно как нибудь получить весь пакет целиком в кодесис?
    Вот Леонид вроде ответил на Ваш вопрос http://www.owen.ru/forum/showpost.ph...0&postcount=13
    ЗЫ IP4_TO_STRING это из oscat_network

  9. #9

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Вот Леонид вроде ответил на Ваш вопрос http://www.owen.ru/forum/showpost.ph...0&postcount=13
    ЗЫ IP4_TO_STRING это из oscat_network
    Спасибо, Capzap и Леонид.
    Попробую.
    P. S. Сам пользуюсь аналогичными вещами, а к пингу прикрутить даже и не подумал. Еще раз спасибо :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

Ваши права

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