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

 
 
> Полный Ликбез: 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
Ответов
nameless
сообщение Mar 5 2007, 10:48
Сообщение #2


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

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



Теперь думаю так:

1. При включении слейв имеет вторичный идентификатор FF. Ток "единицы" ограничен у всех устройств либо резистором по питанию либо последовательно в линию "А" (если нулю соответствует B+ и A-, то B+ одного устройства перетягивает А+ других).
2. Мастер говорит: Все, у кого (например двухбайтный уник. адрес) с маской FFFF совпадает с оным - отвечайте...если есть - отвечают все. В ответе - полная галиматья, но (думаю) со стопроцентной вероятностью есть отрицательный перепад, старт-признак то есть. Frame Error никто не отменял. Мастер видит, что есть как минимум битый (stop-bit !=1) байт, а значит - устройства ЕСТЬ.
3. Мастер говорит: Все, у кого адрес с маской 0FFF есть тот-же адрес - отвечайте. Пусть есть три устройства: 1234, 1244 и 1355. Никто не отвечает.
4. Мастер приращает старший полубайт до 1. - Все отвечают. Опять галиматья. Но признак есть.
4. Повторяем, перебирая младший полубайт старшего байта адреса от нуля вверх, оставляя в старшем 1.
5. Дошли до 12 в старшем байте. Отвечают первый и второй. Коллизия
6. Говорим 120F - никого....продолжаем до 123F. отвечает первый. Отвечает именно полным адресом плюс CRC. Видим, что все в порядке по длине и по CRC - говорим ему, что у него есть вторичный идентификатор 0.
7. Повторяем последний запрос с маской 12FF. Отвечает 1244 полным адресом с CRC. А первый не отвечает, так как у него есть вторичный идентификатор.
8. Повторяем последний запрос с маской 12FF. Никто не отвечает. Даже стартового перепада нет.
9. Генерим маску 13FF. Последний отвечает.
10. Повторяем 13FF. Никто не отвечает
11. Маска 14FF - ни одного. Продложаем до 1EFF - никого.
12. Маски остались только 2FFF - по EFFF...

Вроде так я себе это представляю. Мож где ошибся? Критика?
Go to the top of the page
 
+Quote Post
Alex03
сообщение Mar 5 2007, 11:55
Сообщение #3


Местный
***

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



Цитата(nameless @ Mar 5 2007, 12:48) *
Теперь думаю так:

1. При включении слейв имеет вторичный идентификатор FF. Ток "единицы" ограничен у всех устройств либо резистором по питанию либо последовательно в линию "А" (если нулю соответствует B+ и A-, то B+ одного устройства перетягивает А+ других).

Насколько я знаю в 485 интерфейсе драйвера A и B "одинаковые". И единицы и нолики передаются по обоим проводам в противофазе. На входе стоят просто компараторы между А и В. Стандартные драйвера не имеют смещения, поэтому очень часто начальное смещение шины в единицу делают с помощью резюков на А и В к питанию и земле. Таким образом в типовой 485 сети, при прочих равных, выходная единица одного устройства поборет нолик с другого.
Ваша идея с резюком на А или В ничего не даст, кроме снижения помехозащищённости, скорострельности, максимальной длины шины и т.д. Резюк с диодом может и поможет, но как быть если 10 единиц против одного нолика и т.д.
Ну и ещё раз ИМХО. 485 не предназначен для коллизий и т.д., если создавать/менять/править железячный интерфейс - ставте CAN-драйвера и гоняйте байты с UART-ов. smile.gif

Цитата
2. Мастер говорит: ...
Вроде так я себе это представляю. Мож где ошибся? Критика?

Примерно понял что вы хотите. Некий симбиоз половинного деления и перебора.

В любом монгобайтном ответе слейва есть как минимум следующие параметры
1. Задержка от запроса до первого байта ответа (T1)
2. Битрейт передачи
3. Задержка между байтами пакета. (T2)

Для T1 как правило даётся довольно большой диапазон.
Для T2 обычно поменьше.
Поэтому у Вас легко случиться такое что сначала ответит один девайс (CRC для которого совпадёт), а потом второй. Особенно при больших скоростях передачи.

Ну и не понимаю я зачем генерить коллизии с:
Цитата
В ответе - полная галиматья, но (думаю) со стопроцентной вероятностью есть отрицательный перепад, старт-признак то есть. Frame Error никто не отменял. Мастер видит, что есть как минимум битый (stop-bit !=1) байт, а значит - устройства ЕСТЬ.
Вместо одного нулевого (длинного) импульса. Мастеру UART скажет либо брейк, либо ошибку (stop-bit !=1), в зависимости от контроллера UARTа.
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
- - Alex03   ИМХО 1. Нормальные драйверы 485 имеют защиту по то...   Mar 4 2007, 09:39
- - _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


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:32
Рейтинг@Mail.ru


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