|
|
  |
Как лучше организовать протокол (логический) для RS-485 |
|
|
|
Feb 23 2010, 15:46
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 16-04-05
Из: СПб
Пользователь №: 4 208

|
А сколько устройств на линии по максиму? Может и проблемы нет…
Вам надо определять исправность удалённых устройств? При опросе это получается почти даром.
|
|
|
|
|
Feb 23 2010, 16:09
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(bill_vs @ Feb 23 2010, 18:46)  А сколько устройств на линии по максиму? Может и проблемы нет…
Вам надо определять исправность удалённых устройств? При опросе это получается почти даром. Устройств немного - от 2 до 10 (периферийных). Надо определять наличие их. Проблемы в смысле "беда", конечно, нет. Есть проблема в смысле "задача", для решения которой надо взвесить все ЗА и ПРОТИВ, а для этого услышать побольше мнений.
Сообщение отредактировал Diusha - Feb 23 2010, 16:10
|
|
|
|
|
Feb 23 2010, 17:46
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 16-04-05
Из: СПб
Пользователь №: 4 208

|
Цитата(Diusha @ Feb 23 2010, 19:09)  ... Есть проблема в смысле "задача", для решения которой надо взвесить все ЗА и ПРОТИВ, а для этого услышать побольше мнений. Ну, так и сравнивайте, а затем выбирайте. Оба варианта реализуемы. Всё можно посчитать. Но все требования знаете только Вы. Первый вариант (все - мастера) значительно сложнее программно. Второй проще. Если у Вас максимум 10 устройств и время доставки должно быть 50 мс, значит на каждый опрос не более 5 мс. При скорости 19200 можно отправить ответ около 8 байт. Хватит? Сколько надо? Если надо 1000 байт, то при одновременном возникновении желания поговорить с главным, за 50 мс надо передать 10000 байт. Т.е. скорость должна быть более 0.2 Мбит/с. А с коллизиями и того больше…
|
|
|
|
|
Feb 23 2010, 18:23
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
DiushaА если длина линии (в смысле ёмкость) большая? Её "пробить" надо. Простыми резисторами в этом случае не обойдёшься. Алгоритм работы простой: - опрос состояний всех устройств (их два - длинный адрес при инициализации и короткий в рабочем цикле); - ответ каждого устройства словосостоянием (4 байт обычно достаточно) (после получения запроса все slave отключают приём на фиксированное время - один выходил на передачу); - при необходимости запрос дополнительных данных от выбранного устройства. Про "отрисовку". Кто является мастером? ПЭВМ? Работает под Win? Время реакции Win (со слов системного программиста) около 50 мс + всякие графические примочки. На круг обычно выходит около 1 секунды. За это время можно переслать уйму данных. Узким местом, как правило, оказывается "человеческий фактор" - оператор просто не успевает обрабатывать такой поток информации. IMHO, Вам предоставили достаточно информации, чтобы принять правильное решение
|
|
|
|
|
Feb 24 2010, 03:46
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(ASN @ Feb 23 2010, 21:23)  IMHO, Вам предоставили достаточно информации, чтобы принять правильное решение  Да! Информации достаточно. Склонился в сторону 2-го варианта, на самом деле уже давно, специально не говорил Самый веский аргумент, ИМХО: Цитата(Сергей Борщ @ Feb 22 2010, 20:17)  Для 485 коллизия является нештатной ситуацией. Производитель не гарантирует, что драйвера выдержат сколь-нибудь долгую эксплуатацию в таком режиме. Всем большое спасибо!
|
|
|
|
|
Feb 24 2010, 13:28
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Ruslan1 @ Feb 24 2010, 14:31)  Назовите мне модель драйвера RS-485, для которого коллизия является нештатной и который от этого крякнется. Я эту фирму буду обходить стороной.  У Sipex в даташитах специфицирован только ток КЗ по выходу и макс. рассеиваимая мощность корпуса. Про коллизию не нашел ни в одном даташите. Есть защита от КЗ, но это как бы совсем не коллизия. Обходите. Цитата(Ruslan1 @ Feb 24 2010, 14:31)  Как правило в даташите пишут нечто подобное (это из ST485): "Current limiting and thermal shutdown for driver overload protection".
так что производители гарантируют. Согласен, многие гарантируют. И тем не менее: вы считаете, что доводить систему до срабатывания защиты - это нормально? Или вы считаете, что возможные периодические временные отказы связи из-за thermal shutdown - это штатный режим работы системы?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 25 2010, 05:47
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Цитата(galjoen @ Feb 24 2010, 13:45)  включите драйвера RS-485 так, чтобы они только 0 передавали, а 1 за счёт резисторных растяжек формировалась. А не знаете, нет ли микосхемки, совместимой по выводам с МАХ485, только с открытым коллектором? Цитата(Ruslan1 @ Feb 24 2010, 15:31)  Назовите мне модель драйвера RS-485, для которого коллизия является нештатной и который от этого крякнется. Я эту фирму буду обходить стороной.  Как правило в даташите пишут нечто подобное (это из ST485): "Current limiting and thermal shutdown for driver overload protection". Из портянки на МАХ485: "Drivers are short-circuit current limited and are protected against excessive power dissipation by thermal shutdown circuit" Провел эксперимент: замкнул А и В. Секунд через 7 микросхема (в ДИПе) нагрелась градусов до 45, дальше температура не росла; thermal shutdown не было; ток 100 мА. Не лучший вариант... Из той же портянки: "The receiver input has a fail-safe feature that guarantees a logic-high output if the input is open circuit." Я правильно понял, имеется в виду, что если линия болтается в воздухе, то "фича гарантирует", что на выходе приемника болтанки не будет? Но тогда непонятно, как фича догадается, что это наводки, а не сигнал?
|
|
|
|
|
Feb 25 2010, 07:12
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Сергей Борщ @ Feb 24 2010, 15:28)  У Sipex в даташитах специфицирован только ток КЗ по выходу и макс. рассеиваимая мощность корпуса. Про коллизию не нашел ни в одном даташите. Есть защита от КЗ, но это как бы совсем не коллизия. Обходите.
Согласен, многие гарантируют. И тем не менее: вы считаете, что доводить систему до срабатывания защиты - это нормально? Или вы считаете, что возможные периодические временные отказы связи из-за thermal shutdown - это штатный режим работы системы? 1. про Sipex: Спасибо за информацию, это для меня новость. Такие микросхемы просто нельзя применять. Так как в случае замыкания линии, что вполне вероятно и периодически случается в полевых условиях, система выйдет из строя. 2. Коллизии и КЗ: Это разные уровни модели  Если спуститься на физический уровень, то для RS-485 коллизией является в том числе и КЗ, так как передача одновременно нуля и единицы в линию двумя драйверами приводит к замыканию линии через выходные каскады этих драйверов (источники тока). 3. Насчет периодического термального шутдауна: это последняя штатная ступень защиты, ничего нештатного тут нет. Конечно, желательно если будут предварительные ступени защиты (детектирование коллизий до шутдауна из-за перегрева), но они не необходимы. Совершенно не согласен с тем, что "Производитель не гарантирует, что драйвера выдержат сколь-нибудь долгую эксплуатацию в таком режиме. Хотите иметь неприятности из-за отказов - делайте." Кстати, до такого перегрева довести драйвера простейшими короткими коллизиями вряд ли получится, тут считать нужно.
|
|
|
|
|
Feb 25 2010, 07:35
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Diusha @ Feb 25 2010, 07:47)  Из портянки на МАХ485: "Drivers are short-circuit current limited and are protected against excessive power dissipation by thermal shutdown circuit" Провел эксперимент: замкнул А и В. Секунд через 7 микросхема (в ДИПе) нагрелась градусов до 45, дальше температура не росла; thermal shutdown не было; ток 100 мА. Не лучший вариант... Как не лучший? просто недогрели его, никакого шутдауна и не произошло. Штатная работа, генератор тока выдает свои 100 мА, нагрев и рассеивание тепла уравновесились при температуре корпуса 45 градусов. Хотите шутдауна- погрейте феном или паяльником. Цитата(Diusha @ Feb 25 2010, 07:47)  Из той же портянки: "The receiver input has a fail-safe feature that guarantees a logic-high output if the input is open circuit." Я правильно понял, имеется в виду, что если линия болтается в воздухе, то "фича гарантирует", что на выходе приемника болтанки не будет? Но тогда непонятно, как фича догадается, что это наводки, а не сигнал? Не надо ни о чем догадываться. Представьте себе резисторы большого номинала (точнее генераторы маленького тока), которые тянут линию в неактивное состояние. То есть вместо болтанки на входах будет неактивный уровень. Любому сигналу эти резисторы незаметны. Цитата(Andron_ @ Feb 25 2010, 09:28)  2Ruslan1
Т.о. вы считаете, что система может строиться из расчета, что коллизии являются нормальным режимом логики, а драйверы их выдержат? Ага, считаю. Да, выдержат. Но с точки зрения программинга упаси Боже Вас строить системы с коллизиями! Дело это жутко неблагодарное и статистическое. Такое ноу-хау замутите, что потом вернуться и посмотреть страшно будет. если оно таки надо, нужно сразу CAN какой-нить брать и приоритеты расставлять.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|