Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба Всем привет! Совершенно детский вопрос. Понадобилось сделать в своем устройстве прием MODBUS по RS485. До этого пром. автоматикой не занимался. Все понятно и во всем разобрался, кроме одного момента. Берем стандартный приемник, к примеру, AM26LV32. Когда идет передача кадра все отлично - дифференциальные входные линии прыгают, соответственно работает выход приемника с него все и снимаем. Но вот источник закончил передачу и перевел линию в Z-состояние. Т.е. дифф. сигнала больше нет, как говорит даташит на AM26LV32 при этом состояние выхода приемника неопределенно (indeterminate), т.е. случайное. Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д. Подскажите пожалуйста как правильно обработать третье состояние линии, программно приемник полностью мой (сигнал с Modbus ползет на мою ПЛИС). Также вопрос при full duplex передачи при одном мастере, обязательно ли Tx переводить в Z-состояние по окончании кадра, по идеи лучшая помехоустойчивость будет если Tx будет висеть в "1" между кадрами. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 4 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба Z-состояние нужно для того, чтобы другие передатчики в сети могли передавать сигнал по той же дифф паре. Если у тебя одной дифф парой управляет одно устройство, то можно не отпускать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 (изменено) · Жалоба 33 minutes ago, Harbinger said: Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"... что такое растяжки? принудительное приведение дополнительным слабым источником линию в 1 или 0 пока все передатчики спят? пока ее не передавит какой-то передатчик, конечно. Просто для меня, как в прошлом разработчика высоконадежных и устойчивых систем спец. назначения, честно говоря некоторое откровение, что в специальном интерфейсе для условий с высокими помехами, есть некоторое состояние, которое считается нормальным, в котором на линии болтается непонятный ничем не контролируемый мусор, который дай бог правильно обработает приемник... реально крайне странно... Тогда вопрос есть ли какой-то "законный" для данного стандарта способ перевода(подтяжки и т.д.) передающей линии в "1" во время сна всех передающих участников, с которым смогут адекватно работать сторонние приборы, на борту которых Modbus и RS485. Тот же вопрос и для полудуплексной передачи, там это точно также актуально... Ну меня прям физически ломает работать с интерфейсом, который большую часть своего времени просто болтает на линии мусор, и не потому что прилетела какая-то дикая помеха и надо от нее отстроиться или ее поймать, а просто потому что ну такой вот он))))) Изменено 19 февраля, 2022 пользователем Quantum1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 (изменено) · Жалоба 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... ? или могут быть проблемы? Изменено 19 февраля, 2022 пользователем Quantum1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба 2 часа назад, Quantum1 сказал: Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д. Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба Just now, Сергей Борщ said: Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр. Вы верно говорите, но это на линии... а на выходе микросхемы приемника при спящей линии может спокойно висеть 0, можно сказать неограниченное время(с какими то иными 1-ыми всплесками), что будет и должно постоянно приводить к FAIL-приему в софте обработчика приема... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба 57 минут назад, Quantum1 сказал: Вы верно говорите, но это на линии... а на выходе микросхемы приемника при спящей линии может спокойно висеть 0 Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. Если приемник 485 в этот момент выдает что-то другое - его надо заменить на исправный. И все. Перед этими 3.5 символами тишины в линии может быть что угодно - за время 3.5 символов тишины любой применик любого УАПП (UART) обязан прийти в исходное состояние (в противном случае - рецепт такой же, как и с приемником 485). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба 44 minutes ago, Сергей Борщ said: Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. Нет. Передатчик в паузе переходит в Z-состояние Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба 1 час назад, Quantum1 сказал: Нет. Передатчик в паузе переходит в Z-состояние Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба (В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quantum1 0 19 февраля, 2022 Опубликовано 19 февраля, 2022 (изменено) · Жалоба 1 hour ago, Сергей Борщ said: Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop". вы что то путаете, старт бит вообще то "0". состояние ожидания - это обычное высокоимпедансное(т.е. случайное и сильно подверженное наведению помех), из которого приемный софт (если не предприняты меры указанные Harbinger) силиться что то выделить, а по сути копается в мусоре, с вероятностью пропустить полезное.... 1 hour ago, Harbinger said: (В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки". Так он в любом случае в мусоре копается, IDLE с высокой частотой будет случаться при неблагоприятной помеховой обстановке... Изменено 19 февраля, 2022 пользователем Quantum1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 19 февраля, 2022 Опубликовано 19 февраля, 2022 · Жалоба 1 час назад, Quantum1 сказал: вы что то путаете, старт бит вообще то "0". При чем здесь стартовый бит? Смотрите обоими глазами на картинку из описания Modbus: Видите зеленые прямоугольники с надписями "Start" и "End"? Теперь читайте по губам: Это пауза в линии, во время которой передатчик принудительно включен и передает единицу. Это вызывает тишину в линии, от которой все и синхронизируется. Перед зеленым прямоугольничком с надписью "Start" и после зеленого прямоугольничка с надписью "End" в линии может твориться все, что угодно, включая ваше Z-состояние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smart_pic 7 20 февраля, 2022 Опубликовано 20 февраля, 2022 · Жалоба Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1(ну или к 0 в зависимости от логики) . Иначе при переводе приемника в отключенное состояние на входе МК или своей плисины получите мусор. Остальное что касается линии уже достаточно пояснил Сергей Борщ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 20 февраля, 2022 Опубликовано 20 февраля, 2022 · Жалоба 4 часа назад, smart_pic сказал: Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1 Чет не понял, при простое выход передачи уарта обязан быть в 1, передатчик RS485 должен быть выключен, какой тут может быть мусор - ума не приложу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться