|
|
  |
Система: N передатчиков - 1 приёмник |
|
|
|
Mar 25 2007, 23:58
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Советую посетить сайт AlexandrY ( http://aly.projektas.lt/ ) Там есть очень достойный свободный проект, где все это реализовано.
|
|
|
|
|
Mar 26 2007, 01:21
|
Знающий
   
Группа: Новичок
Сообщений: 642
Регистрация: 30-01-07
Пользователь №: 24 888

|
А тут не так уж много вариантов . Если не нужно передавать много информации , и не нужно делать это часто , то можно просто синхронизировать передатчики по времени с использованием точных часов , притом оставляя хороший запас на уход этих часов . А вот если это невозможно - то нужно ставить приёмопередатчики и посылать с базы запросы на каждый блок . Мы тут однажды разрабатывали один проект - снятие показаний с электросчётчиков , разбросанных по всему городу ( до серии так и не дошло , по организационным причинам  ) , и сразу решили использовать приёмопередатчики на каждом счётчике ( все они должны работать на одной частоте ) , так там была даже заложена возможность ретрансляции данных . Выглядело это примерно так - база запрашивает датчик , например , номер 5 , но пакет данных от него не удалось принять без ошибок после трёх повторов , тогда мы посылаем на датчик номер 4 такую команду - " братишка , передай запрос 5-му , получи от него пакет данных , сохрани в своей памяти , а потом передай нам "  Ничего особенно сложного в этом нет , а живучесть сети намного повышается .
|
|
|
|
|
Mar 26 2007, 09:54
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(Stanislav @ Mar 26 2007, 00:49)  В настоящее время существуют три основных вида разделения каналов приёма: - временнОе разделение; - частотное разделение; - кодовое разделение.
Насколько я понимаю, Вас интересует первое. Для решения проблеммы в общем, передатчики нужно синхронизировать друг с другом. Для ответа на Ваш вопрос, однако, требуется грамотная постановка задачи, с указанием основных требований к системе (частота переключения каналов, битовая скорость и т.д.). Система будет установлена в цеху на предприятии. Предполагается использовать 20 передатчиков (потом больше) и 1 приёник, подключенный к ЭВМ. Использую трансиверы DP1203-C433, аппаратный кодек Баркера встроенный, скорость передачи данных 1154 бит/с. Передатчики шлют пакеты по 24 байта, допустим, каждые 5-10 секунд. В каждом пакете, конечно же, есть адрес передатчика и CRC. Приёмник только принимает и транслирует данные в ЭВМ. Какая ещё информация нужна? Частотное разделение не подходит. Кодовое разделение - что это? Может быть, временное, но только без использования внешнего синхронизатора, часов каких-нибудь и т. п... Существует какой-то АЛГОРИТМ, я встречал его, но сейчас найти не могу! Передатчики между собой не обмениваются информацией. ЭВМ через приёмник не шлёт никаких запросов. Каждый из передатчиков особым образом по истечению своего заранее установленного периода передачи данных (5-10 секунд, период для всех передатчиков может быть разным) прослушивает эфир и передаёт свои данные. Точность периода опроса не важна, порядок выхода на связь передатчиков не важен. Всё делается по какому-то АЛГОРИТМУ и не происходит "перекрёстной" передачи... Вот меня и интересует этот АЛГОРИТМ...  Цитата(deemon @ Mar 26 2007, 02:21)  А тут не так уж много вариантов . Если не нужно передавать много информации , и не нужно делать это часто , то можно просто синхронизировать передатчики по времени с использованием точных часов , притом оставляя хороший запас на уход этих часов . А вот если это невозможно - то нужно ставить приёмопередатчики и посылать с базы запросы на каждый блок . Мы тут однажды разрабатывали один проект - снятие показаний с электросчётчиков , разбросанных по всему городу ( до серии так и не дошло , по организационным причинам  ) , и сразу решили использовать приёмопередатчики на каждом счётчике ( все они должны работать на одной частоте ) , так там была даже заложена возможность ретрансляции данных . Выглядело это примерно так - база запрашивает датчик , например , номер 5 , но пакет данных от него не удалось принять без ошибок после трёх повторов , тогда мы посылаем на датчик номер 4 такую команду - " братишка , передай запрос 5-му , получи от него пакет данных , сохрани в своей памяти , а потом передай нам "  Ничего особенно сложного в этом нет , а живучесть сети намного повышается . Информации - 24 байта. Период передачи от 5 секунд до нескольких минут. Никакие часы нельзя использовать... Надо осуществлять синхронизацию по периоду передачи и по состоянию эфира (свободен эфир или не свободен).
--------------------
Благодарю заранее!
|
|
|
|
|
Mar 26 2007, 10:05
|

Частый гость
 
Группа: Свой
Сообщений: 101
Регистрация: 7-09-05
Из: Riga, LV
Пользователь №: 8 333

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

|
Цитата(Stanislav @ Mar 26 2007, 02:01)  Описанный Вами способ всё-таки довольно сложен (хотя, конечно, устойчивость работы сети таким образом повышается). Есть и более простые варианты временнОй синхронизации.  Правда, применимость их определяется условиями, в которых работает аппаратура. Мы рассуждали так - раз у нас много счётчиков ( до тысячи ) и нет связи между ними , то обеспечить коллективный доступ реально только с методом "запрос-ответ" , а значит , нужны трансиверы . Далее , для сбора и накопления информации со счётчика всё равно нужно ставить микропроцессор с достаточно большим ОЗУ , чтобы хранить информацию до сеанса связи . А раз у нас уже есть трансиверы , процессоры и ОЗУ , то почему бы не сделать и ретрансляцию , так сказать , в виде бонуса ?  Это ведь не потребует никакого усложнения аппаратной части , а лишь немного увеличит размер кода программы . И пусть себе , мне не жалко ..... да и потом , программу всё равно писал не я
|
|
|
|
|
Mar 26 2007, 12:37
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 19-12-06
Из: Silicon Valley, California
Пользователь №: 23 683

|
Цитата(n_bogoyavlensky @ Mar 26 2007, 09:54)  Кодовое разделение - что это? CDMA. Сигнал каждого передатчика модулируется своей псевдослучайной последовательностью. Передатчики могут передавать одновременно, приемник разделяет их, так как знает модулирующую последовательность каждого Цитата Существует какой-то АЛГОРИТМ, я встречал его, но сейчас найти не могу! Передатчики между собой не обмениваются информацией. ЭВМ через приёмник не шлёт никаких запросов. Каждый из передатчиков особым образом по истечению своего заранее установленного периода передачи данных (5-10 секунд, период для всех передатчиков может быть разным) прослушивает эфир и передаёт свои данные. Точность периода опроса не важна, порядок выхода на связь передатчиков не важен. Всё делается по какому-то АЛГОРИТМУ и не происходит "перекрёстной" передачи... Вот меня и интересует этот АЛГОРИТМ...  Информации - 24 байта. Период передачи от 5 секунд до нескольких минут. Никакие часы нельзя использовать... Надо осуществлять синхронизацию по периоду передачи и по состоянию эфира (свободен эфир или не свободен). Посмотрите WiFi (IEEE 802.11). Там применяется упомянутый Вами алгоритм.
|
|
|
|
|
Mar 26 2007, 13:00
|
Местный
  
Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976

|
Цитата(dmivs @ Mar 26 2007, 10:05)  Ой, да это же чистой воды "метод коллективного доступа с опознаванием несущей и обнаружением коллизий"Используется в 10 Мбит Ethernet, но ножки растут именно из радиосетей. Если быть точным, то это просто Carrier Sense Multiple Access без обнаружения коллиий, т.к. радиоканал все таки отличается от проводного. Чтобы еще снизить вероятность коллизий используется CSMA/CA (Collision Avoidance), например, используется в упомянутом Wi-Fi. Но как уже сказали, для использования CSMA требуется приемник, чтобы "слушать" канал на предмет наличия сигнала. Если у Вас просто передатчики, можно использовать самый простой вариант - Aloha. Но нужно считать трафик. Кроме того, все упомянутые методы не исключают полностью коллизии.
|
|
|
|
|
Mar 26 2007, 13:42
|
Знающий
   
Группа: Новичок
Сообщений: 642
Регистрация: 30-01-07
Пользователь №: 24 888

|
Кстати , если в наших приёмопередатчиках применены упрощённые приёмники , которые могут только регистрировать факт передачи - можно проработать вариант , в котором один из передатчиков не передаёт данные , а служит "задатчиком ритма" . Для этого его пакеты должны иметь , например , бОльшую длительность , чтобы приёмники могли просто отличить его сигнал от других . Остальные же - должны , приняв длинный пакет , отсчитать от него нужное количество тактов( для каждого своё ) , и выходит в эфир уже по порядку , без конфликтов . ИМХО , достаточно простое решение , и позволяет теоретически работать без потерь пакетов данных .
|
|
|
|
|
Mar 26 2007, 18:19
|

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

|
Цитата(n_bogoyavlensky @ Mar 25 2007, 21:58)  Имеется система, состоящая из 20 передатчиков и 1 приёмника Интересует алгоритм работы передатчиков, т. е. как эти 20 передатчиков будут передавать данные приёмнику таким образом, чтобы не было каши, последовательно. Поскольку передатчиков у вас мало и объем информации небольшой, можно реализовать такой алгоритм: Каждый передатчик делает три (или больше) повтора своей посылки. Период повтора у каждого передатчика свой, периоды выбираются из ряда простых чисел, что позволяет в случае одновременного выхода в эфир (коллизии) получить гарантированные повторы в разное время. В сообщениях надо предусмотреть алгоритм отделения повтора от нового сообщения.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 28 2007, 17:01
|
Местный
  
Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976

|
Цитата(n_bogoyavlensky @ Mar 28 2007, 17:21)  Мне посоветовали CSMA/CD - это то, про что я справшивал  У Вас не получится сделать в радиоканале CSMA/C D, нужно делать CSMA/C A. Это не одно и тоже.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|