Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Система: N передатчиков - 1 приёмник
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
koluna
Здравствуйте!

Имеется система, состоящая из 20 передатчиков и 1 приёмника (используются трансиверы DP1203-C433). Т. е., передатчики работают только на передачу, а приёмник - на приём. Интересует алгоритм работы передатчиков, т. е. как эти 20 передатчиков будут передавать данные приёмнику таким образом, чтобы не было каши, последовательно.

Спасибо заранее!
Stanislav
В настоящее время существуют три основных вида разделения каналов приёма:
- временнОе разделение;
- частотное разделение;
- кодовое разделение.

Насколько я понимаю, Вас интересует первое. Для решения проблеммы в общем, передатчики нужно синхронизировать друг с другом.
Для ответа на Ваш вопрос, однако, требуется грамотная постановка задачи, с указанием основных требований к системе (частота переключения каналов, битовая скорость и т.д.).
goodwin
Советую посетить сайт AlexandrY ( http://aly.projektas.lt/ )
Там есть очень достойный свободный проект, где все это реализовано.
deemon
А тут не так уж много вариантов . Если не нужно передавать много информации , и не нужно делать это часто , то можно просто синхронизировать передатчики по времени с использованием точных часов , притом оставляя хороший запас на уход этих часов . А вот если это невозможно - то нужно ставить приёмопередатчики и посылать с базы запросы на каждый блок . Мы тут однажды разрабатывали один проект - снятие показаний с электросчётчиков , разбросанных по всему городу ( до серии так и не дошло , по организационным причинам sad.gif ) , и сразу решили использовать приёмопередатчики на каждом счётчике ( все они должны работать на одной частоте ) , так там была даже заложена возможность ретрансляции данных . Выглядело это примерно так - база запрашивает датчик , например , номер 5 , но пакет данных от него не удалось принять без ошибок после трёх повторов , тогда мы посылаем на датчик номер 4 такую команду - " братишка , передай запрос 5-му , получи от него пакет данных , сохрани в своей памяти , а потом передай нам " smile.gif Ничего особенно сложного в этом нет , а живучесть сети намного повышается .
Stanislav
Цитата(deemon @ Mar 26 2007, 02:21) *
А тут не так уж много вариантов.
................................................................................
..................................

Ничего особенно сложного в этом нет , а живучесть сети намного повышается .
Описанный Вами способ всё-таки довольно сложен (хотя, конечно, устойчивость работы сети таким образом повышается). Есть и более простые варианты временнОй синхронизации. smile.gif
Правда, применимость их определяется условиями, в которых работает аппаратура.
koluna
Цитата(Stanislav @ Mar 26 2007, 00:49) *
В настоящее время существуют три основных вида разделения каналов приёма:
- временнОе разделение;
- частотное разделение;
- кодовое разделение.

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


Система будет установлена в цеху на предприятии.
Предполагается использовать 20 передатчиков (потом больше) и 1 приёник, подключенный к ЭВМ.
Использую трансиверы DP1203-C433, аппаратный кодек Баркера встроенный, скорость передачи данных 1154 бит/с. Передатчики шлют пакеты по 24 байта, допустим, каждые 5-10 секунд. В каждом пакете, конечно же, есть адрес передатчика и CRC. Приёмник только принимает и транслирует данные в ЭВМ.
Какая ещё информация нужна?

Частотное разделение не подходит.
Кодовое разделение - что это?
Может быть, временное, но только без использования внешнего синхронизатора, часов каких-нибудь и т. п...

Существует какой-то АЛГОРИТМ, я встречал его, но сейчас найти не могу! Передатчики между собой не обмениваются информацией. ЭВМ через приёмник не шлёт никаких запросов. Каждый из передатчиков особым образом по истечению своего заранее установленного периода передачи данных (5-10 секунд, период для всех передатчиков может быть разным) прослушивает эфир и передаёт свои данные. Точность периода опроса не важна, порядок выхода на связь передатчиков не важен. Всё делается по какому-то АЛГОРИТМУ и не происходит "перекрёстной" передачи... Вот меня и интересует этот АЛГОРИТМ... smile.gif

Цитата(deemon @ Mar 26 2007, 02:21) *
А тут не так уж много вариантов . Если не нужно передавать много информации , и не нужно делать это часто , то можно просто синхронизировать передатчики по времени с использованием точных часов , притом оставляя хороший запас на уход этих часов . А вот если это невозможно - то нужно ставить приёмопередатчики и посылать с базы запросы на каждый блок . Мы тут однажды разрабатывали один проект - снятие показаний с электросчётчиков , разбросанных по всему городу ( до серии так и не дошло , по организационным причинам sad.gif ) , и сразу решили использовать приёмопередатчики на каждом счётчике ( все они должны работать на одной частоте ) , так там была даже заложена возможность ретрансляции данных . Выглядело это примерно так - база запрашивает датчик , например , номер 5 , но пакет данных от него не удалось принять без ошибок после трёх повторов , тогда мы посылаем на датчик номер 4 такую команду - " братишка , передай запрос 5-му , получи от него пакет данных , сохрани в своей памяти , а потом передай нам " smile.gif Ничего особенно сложного в этом нет , а живучесть сети намного повышается .


Информации - 24 байта.
Период передачи от 5 секунд до нескольких минут.
Никакие часы нельзя использовать...
Надо осуществлять синхронизацию по периоду передачи и по состоянию эфира (свободен эфир или не свободен).
dmivs
Цитата(n_bogoyavlensky @ Mar 26 2007, 10:54) *
Существует какой-то АЛГОРИТМ, я встречал его, но сейчас найти не могу! Передатчики между собой не обмениваются информацией. ЭВМ через приёмник не шлёт никаких запросов. Каждый из передатчиков особым образом по истечению своего заранее установленного периода передачи данных (5-10 секунд, период для всех передатчиков может быть разным) прослушивает эфир и передаёт свои данные. Точность периода опроса не важна, порядок выхода на связь передатчиков не важен. Всё делается по какому-то АЛГОРИТМУ и не происходит "перекрёстной" передачи... Вот меня и интересует этот АЛГОРИТМ... smile.gif


Ой, да это же чистой воды "метод коллективного доступа с опознаванием несущей и обнаружением коллизий"

Используется в 10 Мбит Ethernet, но ножки растут именно из радиосетей.
AlexanderX
Для того чтобы просто прослушивать эфир Вам все равно придется использовать приемники вместе с передатчиками. Но если так, то помоему проще уже опрашивать датчики централизованно. Но если Вы категорически против такой концепции, то Ваш путь пролегает через Ethernet стандарт.
deemon
Цитата(Stanislav @ Mar 26 2007, 02:01) *
Описанный Вами способ всё-таки довольно сложен (хотя, конечно, устойчивость работы сети таким образом повышается). Есть и более простые варианты временнОй синхронизации. smile.gif
Правда, применимость их определяется условиями, в которых работает аппаратура.


Мы рассуждали так - раз у нас много счётчиков ( до тысячи ) и нет связи между ними , то обеспечить коллективный доступ реально только с методом "запрос-ответ" , а значит , нужны трансиверы . Далее , для сбора и накопления информации со счётчика всё равно нужно ставить микропроцессор с достаточно большим ОЗУ , чтобы хранить информацию до сеанса связи . А раз у нас уже есть трансиверы , процессоры и ОЗУ , то почему бы не сделать и ретрансляцию , так сказать , в виде бонуса ? smile.gif Это ведь не потребует никакого усложнения аппаратной части , а лишь немного увеличит размер кода программы . И пусть себе , мне не жалко ..... да и потом , программу всё равно писал не я smile.gif
cupertino
Цитата(n_bogoyavlensky @ Mar 26 2007, 09:54) *
Кодовое разделение - что это?

CDMA. Сигнал каждого передатчика модулируется своей псевдослучайной последовательностью. Передатчики могут передавать одновременно, приемник разделяет их, так как знает модулирующую последовательность каждого
Цитата
Существует какой-то АЛГОРИТМ, я встречал его, но сейчас найти не могу! Передатчики между собой не обмениваются информацией. ЭВМ через приёмник не шлёт никаких запросов. Каждый из передатчиков особым образом по истечению своего заранее установленного периода передачи данных (5-10 секунд, период для всех передатчиков может быть разным) прослушивает эфир и передаёт свои данные. Точность периода опроса не важна, порядок выхода на связь передатчиков не важен. Всё делается по какому-то АЛГОРИТМУ и не происходит "перекрёстной" передачи... Вот меня и интересует этот АЛГОРИТМ... smile.gif
Информации - 24 байта.
Период передачи от 5 секунд до нескольких минут.
Никакие часы нельзя использовать...
Надо осуществлять синхронизацию по периоду передачи и по состоянию эфира (свободен эфир или не свободен).
Посмотрите WiFi (IEEE 802.11). Там применяется упомянутый Вами алгоритм.
Dr.NoA
Цитата(dmivs @ Mar 26 2007, 10:05) *
Ой, да это же чистой воды "метод коллективного доступа с опознаванием несущей и обнаружением коллизий"

Используется в 10 Мбит Ethernet, но ножки растут именно из радиосетей.

Если быть точным, то это просто Carrier Sense Multiple Access без обнаружения коллиий, т.к. радиоканал все таки отличается от проводного. Чтобы еще снизить вероятность коллизий используется CSMA/CA (Collision Avoidance), например, используется в упомянутом Wi-Fi.
Но как уже сказали, для использования CSMA требуется приемник, чтобы "слушать" канал на предмет наличия сигнала.
Если у Вас просто передатчики, можно использовать самый простой вариант - Aloha. Но нужно считать трафик.
Кроме того, все упомянутые методы не исключают полностью коллизии.
deemon
Кстати , если в наших приёмопередатчиках применены упрощённые приёмники , которые могут только регистрировать факт передачи - можно проработать вариант , в котором один из передатчиков не передаёт данные , а служит "задатчиком ритма" . Для этого его пакеты должны иметь , например , бОльшую длительность , чтобы приёмники могли просто отличить его сигнал от других . Остальные же - должны , приняв длинный пакет , отсчитать от него нужное количество тактов( для каждого своё ) , и выходит в эфир уже по порядку , без конфликтов . ИМХО , достаточно простое решение , и позволяет теоретически работать без потерь пакетов данных .
Сергей Борщ
Цитата(n_bogoyavlensky @ Mar 25 2007, 21:58) *
Имеется система, состоящая из 20 передатчиков и 1 приёмника
Интересует алгоритм работы передатчиков, т. е. как эти 20 передатчиков будут передавать данные приёмнику таким образом, чтобы не было каши, последовательно.
Поскольку передатчиков у вас мало и объем информации небольшой, можно реализовать такой алгоритм: Каждый передатчик делает три (или больше) повтора своей посылки. Период повтора у каждого передатчика свой, периоды выбираются из ряда простых чисел, что позволяет в случае одновременного выхода в эфир (коллизии) получить гарантированные повторы в разное время. В сообщениях надо предусмотреть алгоритм отделения повтора от нового сообщения.
koluna
Мне посоветовали CSMA/CD - это то, про что я справшивал smile.gif
Dr.NoA
Цитата(n_bogoyavlensky @ Mar 28 2007, 17:21) *
Мне посоветовали CSMA/CD - это то, про что я справшивал smile.gif

У Вас не получится сделать в радиоканале CSMA/CD, нужно делать CSMA/CA. Это не одно и тоже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.