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

Добрый день.

Есть проблема.
Для организации интерфейса RS422/485  используется микросхема 
ADM2682E (все кондёры и топология по даташиту), работам на скорости 1 Мб/с, тракт передачи следующий:
Микроконтроллер(STM32) <-> ШФ(3,3<->5В, SN74LVC8T245-EP)<->ADM2682E - линия RS422/485 (терминаторы 120 Ом стоят, подтяжки Y и Z к питанию/земле тоже стоят) .

При работе (работаем на столе, стоит заглушка "сам на себя" A-Y, B-Z), при отключении сигнала DE (управление передатчиком) на приёме возникает "просечка" длительностью 200-400нс,

приёмник иногда воспринимает её как стартовую посылку иногда нет, ну и соответственно в потоке данных на приём получаем FF.

Вот так, куда копать: микросхема ADM2682E, с линией проблемы, или ещё чего?

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


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

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

Да кстати, граждане а на практике при построении систем на 485, кто ни будь "баловался" с подтягивающими резисторами (земля/питание),
нужно ли это (без них в линии "мусор" вроде....)?
 

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


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

Есть хороший мануал B&B Electronics: Practical Guide to Using RS-422 and RS-485 Serial &nbsp;Interfaces.

В нем, в том числе, описаны и применение подтягивающих резисторов (земля/питание).

 

И старый вариант мануала:RS-422 and RS-485 Application Note.

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


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

8 часов назад, serj1979 сказал:

Да кстати, граждане а на практике при построении систем на 485, кто ни будь "баловался" с подтягивающими резисторами (земля/питание),
нужно ли это (без них в линии "мусор" вроде....)?
 

Резисторы нужны. Делал на ISO3082DWR, ставил резисторы по 510 Ом.

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


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

В 26.10.2018 в 22:49, Zig сказал:

Есть хороший мануал B&B Electronics: Practical Guide to Using RS-422 and RS-485 Serial &nbsp;Interfaces.

В нем, в том числе, описаны и применение подтягивающих резисторов (земля/питание).

 

И старый вариант мануала:RS-422 and RS-485 Application Note.

Спасибо, то что надо.

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


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

On 10/26/2018 at 10:50 PM, serj1979 said:

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

Да кстати, граждане а на практике при построении систем на 485, кто ни будь "баловался" с подтягивающими резисторами (земля/питание),
нужно ли это (без них в линии "мусор" вроде....)?
 

Если интерфейсу на основе RS485 для нормальной работы требуются подтягивающие резисторы, то это плохой интерфейс. Например, для Modbus RTU подтягивающие резисторы не нужны, он одинаково хорошо работает и с ними, и без них.

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


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

3 часа назад, =AK= сказал:

Если интерфейсу на основе RS485 для нормальной работы требуются подтягивающие резисторы, то это плохой интерфейс. Например, для Modbus RTU подтягивающие резисторы не нужны, он одинаково хорошо работает и с ними, и без них.

Тут дело в чём (по крайне мере у меня такое было), без подтяжек при отсутствии активных передатчиков в линии (по сути линия в "воздухе") на ней возможны наводки (ложный старт) и как следствие срабатывание приёмников. При включении передатчика всё ОК передатчик "продавливает" свой блок, но до и после блока на приёмнике "мусор".
Такая ситуация решается средствами протоколов (поиск пакета в потоке данных),  преамбула контрольная сумма, механизм таймаутов и  т.п., но всё то вычислительные затраты - есть цель их минимизировать.
Да  и ещё, если ложный старт будет непосредственно перед включением передатчика в линию, произойдёт побитовое смещение посылки (корректный старт воспримется информационным битом) и если протокол не учитывает такой возможности, думаю весь пакет "побъётся".

P.S. Zig  в посте от (пятница в 22:49) дал ссылку на хорошие мануалы гляньте их.

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


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

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

Да  и ещё, если ложный старт будет непосредственно перед включением передатчика в линию, произойдёт побитовое смещение посылки

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

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


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

24 минуты назад, Сергей Борщ сказал:

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

Да поможет, но в том и в другом случае задача поиска пакета в потоке данных с соответствующим "отъеданием" процессорного времени.
Есть задача минимизировать затраты на пакетную обработку, решается за счёт резисторов подтяжки (есть издержки такого решения).
Но то как "тришкин кафтан" натянул на одну сторону оголилось другое.

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


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

6 minutes ago, serj1979 said:

Да поможет, но в том и в другом случае задача поиска пакета в потоке данных с соответствующим "отъеданием" процессорного времени.
Есть задача минимизировать затраты на пакетную обработку, решается за счёт резисторов подтяжки (есть издержки такого решения).
Но то как "тришкин кафтан" натянул на одну сторону оголилось другое.

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

А уж если полагаетесь на подтяжки, непонятно зачем тогда RS485. Тогда уж лучше приемопередатчики CAN. Им и подтяжка не нужна, и помехоустойчивость получите лучше, чем у RS485 с подтяжками. Только не забудьте, что у многих приемопередатчиков CAN есть защита от длительного доминантного уровня на выходе.

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


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

12 минут назад, =AK= сказал:

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

А уж если полагаетесь на подтяжки, непонятно зачем тогда RS485. Тогда уж лучше приемопередатчики CAN. Им и подтяжка не нужна, и помехоустойчивость получите лучше, чем у RS485 с подтяжками. Только не забудьте, что у многих приемопередатчиков CAN есть защита от длительного доминантного уровня на выходе.

Это всё понятно "мерседес лучше жигулей":)
есть задача:
- реализовать в устройстве поддержку RS485/422.
- минимизировать программную обработку.
В рамках этих задач организуется схемотехника (если "чо" резисторы и отпаять можно без изменения топологии платы).
 

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


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

20 minutes ago, serj1979 said:

есть задача:
- реализовать в устройстве поддержку RS485/422.
- минимизировать программную обработку.
В рамках этих задач организуется схемотехника (если "чо" резисторы и отпаять можно без изменения топологии платы).
 

Я вам описал два решения в рамках этой задачи, без подтяжки. Чем они вас не устраивают вы можете внятно сформулировать?

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


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

1 час назад, =AK= сказал:

Я вам описал два решения в рамках этой задачи, без подтяжки. Чем они вас не устраивают вы можете внятно сформулировать?

Необходима минимизация программной обработки, при всех описанных вами методах (да и при всех других) необходим анализ входных данных, чем больше "искаженных" данных,
тем больше ресурсов на это тратится. Минимизировать количество "искажённых" данных позволяет подтяжка (с опять таки определёнными "минусами").
 

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


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

51 minutes ago, serj1979 said:

Необходима минимизация программной обработки, при всех описанных вами методах (да и при всех других) необходим анализ входных данных, чем больше "искаженных" данных,
тем больше ресурсов на это тратится. Минимизировать количество "искажённых" данных позволяет подтяжка (с опять таки определёнными "минусами").
 

"Минимизация программной обработки" - это неконкретно. Вам что надо минимизировать, размер кода или время исполнения? И каковы критерии?

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

2. Использование CAN трансиверов не требует никакого "анализа входных данных", откуда у вас такие странные идеи? Вы просто ставите вместо трансиверов RS485 - трансиверы CAN. Софт об этой замене вообще ничего не знает. От слова "совсем". Вы понимаете разницу между "контроллером CAN" и "трансивером CAN", или у вас само слово CAN вызывает панику и полностью отключает мозг?

 

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


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

17 минут назад, =AK= сказал:

"Минимизация программной обработки" - это неконкретно. Вам что надо минимизировать, размер кода или время исполнения? И каковы критерии?

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

2. Использование CAN трансиверов не требует никакого "анализа входных данных", откуда у вас такие странные идеи? Вы просто ставите вместо трансиверов RS485 - трансиверы CAN. Софт об этой замене вообще ничего не знает. От слова "совсем". Вы понимаете разницу между "контроллером CAN" и "трансивером CAN", или у вас само слово CAN вызывает панику и полностью отключает мозг?

 

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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