Quantum1 0 Posted February 19 · Report post Всем привет! Совершенно детский вопрос. Понадобилось сделать в своем устройстве прием MODBUS по RS485. До этого пром. автоматикой не занимался. Все понятно и во всем разобрался, кроме одного момента. Берем стандартный приемник, к примеру, AM26LV32. Когда идет передача кадра все отлично - дифференциальные входные линии прыгают, соответственно работает выход приемника с него все и снимаем. Но вот источник закончил передачу и перевел линию в Z-состояние. Т.е. дифф. сигнала больше нет, как говорит даташит на AM26LV32 при этом состояние выхода приемника неопределенно (indeterminate), т.е. случайное. Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д. Подскажите пожалуйста как правильно обработать третье состояние линии, программно приемник полностью мой (сигнал с Modbus ползет на мою ПЛИС). Также вопрос при full duplex передачи при одном мастере, обязательно ли Tx переводить в Z-состояние по окончании кадра, по идеи лучшая помехоустойчивость будет если Tx будет висеть в "1" между кадрами. Спасибо! Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rkit 0 Posted February 19 · Report post Z-состояние нужно для того, чтобы другие передатчики в сети могли передавать сигнал по той же дифф паре. Если у тебя одной дифф парой управляет одно устройство, то можно не отпускать. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Harbinger 0 Posted February 19 · Report post Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Quantum1 0 Posted February 19 (edited) · Report post 33 minutes ago, Harbinger said: Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"... что такое растяжки? принудительное приведение дополнительным слабым источником линию в 1 или 0 пока все передатчики спят? пока ее не передавит какой-то передатчик, конечно. Просто для меня, как в прошлом разработчика высоконадежных и устойчивых систем спец. назначения, честно говоря некоторое откровение, что в специальном интерфейсе для условий с высокими помехами, есть некоторое состояние, которое считается нормальным, в котором на линии болтается непонятный ничем не контролируемый мусор, который дай бог правильно обработает приемник... реально крайне странно... Тогда вопрос есть ли какой-то "законный" для данного стандарта способ перевода(подтяжки и т.д.) передающей линии в "1" во время сна всех передающих участников, с которым смогут адекватно работать сторонние приборы, на борту которых Modbus и RS485. Тот же вопрос и для полудуплексной передачи, там это точно также актуально... Ну меня прям физически ломает работать с интерфейсом, который большую часть своего времени просто болтает на линии мусор, и не потому что прилетела какая-то дикая помеха и надо от нее отстроиться или ее поймать, а просто потому что ну такой вот он))))) Edited February 19 by Quantum1 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Quantum1 0 Posted February 19 (edited) · Report post 54 minutes ago, Harbinger said: Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"... Вроде разобрался fail safe это, выдача, 1 на выходе приемника когда дифференциальное состояние не определено, но.... "A drawback of these failsafe designs is their worst-case noise margin of 10 mV only, thus requiring external failsafe circuitry to increase noise margin for applications in noisy environments " Т.е. при высоких помехах опять шляпа... нужно еще и это... Ну хоть что то... странно что такие очевидные вещи не прописаны как must have в самом стандарте... Теперь последний вопрос с этими добавками адекватно будут работать всякие ПЛК, датчики, АЦП и иные участники пром. автоматизации, на которых указано RS-485 interface compatible... ? или могут быть проблемы? Edited February 19 by Quantum1 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted February 19 · Report post 2 часа назад, Quantum1 сказал: Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д. Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Quantum1 0 Posted February 19 · Report post Just now, Сергей Борщ said: Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр. Вы верно говорите, но это на линии... а на выходе микросхемы приемника при спящей линии может спокойно висеть 0, можно сказать неограниченное время(с какими то иными 1-ыми всплесками), что будет и должно постоянно приводить к FAIL-приему в софте обработчика приема... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted February 19 · Report post 57 минут назад, Quantum1 сказал: Вы верно говорите, но это на линии... а на выходе микросхемы приемника при спящей линии может спокойно висеть 0 Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. Если приемник 485 в этот момент выдает что-то другое - его надо заменить на исправный. И все. Перед этими 3.5 символами тишины в линии может быть что угодно - за время 3.5 символов тишины любой применик любого УАПП (UART) обязан прийти в исходное состояние (в противном случае - рецепт такой же, как и с приемником 485). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Quantum1 0 Posted February 19 · Report post 44 minutes ago, Сергей Борщ said: Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. Нет. Передатчик в паузе переходит в Z-состояние Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted February 19 · Report post 1 час назад, Quantum1 сказал: Нет. Передатчик в паузе переходит в Z-состояние Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop". Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Harbinger 0 Posted February 19 · Report post (В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки". Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Quantum1 0 Posted February 19 (edited) · Report post 1 hour ago, Сергей Борщ said: Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop". вы что то путаете, старт бит вообще то "0". состояние ожидания - это обычное высокоимпедансное(т.е. случайное и сильно подверженное наведению помех), из которого приемный софт (если не предприняты меры указанные Harbinger) силиться что то выделить, а по сути копается в мусоре, с вероятностью пропустить полезное.... 1 hour ago, Harbinger said: (В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки". Так он в любом случае в мусоре копается, IDLE с высокой частотой будет случаться при неблагоприятной помеховой обстановке... Edited February 19 by Quantum1 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted February 19 · Report post 1 час назад, Quantum1 сказал: вы что то путаете, старт бит вообще то "0". При чем здесь стартовый бит? Смотрите обоими глазами на картинку из описания Modbus: Видите зеленые прямоугольники с надписями "Start" и "End"? Теперь читайте по губам: Это пауза в линии, во время которой передатчик принудительно включен и передает единицу. Это вызывает тишину в линии, от которой все и синхронизируется. Перед зеленым прямоугольничком с надписью "Start" и после зеленого прямоугольничка с надписью "End" в линии может твориться все, что угодно, включая ваше Z-состояние. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
smart_pic 0 Posted February 20 · Report post Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1(ну или к 0 в зависимости от логики) . Иначе при переводе приемника в отключенное состояние на входе МК или своей плисины получите мусор. Остальное что касается линии уже достаточно пояснил Сергей Борщ Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mantech 1 Posted February 20 · Report post 4 часа назад, smart_pic сказал: Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1 Чет не понял, при простое выход передачи уарта обязан быть в 1, передатчик RS485 должен быть выключен, какой тут может быть мусор - ума не приложу... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...