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

Тема: как отследить разрыв связи для пм01?

  1. #1

    По умолчанию как отследить разрыв связи для пм01?

    здравствуйте!
    использую плк 100-24-p-l + модем пм01-24-ав (rs-485).
    испрользуется Gprs-соединение.
    при включении контроллера модем соединяется с сервером (компьютер).
    раз в 3 секунды со стороны модема идет опрос поступивших данных от сервера, при это контроллер выполняет команды и отправляет данные на модем, отсюда на сервер.
    все работает без проблем, если сервер постоянно шлет на модем данные, в моем случае 5 минут.
    если есть ошибки при отправке данных от модема - включается счетчик, и при достижении определенного количества неудачных ответов - закрываю порт и модем, потом опять открываю порт и соединение с модемом.
    то есть работает так - пришел ответ(запрос) от сервера - отбил подтверждение + отправил данные, если надо от модема+контроллер.
    но есть одно. сервер может упасть на какое то время. модем не принимает данные и не отправляет ответ. связь рвется.
    так вот, если связь рвется, то логично перезагрузить контроллер (программно перевести в начало главной программы (цикла)).
    есть ли способ быстро узнать для модема, что потеряна связь с сервером?
    понятно, что можно отправлять пакеты и ждать подтверждения, но есть ли способ лучше?
    Если есть идеи или наработки - буду рад выслушать и применить.

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    сталкивался с подобной проблемой. сервер не отслеживает состояние модема и может в следствии этого падать. для избежания подобного нужно: - разнести периодический опрос сервером слева и доставку аварийных сообщений от слейвов серверу на разные модемы.
    - если сервер не вернул поддтверждение о получении данных, то слейв активирует автодозвон, до тех пор пока получит подтверждение.
    небольшой пример(для 1 -го модема)
    100KL_obekt_004_Kn.rar

  3. #3

    По умолчанию

    Посмотрел исходники - спасибо.
    Но у меня немного по другому.
    Сервер написан на Delphi и он умеет отслеживать разрыв коннекта от модема.
    Просто хотелось бы обратного - чтобы модем узнавал о разрыве соединения с сервером (иногда он падает), и подавал команду контроллеру на перезагрузку.
    Есть ли какие то AT-команды на проверку связи?
    IP-сервера является статичным.
    Наверное, придется посылать тестовые команды n раз в минуту и при достижении определенного количества неотправленных пакетов - подать команду на перезагрузку.

  4. #4
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

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

  5. #5
    Ельцов Андрей
    Гость

    По умолчанию

    А что за биты состояния? Откуда они в ПЛК? Если Вы про переменную Stat то ана в этом случае не поможет, т.к. при установке связи модем не отвечает на АТ команды.

  6. #6

    По умолчанию

    решение:
    посылаем команду At+cipstatus
    если связь нормальная - выдаст Connect Ok
    если разорвана - Ip Close
    тема для меня закрыта

Ваши права

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