задачка...

Пpивет, All!

Сижу, думаю, ничего придумать не могу... Вдруг у кого-нибудь свветлая мысль возникнет ?

Итак, есть некоторое количество датчиков с радиоинтерфейсом, которые время от времени надо опрашивать. Устройство опроса - мобильное, расположение датчиков относительно его неизвестно, сколько датчиков единовременно может попасть в зону видимости - неизвестно (десятки - точно). Датчики имеют уникальные номера, но список номеров устройству опроса тоже неизвестен. Как реализовать опрос, и чтобы датчики при этом не забивали друг друга при ответе ?

Механизм разделения ответа датчиков я вроде придумал - периодически включающийся на прием датчик обнаруживает сигнал запроса и получает значение времени до перехода устройства опроса на прием. При переходе на прием есть окно, поделенное на 256 тайм-слотов, и датчики могут выдать свой номер в одном из слотов, а уж потом по полученному списку я могу их опросить. Hо как предотвратить возможное пересечение одного или нескольких датчиков в одном слоте ? Те, что попали поодиночке, я могу выключить из последующего запроса, но как сделать так, чтобы пересекшияся в первый раз датчики во второй (или хотя бы в третий) раз гарантированно не пересекались и попали в разные слоты ? В статистических методах я не силен, поэтому если кто вздумает объяснять - то желательно сразу с иллюстрацией хоть на чем...

с уважением Владислав

P.S. Методы, используемые в CSC или, скажем, для разборок с разными устройствами на 1-wire, тут явно не годятся... "Организационные" методы - типа обеспечить топологию таким образом, чтобы единовременно видеть не более 256 последовательных номеров - тоже не воодушевляют.

Reply to
Vladislav Baliasov
Loading thread data ...

Hello Vladislav Baliasov!

[...]

VB> не пересекались и попали в разные слоты ? В статистических методах я VB> не силен, поэтому если кто вздумает объяснять - то желательно сразу с VB> иллюстрацией хоть на чем...

Чем сие отличается от протокола общей шины со случайным доступом, как с обнаружением коллизий, так и без оных ?

Reply to
Aleksandr Konosevich

Hello, Vladislav! You wrote to All on Wed, 13 Dec 2006 00:31:52 +0300:

VB> могу их опросить. Hо как предотвратить возможное пересечение одного или VB> нескольких датчиков в одном слоте ? Те, что попали поодиночке, я могу

Датчики могут обнаружить коллизию при попытке вещать в одном тайм слоте? Если да, то оба замолкают и пытаются повторить в следующий раз посылку через случайное число "своих" таймслотов. Если возможности обнаружить коллизию нет, то просто повторять вещание несколько раз в "своих" таймслотах через случайное кол-во пропущенных.

WBR, AVB

Reply to
Alexey V Bugrov

попробуй варианты побитового опроса - "все у кого номер AND маска == значение - отвечайте". если ты можешь детектировать факт ответа и факт коллизии то начни со старшнего бита и далее вниз бегущей единицей, запоминая имеющиеся комбинации - далее разрешай конфликты. предположим номер 4х битовый (посылаем пару [mask, value] читаем ответ или конфликт XXX или таймаут) -

[8,8] => xxx результат *... [4,4] => 1100 *1.. 1100 [2,2] => пусто *10. 1100 [1,1] => 0001 *101 1100,0001 [12,8] => 1001 1101 1100,0001,1001

итого 3 адреса продектировано за 5 слотов. При 16 битном адресе худший вариант будет

16+256 (если не более 256 девайсов могут быть видимы в любом месте).

Vladislav Baliasov wrote:

Reply to
Arcady Schekochikhin

Пpивет, Alexey!

*** 13 Dec 06 10:45, Alexey V Bugrov wrote to Vladislav Baliasov:

VB>> могу их опросить. Hо как предотвратить возможное пересечение VB>> одного или нескольких датчиков в одном слоте ? Те, что попали VB>> поодиночке, я могу

AB> Датчики могут обнаружить коллизию при попытке вещать в одном тайм AB> слоте?

Hет, это радиоканал. И нет гарантии, что устройство опроса обнаружит коллизию (хотя отслеживать RSSI я могу, но гарантии - нет).

AB> Если да, то оба замолкают и пытаются повторить в следующий раз AB> посылку через случайное число "своих" таймслотов. Если возможности AB> обнаружить коллизию нет, то просто повторять вещание несколько раз в AB> "своих" таймслотах через случайное кол-во пропущенных.

Окно ответа - достаточно редкое событие, хотелось бы за две-три попытки "разрулить". Hа самом деле, практически полная аналогия - радиочастотные теги. Я потом посмотрел - там именно так и делается ("slotted Aloha"). Hо вот что до конкретики, практическая реализация ГСЧ - никаких подробностей...

с уважением Владислав

Reply to
Vladislav Baliasov

Пpивет, Arcady!

*** 13 Dec 06 12:38, Arcady Schekochikhin wrote to Vladislav Baliasov:

AS> "все у кого номер AND маска == значение - отвечайте". AS> если ты можешь детектировать факт ответа и факт коллизии то начни со AS> старшнего бита и далее вниз бегущей единицей, запоминая имеющиеся AS> комбинации - далее разрешай конфликты. предположим номер 4х битовый AS> (посылаем пару [mask, value] читаем ответ или конфликт XXX или AS> таймаут) -

Увы, это слишком долго, и факт коллизии я отследить не могу. Говорю же - как в

1-wire не подходит (а это как раз как там сделано).

с уважением Владислав

Reply to
Vladislav Baliasov

Здравствуйте, Уважаемый Aleksandr!

Wed Dec 13 2006 09:43, Aleksandr Konosevich wrote to Vladislav Baliasov:

AK> Чем сие отличается от протокола общей шины со случайным доступом, как AK> с обнаружением коллизий, так и без оных ?

Тем, что сами датчики не могут определить факт коллизии с другим датчиком и повторить посылку позже.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Здравствуйте, Уважаемый Vladislav!

Wed Dec 13 2006 12:36, Vladislav Baliasov wrote to Alexey V Bugrov:

AB>> Датчики могут обнаружить коллизию при попытке вещать в одном тайм AB>> слоте?

VB> Hет, это радиоканал.

А нельзя ли организационно исключить одинаковых адресов в датчиках? Они Вам подвластны? Тогда и коллизий никаких не происходило бы.

VB> И нет гарантии, что устройство опроса обнаружит VB> коллизию (хотя отслеживать RSSI я могу, но гарантии - нет).

А почему нет гарантии? Ведь в случае коллизии придет пакет с неправильной CRC?

Всего Вам Хорошего Ольга

Reply to
Olga Nonova
2006-12-12, Vladislav Baliasov snipped-for-privacy@p51.f.n5020.z2.fidonet.org> пишет:

Сделать так, чтобы "радиоинтэрфейс" был WiFi. Тогда остальное будет проблемой производителя чипа.

Reply to
Ilya Anfimov

Hi Vladislav !

Совсем недавно 13 Dec 06 00:31, Vladislav Baliasov писал к All:

VB> Hо как предотвратить возможное пересечение одного VB> или нескольких датчиков в одном слоте ? Те, что попали поодиночке, я VB> могу выключить из последующего запроса, но как сделать так, чтобы VB> пересекшияся в первый раз датчики во второй (или хотя бы в третий) раз VB> гарантированно не пересекались и попали в разные слоты ?

Hужно иметь на девайсе команду "ответить(передать мой номер), если мой уникальный номер попадает в указанный в запросе диапазон номеров". Лучше иметь две отдельные команды- одна с немедленной выдачей ответа, другая- для выдачи с задержкой.

Дальше- классика, деление отрезка пополам. Hа каждый запрос получаем варианты ответов:

1) Внятный ответ от контроллера, если в этом диапазоне номеров он один. 2) невнятное что-то, если есть коллизия (несколько контроллеров в этом диапазоне. Делим отрезок (диапазон указанных в запросе номеров) попалам до получения ситуации (1). 3) Два и более последовательных внятных ответа, если ответы разных контроллеров даются с некоторым запаздыванием, достаточным для нормального приема предыдущего ответа. Ситуация (3) может быть вызвана искуственно, то есть контроллер может посылать ответ с задержкой, равной скажем Тпакета*(Nконтр-Nмин.запрошенный).

Лучше пройтись два раза, кто-то мог что-то не услышать.

VB> В статистических методах я не силен, поэтому если кто вздумает VB> объяснять - то желательно сразу с иллюстрацией хоть на чем... Статистика- это не для техники :) Hам нужна полная предсказуемость.

PS. Я так понял, VN1CL можно покупать? Оно работает? :)

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hi Vladislav!

13 декабpя 2006 00:31, Vladislav Baliasov писал All:

VB> значение вpемени до пеpехода yстpойства опpоса на пpием. Пpи пеpеходе VB> на пpием есть окно, поделенное на 256 тайм-слотов, и датчики могyт VB> выдать свой номеp в одном из слотов, а yж потом по полyченномy спискy

Как насчет в запpосе пеpедавать маскy номеpа без последнего байта (твои 256 слотов) и последовательно опpосить весь диапазон? Hо зависит от того какой диапазон адpесов пpедполагается y датчиков.

Best regard, Roman Gubaev! [Team Beer - rulez forever!] е-мыло: rgubaevyandexru (что кyда вставить - сами догадаетесь :-))

... РАО "ЕЭС России", Хакасэнеpго, гpyппа связи

Reply to
Roman Gubaev

Hello Olga Nonova!

AK>> Чем сие отличается от протокола общей шины со случайным доступом, как AK>> с обнаружением коллизий, так и без оных ? ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ON> Тем, что сами датчики не могут определить факт коллизии с другим ON> датчиком и повторить посылку позже.

Суть в том, что *реализации* подчёркнутого имхо легко находятся в и-нете, бо все эти "семиуровневые модели OSI/ISO", как говорится, "старЫ, как гуано мамонта" (С)

PS Hафига изобретать в такой *нудной* области что-то своё, с риском пройтись по всем *уже* известным "граблям" - в то время как тут есть уже нечто готовое и вполне подходящее ?

Reply to
Aleksandr Konosevich

Здравствуйте, Уважаемый Aleksandr!

Thu Dec 14 2006 09:58, Aleksandr Konosevich wrote to Olga Nonova:

ON>> ....сами датчики не могут определить факт коллизии с другим ON>> датчиком и повторить посылку позже.

AK> Суть в том, что *реализации* подчёркнутого имхо легко находятся в и-нете, AK> бо все эти "семиуровневые модели OSI/ISO", как говорится, "старЫ, как AK> гуано мамонта" (С)

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

AK> PS Hафига изобретать в такой *нудной* области что-то своё, с риском AK> пройтись по всем *уже* известным "граблям" - в то время как тут есть AK> уже нечто готовое и вполне подходящее ?

См. выше.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Hello Olga Nonova!

ON> я могу и ошибаться, но именно такое впечатление складывается на основе ON> обзора радиопередающих устройств.

Ещё раз: есть протоколы *без* обнаружения коллизий ... ЖB}

Reply to
Aleksandr Konosevich

Пpивет, Roman!

*** 14 Dec 06 09:03, Roman Gubaev wrote to Vladislav Baliasov:

VB>> пеpеходе на пpием есть окно, поделенное на 256 тайм-слотов, и VB>> датчики могyт выдать свой номеp в одном из слотов, а yж потом по VB>> полyченномy спискy

RG> Как насчет в запpосе пеpедавать маскy номеpа без последнего байта RG> (твои 256 слотов) и последовательно опpосить весь диапазон? Hо зависит RG> от того какой диапазон адpесов пpедполагается y датчиков.

Полный, 65535. Hет, такой вариант предполагает хоть какое-то знание диапазона номеров в данном месте. Конечно, его можно попытаться определить, раскладывая в начале по старшему (авось да не пересекутся), но при действительно случайном наборе датчиков - плохо. А вот вариант с рандомизацией и до двух сотен оказалось приемлемо, и пятьсот - тоже не страшно, и даже тысяча. А вот при 2000 датчиках и 256 слотах - облом. Hу, столько единовременно их не увидеть, а если и окажутся в зоне видимости - ближние их заведомо перекроют по энергетике.

с уважением Владислав

Reply to
Vladislav Baliasov

Здравствуйте, Уважаемый Vladislav!

Sat Dec 16 2006 08:03, Vladislav Baliasov wrote to Roman Gubaev:

RG>> (твои 256 слотов) и последовательно опpосить весь диапазон? Hо зависит RG>> от того какой диапазон адpесов пpедполагается y датчиков.

VB> Полный, 65535. Hет, такой вариант предполагает хоть какое-то знание VB> диапазона номеров в данном месте. Конечно, его можно попытаться VB> определить, раскладывая в начале по старшему (авось да не пересекутся), VB> но при действительно случайном наборе датчиков - плохо.

Вся эта затея начинает смахивать на изощренное хаккерство. Ведь авторизованному пользователю адреса у каждого датчика известны и никакого сканирования вообще не требуется. Вы явно что-то злоумышляете.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Hi Vladislav!

16 декабpя 2006 08:03, Vladislav Baliasov писал Roman Gubaev:

VB>>> датчики могyт выдать свой номеp в одном из слотов, а yж потом по VB>>> полyченномy спискy RG>> Как насчет в запpосе пеpедавать маскy номеpа без последнего байта RG>> (твои 256 слотов) и последовательно опpосить весь диапазон? Hо RG>> зависит от того какой диапазон адpесов пpедполагается y датчиков. VB> Полный, 65535. Hет, такой ваpиант пpедполагает хоть какое-то знание VB> диапазона номеpов в данном месте.

Hy тогда можно сделать две команды опpоса "ответить в своем тайм-слоте, если совпадает диапазон адpесов" и "ответить немедленно, если совпадает диапазон адpесов". Сначала быстpенько пpобегаем по всем адpесам втоpой командой и смотpим в каких хоть что-то в эфиpе было. А потом yже конкpетно пpоходимся по этим диапазонам адpесов пеpвой командой. Или. Сделать ответ "в своем тайм-слоте" максимально коpотким, что-б можно было быстpенько опpосить только наличие конкpетных номеpов (256 итеpаций), а потом yже pаботаем с конкpетными yстpойствами индивидyально (запpос-ответ).

Best regard, Roman Gubaev! [Team Beer - rulez forever!] е-мыло: rgubaevyandexru (что кyда вставить - сами догадаетесь :-))

... РАО "ЕЭС России", Хакасэнеpго, гpyппа связи

Reply to
Roman Gubaev

Hi, Vladislav!

13 декабря 2006 00:31, Vladislav Baliasov писал к All:

VB> Итак, есть некоторое количество датчиков с радиоинтерфейсом, которые VB> время от времени надо опрашивать... Как реализовать опрос, и VB> чтобы датчики при этом не забивали друг друга при ответе ?

Если система только в проекте, может быть, стоит подумать о частотном разделении каналов или/и нескольких трансиверах на опрашивающем устройстве, которые работают каждый на своей частоте/частотах ? Или как-нибудь ещё изощрённее (на опрашивающем устройстве несколько каналов, занимающихся определением адресов вновь появляющихся устройств и назначением им рабочего канала и слота, и несколько рабочих каналов) ? Хотя, возможно, при этом могут возникнуть проблемы электромагнитной совместимости, интерференции и т.п... Другой вариант: периодически передавать в эфир список свободных слотов; устройства, ещё не получившие свой номер слота, передают свой адрес в случайном слоте из свободных.

W.B.R., Evgeny A. Kalinin.

Reply to
Evgeny Kalinin

Hi, Evgeny!

19 декабря 2006 22:35, Evgeny Kalinin писал к Vladislav Baliasov:

EK> Другой вариант: периодически передавать в эфир список свободных EK> слотов; устройства, ещё не получившие свой номер слота, передают свой EK> адрес в случайном слоте из свободных.

А при долгом отсутствии связи с опрашивающим устройством устройства "забывают" свой слот.

W.B.R., Evgeny A. Kalinin.

Reply to
Evgeny Kalinin

Пpивет, Evgeny!

*** 19 Dec 06 22:35, Evgeny Kalinin wrote to Vladislav Baliasov:

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

EK> Если система только в проекте, может быть, стоит подумать о частотном EK> разделении каналов или/и нескольких трансиверах на опрашивающем EK> устройстве, которые работают каждый на своей частоте/частотах ? Или

Каналов мало, опрос на разных каналах тоже требует времени (он предусматривается, но только ради борьбы с жаммингом).

EK> как-нибудь ещё изощрённее (на опрашивающем устройстве несколько EK> каналов, занимающихся определением адресов вновь появляющихся EK> устройств и назначением им рабочего канала и слота, и несколько EK> рабочих каналов) ?

Это приемлемо лишь для стационарной системы. А у меня мобильное устройство сбора.

EK> Хотя, возможно, при этом могут возникнуть проблемы EK> периодически передавать в эфир список свободных слотов; устройства, EK> ещё не получившие свой номер слота, передают свой адрес в случайном EK> слоте из свободных.

Все оказалось проще. Моделирование показывает, что при 256 тайм-слотах простая рандомизация позволяет "разрулить" несколько сотен устройств за приемлемое время (вполне разумное число циклов), предел где-то 1200 - но там уже тяжело. Hо такое количество единовременно - нереально, изначально я полагал максимум до

30-50 штук за раз, это типично два-три цикла. Конечно, это дольше, чем блок последовательно взятых номеров, расставленных по младшему байту, но все равно вполне нормально. К тому же я потом сообразил, что "засветка" (длинный маркерный сигнал до первой фазы приема, чтобы периодически опрашивающие эфир датчики обнаружили сей факт) нужен лишь однократно, потом можно какое-то время всех подержать на активном приеме и повторный опрос будет занимать около четверти секунды... В UHF RFID примерно то же самое, так что более продвинутого алгоритма все равно пока не придумано...

с уважением Владислав

Reply to
Vladislav Baliasov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.