roboforum.ru

Технический форум по робототехнике.


Коммуникации в системе.

В разделе рассматриваются вопросы информационного обмена в робототехнике.
Аппаратный уровень, протоколы.

Коммуникации в системе.

Сообщение Ito » 21 авг 2010, 23:15

Вот есть система: главный относительно шустрый контроллер и много интелектуальных модулей на основе контроллеров попроще, это как бы в принципе. На практике в роли главного выступает dsPIC30F6014A у которого из аппаратных модулей два UART, два SPI и один I2C. На юарты повешены, как наиболее важные, радиоканал и драйвер двигателей. И вот дальше начинается главная проблема - связь с остальными датчиками. На практике есть например модуль сонара со своим контроллером, который рулит сервой и измеряет растояния и желательно должен отсылать их на главный мозг(с юартом просто - измерил, отослал, мастер за пару команд сложил в буфер и все щасливы), но юарты то закончились(((
Напрашивается решение в лоб, вешать его слейвом и производить измерения по команде с мастера. Но пока повернёшь серву, пока этот ультразвук назад вернётся - это уйма времени. Значит на мастере надо брать таймер, подбирать время ожидания на вторичный запрос для получения данных. Т.е. коекак работать будет но это с одним модулем, а хочется красивого решения для подключения реалистично большого количества модулей и чтоб система при этом работала.
Может я туплю и есть какой-то более рациональный алгоритм общения мастера со слейвами?
Ito
 
Сообщения: 157
Зарегистрирован: 26 июн 2009, 14:15
Откуда: Минск
прог. языки: C++, Assembler

Re: Коммуникации в системе.

Сообщение =DeaD= » 21 авг 2010, 23:33

Можно на главном шедулер замутить в который складывать инфу - когда какой слейв опросить по части ответа.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Коммуникации в системе.

Сообщение Michael_K » 21 авг 2010, 23:44

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

А вообще, проблему считаю надуманной.
По крайней мере без оценки потока данных (реально нужных) выбирать что-то смысла нет...
Ну вот сколько нужно драйверу мотора... несколько десятков байт в секунду?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Коммуникации в системе.

Сообщение Ito » 22 авг 2010, 00:28

=DeaD=, видно так и придётся сделать, но как-то это неестественно...
Michael_K, человеческая шина это хорошо, но как-то раньше про это не подумал, а сейчас уже всё вытравлено и распаяно. В следующем проекте пожалуй буду на контроллерах с каном делать.
Ito
 
Сообщения: 157
Зарегистрирован: 26 июн 2009, 14:15
Откуда: Минск
прог. языки: C++, Assembler


Вернуться в Коммуникации

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10