реклама на сайте
подробности

 
 
> Полный Ликбез: RS485 - двухпроводная шина., Как искать устройства.
nameless
сообщение Mar 2 2007, 08:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Что-то не может RS485 как CAN давать коллизии при одновременной передаче двумя устройствами. А как тогда инициализацию делать? Неожиданно, конечно, но при 6-байтном идентификаторе кроме как отлавливать коллизии - других способов не придумаю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex03
сообщение Mar 4 2007, 09:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



ИМХО
1. Нормальные драйверы 485 имеют защиту по току
2. 485 не предназначен для коллизий, и тут "писями по воде виляно" кто кого поборет. Драйвер одного производителя легко "заборет" другого и т.д. Соответственно не всегда возможно обнаружить коллизию.
3. Очень трудно синхронизировать ответы нескольких слейвов.

В способе описанном мной выше никаких коллизий не будет (Одновременную трансляцию одного и тогоже состояния (нуля) несколькими слейвами я за коллизию не считаю).

Допустим что:
1. скорость передачи у нас 9600бод, тогда время передачи одного символа 1000000/9600*11 = 1145,833мкс (для 2-х стопбитов) или не менее 1.2мс.
2. Допустим что время реакции слейва на запрос мастера нормируется в диапазоне 10..20мс, тогда время передачи слейвами сигнала break (который понимается многими UART-ами и не надо переводить Rx в мастере в режим PIO) должно быть не менее чем MAX(1.2, 20-10)=10мс. С запасом берём 15мс. Т.е. передача несколькими слейвами сигнала break выражается в приёме мастером этого break-а длительностью 15..25мс.
3. Слейвы передают сигнал break сначала переводя Tx UART-а в 0, а уж потом включают трансивер 485 на 15мс.

Пример для байтового адреса и 2-х девайсов с адресами 0x88 и 0x92:

Обмен:
1. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x00 .. 0x7F?" и запоминает "точку возврата" (0x80 .. 0xFF)
В ответ тишина...
больше 20мс+небольшой запасик смысла ждать мастеру нет.
уходим на ближайшую "точку возврата"
2. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x80 .. 0xFF?"
В ответ сигнал break (от обоих девайсов)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
3. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x80 .. 0xBF?" и запоминает "точку возврата" (0xС0 .. 0xFF)
В ответ сигнал break (от обоих девайсов)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
4. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x80 .. 0x9F?" и запоминает "точку возврата" (0xA0 .. 0xBF)
В ответ сигнал break (от обоих девайсов)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
5. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x80 .. 0x8F?" и запоминает "точку возврата" (0x90 .. 0x9F)
В ответ сигнал break (от девайса 0x88)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
6. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x80 .. 0x87?" и запоминает "точку возврата" (0x88 .. 0x8F)
В ответ тишина... уходим на ближайшую "точку возврата"
7. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x88 .. 0x8F?"
В ответ сигнал break (от девайса 0x88)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
8. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x88 .. 0x8B?" и запоминает "точку возврата" (0x8C .. 0x8F)
В ответ сигнал break (от девайса 0x88)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
9. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x88 .. 0x89?" и запоминает "точку возврата" (0x8A .. 0x8B)
В ответ сигнал break (от девайса 0x88)
Ага, ктото есть. Мастер ждёт окончания сигнала break.
10. Мастер шлёт запрос "Ктонить есть на шине из диапазона 0x88 .. 0x88?" и запоминает "точку возврата" (0x89 .. 0x89)
В ответ сигнал break (от девайса 0x88)
Ага, ктото есть. Мастер ждёт окончания сигнала break.

Ура! Нашли первый девайс 0x88!!!
Далее возращаясь на "точки возврата" аналогично находится всё остальное.
На самом деле никакие "точки возврата" не надо запоминать, всё вычисляется из текущего диапазона и глубины вложенности.
С количеством итераций в моём посте выше, я раза в 2 ошибся. smile.gif

ЗЫ. Надеюсь не очепятался. Проще алгоритм написать. smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- nameless   Полный Ликбез: RS485 - двухпроводная шина.   Mar 2 2007, 08:48
- - PrSt   Цитата(nameless @ Mar 2 2007, 07:48) Что-...   Mar 2 2007, 10:05
|- - alogvinov   Цитата(PrSt @ Mar 2 2007, 10:05) Цитата(n...   Mar 2 2007, 10:20
- - nameless   А разве в сетях с передачей маркера нет алгоритма ...   Mar 2 2007, 11:06
- - beer_warrior   ЦитатаCSMA/CD без обнаружения коллизий не работает...   Mar 2 2007, 11:27
- - nameless   Я наверное не правильно объяснил. До пола мне все ...   Mar 2 2007, 11:44
|- - AlexandrY   Тут получается противоречивый сценарий взаимодейст...   Mar 2 2007, 15:12
|- - rx3apf   Цитата(nameless @ Mar 2 2007, 11:44) Я на...   Mar 2 2007, 15:54
|- - Сергей Борщ   Цитата(rx3apf @ Mar 2 2007, 14:54) Выдели...   Mar 2 2007, 18:50
|- - rezident   Цитата(Сергей Борщ @ Mar 2 2007, 20:50) Ц...   Mar 2 2007, 18:58
|- - rx3apf   Цитата(rezident @ Mar 2 2007, 18:58) Цита...   Mar 2 2007, 19:06
|- - Сергей Борщ   Цитата(rx3apf @ Mar 2 2007, 18:06) Винова...   Mar 2 2007, 19:42
|- - AlexBoy   Цитата(rx3apf @ Mar 2 2007, 18:06) Да, ес...   Mar 2 2007, 20:05
- - beer_warrior   ЦитатаТак вот именно поиск надо придумать. Т.е. ад...   Mar 2 2007, 11:54
- - _Sam_   Я делал такую штуку. Алгоритм там не особо сложный...   Mar 2 2007, 15:04
- - Alex03   А такой вариант: Мастер посылает запрос "Кто...   Mar 2 2007, 19:39
- - arttab   Думали мы о варианте с колизиями: Мастер - Озовись...   Mar 2 2007, 20:04
|- - AlexandrY   Такую отсебятину в CANOpen пресекают на корню. По ...   Mar 2 2007, 22:57
- - nameless   Спасибо всем откликнувшимся. Имено до исключения к...   Mar 3 2007, 14:23
|- - Сергей Борщ   Цитата(nameless @ Mar 3 2007, 13:23) Крит...   Mar 3 2007, 14:44
||- - rx3apf   Цитата(Сергей Борщ @ Mar 3 2007, 14:44) P...   Mar 3 2007, 15:23
|- - rx3apf   Цитата(nameless @ Mar 3 2007, 14:23) Спас...   Mar 3 2007, 15:11
- - Andrew2000   Вот здесь upload/DOCs/Standarts&Specifications...   Mar 3 2007, 15:47
- - _Sam_   Только 1. для вышеописанного обязательно долж...   Mar 4 2007, 10:05
- - nameless   2 Сергей Борщ: С двумя резисторами, как мне кажетс...   Mar 4 2007, 13:34
|- - Alex03   Цитата(nameless @ Mar 4 2007, 15:34) 2 Се...   Mar 5 2007, 07:55
- - nameless   Теперь думаю так: 1. При включении слейв имеет вт...   Mar 5 2007, 10:48
- - Alex03   Цитата(nameless @ Mar 5 2007, 12:48) Тепе...   Mar 5 2007, 11:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016