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

 
 
> Помогите с алгоритмом.
Oleg_IT
сообщение Jul 6 2007, 15:39
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Есть несколько периферийных устройств и одна база с радиообменом. Периферийные устройства передают на базу данные. Первый вариант, база запрашивает последовательно каждое устройство, а оно отвечает. Второй вариант, периферийные устройства периодически посылают свои данные, а база их принимает. Преимущество такого варианта, меньшее потребление. Но в этом случае нужно застраховаться от наложения нескольких сообщений от разных периферийных устройств. Есть ли такие алгоритмы защиты?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Dr.NoA
сообщение Jul 6 2007, 16:49
Сообщение #2


Местный
***

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



Эту задачу решают протоколы управления доступом к среде (medium access control protocol). Вариантов есть много, поэтому нужно детально смотреть Вашу задачу, чтобы выбрать подходящий. Например, CSMA - один из простейших видов алгоритмов доступа к среде.
Go to the top of the page
 
+Quote Post
ShAnt
сообщение Jul 6 2007, 16:51
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 6-01-07
Пользователь №: 24 149



Цитата(Oleg_IT @ Jul 6 2007, 19:39) *
Есть несколько периферийных устройств и одна база с радиообменом. Периферийные устройства передают на базу данные. Первый вариант, база запрашивает последовательно каждое устройство, а оно отвечает. Второй вариант, периферийные устройства периодически посылают свои данные, а база их принимает. Преимущество такого варианта, меньшее потребление. Но в этом случае нужно застраховаться от наложения нескольких сообщений от разных периферийных устройств. Есть ли такие алгоритмы защиты?

Алгоритмы, конечно, есть. Только работают они не в пример сложнее, чем последовательный опрос...Так как в этом случае базе необходимо будет контролировать эфир (временная или частотная развязка каналов приема - передачи), а также обязательно вводить систему приоритетов, чтобы каждое устройство могло передать информацию базе.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jul 6 2007, 17:01
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Если не трудно дайте ссылки на описание этих алгоритмов. Может и исходники есть?
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Jul 6 2007, 17:06
Сообщение #5


Местный
***

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



Цитата(ShAnt @ Jul 6 2007, 20:51) *
Алгоритмы, конечно, есть. Только работают они не в пример сложнее, чем последовательный опрос...Так как в этом случае базе необходимо будет контролировать эфир (временная или частотная развязка каналов приема - передачи), а также обязательно вводить систему приоритетов, чтобы каждое устройство могло передать информацию базе.

Это смотря какой объем трафика. Если низкий, то можно спокойно использовать случайный доступ (например, обычный CSMA) с потверждением успешного приема. И ничего сложного в этом нет.

Цитата(Oleg_IT @ Jul 6 2007, 21:01) *
Если не трудно дайте ссылки на описание этих алгоритмов. Может и исходники есть?

Наберите в гугле Carrier Sense Multiple Access. Да там исходников-то особых не надо. Нужно уметь прослушивать канал, передавать и принимать пакеты. А это уже зависит от приемопередатчиков, которые Вы используете.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jul 6 2007, 17:30
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(Dr.NoA @ Jul 6 2007, 21:06) *
Это смотря какой объем трафика. Если низкий, то можно спокойно использовать случайный доступ (например, обычный CSMA) с потверждением успешного приема. И ничего сложного в этом нет.
Наберите в гугле Carrier Sense Multiple Access. Да там исходников-то особых не надо. Нужно уметь прослушивать канал, передавать и принимать пакеты. А это уже зависит от приемопередатчиков, которые Вы используете.


Так в том то и вопрос, что слушать не желательно, в этом случае просто используется первый вариант, а он белее энерго затратный.
Трафик маленький, длина пакета 0,23 мс. частота минимум 2 Гц.
Go to the top of the page
 
+Quote Post
exSSerge
сообщение Jul 6 2007, 20:03
Сообщение #7


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

Группа: Новичок
Сообщений: 136
Регистрация: 18-08-06
Из: Novosibirsk
Пользователь №: 19 655



В случае радиоканала идея прослушивать эфир перед передачей оказывается не столь удачной как в случае с проводными каналами (типа Ethernet). Коллизии всё равно случаются довольно часто. Типичный случай - база слышит всех абонентов, а они друг друга - то слышат, то нет.

Самый простой способ - вообще не бороться с коллизиями, просто повторять передачу пакета через псевдослучайные интервалы времени, пока не будет получено подтверждение от базы. Называется нетактированная АЛОХА (ALOHA) - по названию древней радиосети Гавайского университета. Теория говорит, что в такой сети предел порядка 18% от максимальной пропускной способности канала, остальное - паузы и коллизии. В Вашем случае, пакет 0.25 мс каждые 500 мс, получается максимум 2000*18%=360 пакетов, из них 180 - от устройств и 180 - подтверждения от базы.

Во многих книжках по сетям можно найти описание и расчёт максимальной пропускной способности для варианта ALOHA и тактированая ALOHA (у неё в 2 раза лучше - порядка 37%).

Если поток данных от каждого устройства стабилен и заранее известен более эффективен будет вариант, когда база периодически рассылает "расписание работы" для каждого устройства. Коллизии практически полностью исключаются. Но придётся как-то решать проблему присоединения к сети новых устройств, исключения выбывших, синхронизации часов и т.д.
Для примера можно посмотреть как устроен стандарт IEEE 802.15.4 (это PHY- и МАС-уровни на которых живёт ZigBee).
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Jul 7 2007, 10:21
Сообщение #8


Местный
***

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



Цитата(Oleg_IT @ Jul 6 2007, 21:30) *
Так в том то и вопрос, что слушать не желательно, в этом случае просто используется первый вариант, а он белее энерго затратный.

В CSMA прослушивание необходимо для следующего. Перед передачей пакета отправитель должен проверить занятость канала прослушиванием эфира в течение какого-то короткого промежутка времени или измерением уровня сигнала на входе приемника (RSSI). Если канал свободен, то выполняется передача пакета, если нет - передача откладывается и попытка повторяется через какой-то интервал времени. Задержки повторных попыток тоже могут выбираться разными способами.

Цитата(exSSerge @ Jul 7 2007, 00:03) *
В случае радиоканала идея прослушивать эфир перед передачей оказывается не столь удачной как в случае с проводными каналами (типа Ethernet). Коллизии всё равно случаются довольно часто. Типичный случай - база слышит всех абонентов, а они друг друга - то слышат, то нет.

Идея проверять канал перед передачей является достаточно удачной, т.к. позволяет значительно повысить эффективность использования канала, при сохранении простоты реализации. Конечно, это не избавляет полностью от проблемы коллизий, но упомянутая Вами проблема скрытого терминала решается в CSMA/CA, который, в свою очередь, тоже имеет свои недостатки.

Цитата(exSSerge @ Jul 7 2007, 00:03) *
Если поток данных от каждого устройства стабилен и заранее известен более эффективен будет вариант, когда база периодически рассылает "расписание работы" для каждого устройства. Коллизии практически полностью исключаются. Но придётся как-то решать проблему присоединения к сети новых устройств, исключения выбывших, синхронизации часов и т.д.
Для примера можно посмотреть как устроен стандарт IEEE 802.15.4 (это PHY- и МАС-уровни на которых живёт ZigBee).

Использование синхронизированного доступа усложняет систему, а толку от него может быть мало. Например, при очень низком трафике основные энергозатраты удаленных устройств будут на прием сигналных пакетов от базовой станции. В то время как при использовании случайного доступа энергозатраты будут "по факту", т.е. только на передачу полезных данных.
Именно поэтому нужно иметь какие-то числовые параметры системы для выбора подходящего варианта.

Цитата(Oleg_IT @ Jul 6 2007, 21:30) *
Трафик маленький, длина пакета 0,23 мс. частота минимум 2 Гц.

Для Вашего случая можно прикинуть следующее.
Tp - время передачи пакета
f - частота передачи пакетов каждым устройством
N - количество устройств, которые передают пакеты базовой станции

G=N*f*Tp - нормированный трафик

Задаем значения:
Tp=0,23 мс
f = 2 Гц
N = 10 (допустим)
Для обычного варианта ALOHA вероятность успешной передачи пакета (т.е. вероятность отсутствия коллизии) равна
p = exp(-2G) = exp(-2*10*2*0,23*10^-3) = 0,99084

Рассмотрим вариант с подтверждением. Пусть длина пакета подтверждения равна длине пакета данных, тогда примерно Tp=0,5 мс. Получаем, что
p = exp(-2G) = exp(-2*10*2*0,5*10^-3) = 0,9802.

Если рассмотреть вариант обычного CSMA, то грубо можно считать, что
p=1/(1+G)
Тогда p = 0,9954 и p = 0,99009 соответственно.

Как видите, для Вашего трафика достаточно использовать обычный вариант ALOHA, т.к. вероятность коллизии очень мала. Подтверждение нужно использовать, т.к. возможны потери пакетов по другим причинам.

Более сложные варианты организации доступа к среде можно рассматривать, если требуется экономить энергию и базовой станций, а не только удаленных устройств.
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение May 6 2008, 19:08
Сообщение #9


Местный
***

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



Если кому-то интересно, то приведенный выше расчет основан на этой статье
Прикрепленные файлы
Прикрепленный файл  paper059.pdf ( 1.55 мегабайт ) Кол-во скачиваний: 125
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:02
Рейтинг@Mail.ru


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