Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: Ошибки библиотеки Modbus

  1. #11

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение
    чтобы поменять настройки порт нужно закрыть (дождаться пока закроецо). потом открыть (опять дождацо) и настроить по новому. да нужно разнести по циклам. модбас передает все ошибки. точнее те которые поддерживает ведомый. по поводу передачи. писать в буфер в то время когда идет передача нельзя. отправьте данные в буфер. взведите на один цикл Enable и ждите Complite. как только Complite = true смотрите Exception. Если равен нулю то все ок. С чтением так же. Передаете адреса и кол-во слов взводите Enable на один цикл и ждете Complite. Дождались? если Exception = 0 - разбирайте буфер.
    Спасибо за ответ. Вообщем как я понял чтобы переключить порт нужно по циклам.
    1)Выключаю порт COM_SERVICE Enable =0
    2)Ждём окончания передачи - приёма MB_RD_HOLD_REGS Complete =1 (больше ничего не принимаем и не передаем)
    3)Ждём COM_SERVICE Ready=0 порт должен закрыться
    4)Меняем настройки порта
    5)Включаю порт COM_SERVICE Enable =1
    Если я в чём то неправ, поправьте пожалуйста.

    По передаче данных есть еще вопрос:как правильно должна вестись передача/прием данных, если у мастера есть 3 подчиненных, двое из них опрашиваются постоянно, а третий - только при включении всего оборудования. Вопрос: нужно ли этому третьему постоянно отправлять одни и те же данные? Или сделать несколько обменов(с 1 раза могут данные не дойти), а всё остальное время работать только с первым и вторым?

    По ошибкам модбас наверное я их могу посмотреть только в буфере ARRAY модуля MB_RD_HOLD_REGS если подчиненный мне что-то пришлёт, а на выходе модуля Exception только ошибки 0xFE 0xFF.
    Сейчас контролера нет под рукой, как появится - всё это буду пробовать.
    И еще раз спасибо всем кто помогает обучаться.

  2. #12

    По умолчанию

    Пункты 1 и 2 нужно поменять местами. А еще лучше вести обмен только когда порт открыт. Дали команду открыть порт - ждем. (может пройти не одна сотня циклов) открылся - настраиваем и начинаем обмен. Сам закрываю порты не дожидаясь окончания обмена.

    Если ведомый отключен то запрос завершиться по таймауту. В этом нет ничего страшного. единственное (так как таймаут много больше времени обмена) обмен с первыми двумя приборами будет замедлен. Так что если знаете что прибор сейчас отключен то с ним лучше не общяцо иканеш.

    По поводу данных которые не изменились от передачи к передаче... Я не заморачиваюсь и пишу/читаю постоянно.

    Все ошибки модбас попадают в Exception. в буфере ничего искать не нужно.

  3. #13

    По умолчанию

    Цитата Сообщение от lazy Посмотреть сообщение

    Если ведомый отключен то запрос завершиться по таймауту. В этом нет ничего страшного. единственное (так как таймаут много больше времени обмена) обмен с первыми двумя приборами будет замедлен. Так что если знаете что прибор сейчас отключен то с ним лучше не общяцо иканеш.
    Здравствуйте!
    Вопрос в следующем. Есть мастер (ПЛК-73) и 3 слэйв устройства. Протокол Modbus ASCII.
    Как сделать, чтобы при пропадании питания на одном из слэйв устройств не пропадала связь с двумя остальными?
    Пытаюсь отключать питание на одном из слэйвов, но тайм-аут не возникает... Не пойму поэтому, по какому параметру отслеживать отсутствие связи со слэйв модулем.
    Можно хоть какой-нибудь примерчик попросить работы ПЛК-63 или ПЛК-73 с несколькими слэйв устройствами?

  4. #14
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    по какому параметру отслеживать отсутствие связи со слэйв модулем.
    Цитата Сообщение от lazy Посмотреть сообщение
    Все ошибки модбас попадают в Exception. в буфере ничего искать не нужно.
    (для modbus.lib)

    PS
    Что касается таймаута - нет смысла его выдерживать более 1.5-2 обычных задержек с конкретного слейва (речь о овенских слейвах). Этого более чем достаточно для определения - ответит или нет.
    Если не мудрить с задержками на самих слейвах, а ставить всегда Rs.dL = 0..1 (нафик больше ?), то реальные задержки от модели - 5..10мс. И таймаут более 10..20мс не нужен (+ длина самого запроса/ответа ессно)
    Последний раз редактировалось Валенок; 10.12.2013 в 21:43.

  5. #15

    По умолчанию

    А конкретный примерчик можно?

    __________________________________________________ __________________________________________________ ___
    Моя часть программы, отвечающая за опрос 3-х slave устройств (радиомодемы с дискретными входами\выходами) во вложении.
    Всё работает, но при пропадании питания любого из slave устройства, не формируется никаких ошибок,
    Exception равен нулю.
    Не пойму, как при этом исключить из опроса "неисправный" модуль. Но так, чтобы при подаче питания на него, он вновь включался в опрос.
    Вложения Вложения
    Последний раз редактировалось kolyan; 11.12.2013 в 09:07.

  6. #16

    По умолчанию

    Неужели никаких вариантов?

  7. #17
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Здравствуйте kolyan. Я что-то не увидел, где у Вас в программе отслеживаются ошибки. Как вы узнали, что они не формируются?

    Где-то попадалось на форуме, что исключить отключенное устройство совсем не получится. Можно опрашивать его намного реже, чтобы не тормозить всю сеть, а когда оно будет снова подключено перейти на обычный опрос. Определить отключенное устройство можно по таймауту. Для этого надо отслеживать ошибки в программе.
    Последний раз редактировалось amn; 11.12.2013 в 21:32.

  8. #18

    По умолчанию

    Спасибо за ответ!
    Действительно, в данном варианте программы нет отслеживания ошибок.

    Попытки были в других вариантах, но проблема вся в том, что исключения по превышению тайм-аута формируются и при обычной (нормальной) работе, просто их длительность меньше, чем при отключенном слэйв устройстве (или его неисправности).
    Была мысль с помощью таймера отслеживать длительные появления исключений по тайм-ауту, но нормального результата не добился, т.к. и при отключенном слэйве исключения имеют хаотичный (разный от раза к разу) характер.

    Ещё раз спасибо, что откликнулись.

  9. #19
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    При отключенном устройстве ошибки будут постоянно. При работающем "иногда" будут проскакивать нормальные посылки.

    А что если попробовать использовать счетчик. Если исходить из того, что при нормальной работе проходит какое-то количество битых посылок, считаем их, пока не пройдет нормальная посылка. Экспериментально выясняем максимально возможное количество битых посылок при нормальной работе. Далее в программе контролируем количество битых посылок и если превысит количество, характерное для нормальной работы, то значит устройство отключено.

  10. #20

    По умолчанию

    Скорее всего, так и придётся сделать.
    Печально, что нет подобного контроля в составе самой библиотеки.
    Хотя, если взять тот же ОРС сервер Lectus - там никаких проблем. Пишет "переменная плохого качества" ( как-то же определяет!) - и продолжает опрос других модулей.
    ________________________________________

    Спасибо за совет!

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Эксплуатация библиотеки "ModBus.lib"
    от Gans в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 04.03.2012, 11:55
  2. Ошибки В кодесис
    от DimaSik в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 07.07.2009, 16:20
  3. Ошибки Modbus Master на низких скоростях
    от Serge78 в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 11.05.2009, 10:28
  4. ошибки в примерах ...
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 25.01.2009, 21:17
  5. ошибки в архивах
    от Volder в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 31.05.2008, 12:35

Ваши права

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