Перейти к содержанию
    

Z-состояние линии RS-485

Всем привет!

Совершенно детский вопрос.
Понадобилось сделать в своем устройстве прием MODBUS по RS485. До этого пром. автоматикой не занимался.
Все понятно и во всем разобрался, кроме одного момента.

Берем стандартный приемник, к примеру, AM26LV32. Когда идет передача кадра все отлично - дифференциальные входные линии прыгают, соответственно работает выход приемника с него все и снимаем.
Но вот источник закончил передачу и перевел линию в Z-состояние. Т.е. дифф. сигнала больше нет, как говорит даташит на AM26LV32 при этом состояние выхода приемника неопределенно (indeterminate), т.е. случайное.
Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д.

Подскажите пожалуйста как правильно обработать третье состояние линии, программно приемник полностью мой (сигнал с Modbus ползет на мою ПЛИС).

Также вопрос при full duplex передачи при одном мастере, обязательно ли Tx переводить в Z-состояние по окончании кадра, по идеи лучшая помехоустойчивость будет если Tx будет висеть в "1" между кадрами.

 

Спасибо!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 minutes ago, Harbinger said:

Z-состояние (т.е. высокоимпедансное) там будет, если у всех устройств выключены и приёмники, и передатчики, и терминатор отсутствует. Если же хоть одно стоит на приёме - уже нагрузка в линии, от 12 до 96 кОм. Точнее было бы сказать - "неопределённое состояние". А тут уже решается по-разному. "Fail-safe" трансиверы, "растяжки", если ни того ни другого нет - программная обработка "мусора"...

что такое растяжки? принудительное приведение дополнительным слабым источником линию в 1 или 0 пока все передатчики спят? пока ее не передавит какой-то передатчик, конечно.

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

Тогда вопрос есть ли какой-то "законный" для данного стандарта способ перевода(подтяжки и т.д.) передающей линии в "1" во время сна всех передающих участников, с которым смогут адекватно работать сторонние приборы, на борту которых Modbus и RS485.

Тот же вопрос и для полудуплексной передачи, там это точно также актуально...

 

Ну меня прям физически ломает работать с интерфейсом, который большую часть своего времени просто болтает на линии мусор, и не потому что прилетела какая-то дикая помеха и надо от нее отстроиться или ее поймать, а просто потому что ну такой вот он)))))

Изменено пользователем Quantum1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 "

Т.е. при высоких помехах опять шляпа...

нужно еще и это...

contenteetimes-images-01steve-t-understa

 

 

Ну хоть что то... странно что такие очевидные вещи не прописаны как must have в самом стандарте...

 

 

Теперь последний вопрос с этими добавками адекватно будут работать всякие ПЛК, датчики, АЦП и иные участники пром. автоматизации, на которых указано RS-485 interface compatible... ?  или могут быть проблемы?

Изменено пользователем Quantum1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Quantum1 сказал:

Если оно случайное, то выход микросхемы приемника, к примеру, может постоянно в нуле висеть, что соответствует постоянной задержки при начале кадра, или при помехах "ложный" кадр может наложиться на реальный - т.е. увеличится вероятность потери кадра и т.д.

image.thumb.png.8dd35cdb20471ce8d5e937feee9ab5c6.png

Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, Сергей Борщ said:

image.thumb.png.8dd35cdb20471ce8d5e937feee9ab5c6.png

Картинка их документа "MODBUS over serial line specification and implementation guide V1.0". Как видно, в начале кадра есть пауза >=3.5 символа, во время которой передатчик уже включен и линия никуда не болтается. От нее приемник и должен отсчитвать кадр.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 минут назад, Quantum1 сказал:

Вы верно говорите, но это на линии... а на выходе микросхемы приемника при спящей линии может спокойно висеть 0

Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. Если приемник 485 в этот момент выдает что-то другое - его надо заменить на исправный. И все. Перед этими 3.5 символами тишины в линии может быть что угодно - за время 3.5 символов тишины любой применик любого УАПП (UART) обязан прийти в исходное состояние (в противном случае - рецепт такой же, как и с приемником 485). 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 minutes ago, Сергей Борщ said:

Какая спящая линия? Передатчик 485 в паузе передает единицу. Честную единицу. 

Нет. Передатчик в паузе переходит в Z-состояние

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Quantum1 сказал:

Нет. Передатчик в паузе переходит в Z-состояние

Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Сергей Борщ said:

Вы на картинку смотрели? Зеленый прямоугольник с надписью "Start" видели? Вот это и есть перевод передатчика в активный режим и держание линии передатчиком в состоянии IDLE, т.е. передача непрерывной стабильной единицы. После передачи, кстати, такой же прямоугольник с надписью "Stop".

T2hPr.jpg

 

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

 

1 hour ago, Harbinger said:

(В порядке паранойи). В общем-то состояние IDLE может оказаться и ложным. Но всё же с ним куда проще, чем непрерывно "спам" анализировать. Приходилось работать с протоколами, где оно не задействовано - и там спасают только "растяжки".

Так он в любом случае в мусоре копается, IDLE с высокой частотой будет случаться при неблагоприятной помеховой обстановке...

Изменено пользователем Quantum1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Quantum1 сказал:

вы что то путаете, старт бит вообще то "0".

При чем здесь стартовый бит? Смотрите обоими глазами на картинку из описания Modbus:

image.thumb.png.8dd35cdb20471ce8d5e937feee9ab5c6.png

Видите зеленые прямоугольники с надписями "Start" и "End"? Теперь читайте по губам: Это пауза в линии, во время которой передатчик принудительно включен и передает единицу. Это вызывает тишину в линии, от которой все и синхронизируется. Перед зеленым прямоугольничком с надписью "Start" и после зеленого прямоугольничка с надписью "End" в линии может твориться все, что угодно, включая ваше Z-состояние.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1(ну или к 0 в зависимости от логики) . Иначе при переводе приемника в отключенное состояние на входе МК или своей плисины получите мусор. Остальное что касается линии уже достаточно пояснил Сергей Борщ

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, smart_pic сказал:

Чтобы не было лишнего мусора нужно выход приемника RS485 подтягивать к 1

Чет не понял, при простое выход передачи уарта обязан быть в 1, передатчик RS485 должен быть выключен, какой тут может быть мусор - ума не приложу...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...