Easyelectronics.ru

Электроника для всех
Текущее время: 29 сен 2020, 03:12

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 18 мар 2016, 22:03 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
анкер писал(а):
Прерывание для того и придумано, чтобы не слушать, оно без стука заходит. Скажите, какое устройство выполняет такую работу, которую нельзя прервать на пять микросекунд, что бы глянуть на принятый байт и вернуться в процесс, если это его не касается.

Ну не пять а 40 мкс и это только приём одного байта на скорости 250к... И через сколько следующий запрос, сколько устройству работать без прерывания?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 18 мар 2016, 22:43 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Dragon_Knight писал(а):
Ну не пять а 40 мкс и это только приём одного байта на скорости 250к... И через сколько следующий запрос, сколько устройству работать без прерывания?


Даже если -
1 - канал заполнен на 100%
2 - контроллер после приема "вызываю_пятого" (а он "седьмой") не умеет уходить от приема бесполезных для него 64 байт

то у него в распоряжении для работы все равно 7/8 времени, 87 процентов.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 18 мар 2016, 23:17 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
Разговор ушёл не в ту сторону...

Если Ведущий - Ведомые, то как привести время отклика до < 500мс, идеально 100мс...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 18 мар 2016, 23:50 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Dragon_Knight писал(а):
Разговор ушёл не в ту сторону...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 19 мар 2016, 00:10 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
Dragon_Knight писал(а):
Разговор ушёл не в ту сторону...
Если Ведущий - Ведомые, то как привести время отклика до < 500мс, идеально 100мс...

- Снизить количество девайсов на шине. Все же 255 устройств это очень много, можно ограничить 32, тем более не все дешевые драйверы RS485 могут больше.
- Если нужно больше, чем 32 девайса, то на мастере реализовать несколько независимых шин. Например если взять какой-нибудь популярный stm32, то у него пять уартов, плюс развитая периферия, которая позволит экономить время на обработке сетевого траффика и не считать такты.
- Запрос состояния девайса сделать с минимальной длиной. Например 4 байта: адрес, команда, crc-16.
- Еще увеличить скорость и придумать механизм динамической смены скорости: например установка связи осуществляется на минимальной скорости, потом определяется из доступного списка максимальная скорость, которую может обеспечить ведомый девайс и канал связи.

А по поводу хватит или не хватит времени на обработку: мне кажется проблема надуманная. Очень тяжело потратить время на такой задаче. Я делал девайс, где обрабатывались 5 каналов уарта на скорости 1 Мбод и ресурсов оставалось еще очень много.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 19 мар 2016, 01:10 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
elisey, Спасибо за ответ и конкретные примеры.

На счёт микросхем, то я закупил 10 штук MAX1483 для экспериментов. Привлекла тем, что у неё специально, очень сильно занижена скорость нарастания фронта (Driver Rise or Fall Time), отсюда небольшая максимальная скорость в 250к, но из этого вытекает то, что можно ставить большие отводы, по 10-20 метров на 250к и более 100 метров на скорости 9600. Ну и цена.. 150р за 10 штук это привлекательно :)
Несколько UART интересно, но тоже есть проблема. Мы-же не можем опрашивать их одновременно, т.к. в AVR есть только один поток. Мне кажется что имея два канала по 32 устройства не даст прироста скорости реакции, как если-бы у нас был один канал с 64 устройствами. Поправьте, если ошибаюсь.
Разный формат пакета. Нечего добавить. Взял на заметку.
Разная скорость. Думаю это лишнее. Достаточно единожды поэкспериментировать и найти оптимальную скорость, но тоже взял на заметку.

Из всего вышесказанного вытекает что можно начинать разводить пару плат с MAX1483 + ATmega8A и проводить эксперименты?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 19 мар 2016, 12:02 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
Dragon_Knight писал(а):
На счёт микросхем, то я закупил 10 штук MAX1483 для экспериментов. Привлекла тем, что у неё специально, очень сильно занижена скорость нарастания фронта (Driver Rise or Fall Time), отсюда небольшая максимальная скорость в 250к, но из этого вытекает то, что можно ставить большие отводы, по 10-20 метров на 250к и более 100 метров на скорости 9600. Ну и цена.. 150р за 10 штук это привлекательно :)

В китае? Микросхема то дорогая, около 130 рублей за штуку в большой партии. Мож у вас подделка?

Dragon_Knight писал(а):
Несколько UART интересно, но тоже есть проблема. Мы-же не можем опрашивать их одновременно, т.к. в AVR есть только один поток. Мне кажется что имея два канала по 32 устройства не даст прироста скорости реакции, как если-бы у нас был один канал с 64 устройствами. Поправьте, если ошибаюсь.

В авр можно сделать несколько псевдопотоков. И для этого даже не нужно операционки. Будет достаточно и конечных автоматов и работы с прерываниями УАРТа. Навскидку два канала по 32 устройства будут опрашивать устройства в 1.9-2 раза быстрее, чем один канал 64 устройства.

Dragon_Knight писал(а):
Из всего вышесказанного вытекает что можно начинать разводить пару плат с MAX1483 + ATmega8A и проводить эксперименты?
Ну разводить печатку и проводить эксперименты можно хоть когда, но я бы для экспериментов взял контроллер пожирнее. Если обязательно AVR, то хотя что-нибудь из серии ATmega164, ATmega324, ATmega644. У них как раз по два УАРТа есть.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 19 мар 2016, 13:35 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1951
http://www.eti.su/articles/promishlenna ... a_607.html
А эксперименты с сетью лучше проводить не методом тыка на мк, а моделирующей программой на компе )


Вложения:
promnet.002.jpg
promnet.002.jpg [ 19.71 Кб | Просмотров: 3954 ]

_________________
mcu.goodboard.ru
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 01:41 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
elisey, может и подделка, но надеюсь что работает как оригинал :)
Что касается чипов, то какой смысл ставить что-то более многоногое, если использоваться будет 3 ноги для шины и пару ног под основную задачу, да и частота тактирования будет от внутреннего генератора на 8 Мгц.
Я не описал в начале, но по мимо всего описанного, нужно что-бы ведомое устройство было не дороже $4 и содержало минимум компонентов (не считая компоненты, которые будут уникальны в каждом ведомой устройстве).

vt340, использовал я протеус... В нём работает, а в реальности нет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 01:48 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 фев 2016, 01:18
Сообщения: 87
Озадачивался подобной задачей несколько месяцев назад. Пришел к выводу, что необходимы "самодостаточные" устройства, которые мастеру лишь сообщают об изменении своего состояния (передают/получают некритические к задержкам данные).
Другими словами - группируются "зависимые" устройства (кнопки-лампочки, датчики-моторы, ...) и сажаются по-группно на слейвы, в которые мастер при инициализации загружает алгоритм обработки (в EEPROM).
Т.о. при нажатии на кнопку свет включается мгновенно, а слейв передаст мастеру данные об изменении состояния лампочки немного позже - при очередном запросе от мастера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 03:02 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Вообще-то сеть с циклическим опросом совсем не означает, что информация от устройства может быть получена только через N шагов в худшем случае, где N количество устройств. По самому примитивному способу некоторые устройства можно опрашивать чаще.
Но если процент таких особых становится большим, то способ перестает работать.
Следующий способ - разрешить всем устройствам с экстренным сообщением отвечать вместо запрашиваемого. Это должно быть заложено программе, например - устройства после получения запроса не тупо вламываются в канал, а с проверкой занятости в течении предусмотренного интервала. Те, у кого срочное сообщения будут пролезать без очереди. Возможны коллизии между внеочередниками? - да, но и они разрешимы.

InSAn, есть такая проблема с жестко запрограммированными устройствами, возникла необходимость изменить функционал и нужно нести устройство к программатору или наоборот. Через ЕЕпром можно только выбирать конфигурации из заранее заложенных, иногда этого достаточно. Если нет, то только перепрошивка через сеть и бутлодер, но для этого не каждый контроллер из простых подойдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 11:09 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 фев 2016, 01:18
Сообщения: 87
анкер писал(а):
Через ЕЕпром можно только выбирать конфигурации из заранее заложенных
Ну да. Только для кнопок/реле тяжело придумать функционал, который невозможно заложить заранее :)
У себя реализовал "табличный" функционал. Упрощенно выглядит так:
- номер входа
- номер выхода
- тип реакции (on, off, toggle, delay)
- период

С обработкой аналоговых сигналов - да, посложнее, но реализуемо.

А что не предусмотрено - обрабатывать "по старому" - через циклические запросы с мастера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 12:13 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1951
Dragon_Knight писал(а):
vt340, использовал я протеус... В нём работает, а в реальности нет...

Да какой протеус, мк тут вообще дело десятое, я говорил о простой программке на компе, моделирующей сеть - занятость каналов и коллизии - вместо того чтоб полгода гаданиями заниматься )

_________________
mcu.goodboard.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 13:19 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
Dragon_Knight писал(а):
Что касается чипов, то какой смысл ставить что-то более многоногое, если использоваться будет 3 ноги для шины и пару ног под основную задачу, да и частота тактирования будет от внутреннего генератора на 8 Мгц.
Я не описал в начале, но по мимо всего описанного, нужно что-бы ведомое устройство было не дороже $4 и содержало минимум компонентов (не считая компоненты, которые будут уникальны в каждом ведомой устройстве).

А я имел ввиду контроллер помощнее взять не для ведомых девайсов, а для ведущего. Чтобы в него спокойно заложить все алгоритмы опроса ведомых. Для ведомого подойдет любой мелкоконтроллер.
По поводу источника тактирования, лучше поставить внешний кварцевый резонатор. Стабильность внутреннего тактирования уходит в зависимости от температуры, напряжения питания и фазы луны. Соответственно от девайса к девайсу могут возникать разные глюки, не говоря уже о том, что при уходе частоты максимальная дальность связи падает. Будут возникать ситуации, что вроде бы все работает, а вроде бы и нет.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 13:44 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
анкер, если-бы драйвер RS485 имел ногу контроля занятости линии, то пол года размышлений превратились в пол года налаженной схемы :)

elisey, всё учтено. Наверное на счёт кварца я погорячился, но нужно сделать приборчик для проверки кварца и соответственно самые стабильные паять в слейвы.
В качестве мастера... Если AVR то навреное 2560 или попробую освоить что-то из 32битного, типа AT32UC*, но есть желание начать осваивать STM32, что нибудь не очень мелкое, в корпусе TQFP-32 например...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 20 мар 2016, 18:56 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2795
Откуда: Санкт-Петербург
А зачем биться за стабильность кварца в слейвах? 1% точности для последовательного порта - с запасом, а таких плохих кварцев не бывает.

Насчёт МК с двумя портами: такой может работать в качестве хаба. Тогда мастеру надо опрашивать только хабы, а хабам только своих слейвов - время опроса (если опрашивать по кругу) резко сокращается (задержка прохождения сигнала до мастера - один цикл опроса хабом + один цикл опроса мастером, т.е. порядка суммы числа хабов и слейвов у хаба, а не их произведения, как если бы хабов не было).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 22 мар 2016, 21:27 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
с теми же размышлениями сейчас
насчет сети устройств

единственно из предыдущего опыта точно решил, разделить логику уровня приложения и уровня близкого к физическому интерфейсу
то есть на уровне приложения будет такая логика, что каждое устройство может общаться с каждым. Это могут быть 1. поля информации 2. события 3. команды

а вот физический интерфейс будет не один, а несколько, Для основного дома где нет возможности пока протянуть провода будет радио. Для Нового домика где прокинуты провода сейчас во время ремонта - будут провода.
Для проводов изначально ориентировался на опыт ShadS http://asis-kbr.ru/forum/viewtopic.php?f=9&t=107 по примитивному интерфейсу с софтверной кодировкой манчестером. Учитывая возможность реализовать P2P сеть (каждый с каждым) скорость соединения не так критична ибо двум устройствам обменяться посылкой стоит по времени не дорого. На стенде у меня был успешный опыт с этим и так как уже заложил ко всем светильникам только три провода (GND, Data, +48V) то эта идея будет точно применена для светильников

А вот к датчикам и выключателям проложена витая пара (UTP-cat5e). Изначально думал тоже манчестер туда, но сейчас раздумываю. Склоняюсь к rs485. В случае с RS485 сеть будет с одним мастером и ведомыми. Но что важно логика уровня приложения будет сохранена - приложение всегда будет иметь возможность общаться каждое с каждым, но на физическом уровне это будет организовано через push-pull со стороны мастера. За основу беру max485 у которой максимум 32 устройства на линии, буду разбивать на сегменты сети и стало быть опрос по кругу будет не такой уж и долгий. Т.е у меня будет коммутатор сети между сегментами и с выходом в Ethernet

Дальше вопрос. Нужно как то сделать роутинг между устройствами с разными сегментами и разными физическими интерфейсами. Все это будет преимущественно через Ethernet (проводной).
Изначально думал сделать свою примитивную маршрутизацию с некой логикой discovery чтобы коммутаторы определяли куда форвардить сообщения. Но сейчас размышляю на тему централизации всех маршрутов на MQTT запущенного на raspberry pi. C MQTT логика маршрутизации сильно упрощается, хотя в этой идее мне не очень нравится наличие на критическом пути компьютера пусть и мини, и не очень нравится довольно дубовая, простая логика подписок в mqtt


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 22 мар 2016, 23:01 
Старожил

Зарегистрирован: 08 янв 2011, 21:54
Сообщения: 240
Откуда: Ставрополь
Конечно все уже придумано до нас.
CAN может реализовываться на разной физической среде.
RS485 - это физическая среда передачи, а на этой основе много разных протоколов о которых писали.
Но забыли упомянуть один протокол - ДМХ512. У этого протокола есть возможность на одну шину устанавливать несколько передатчиков. А при использовании обратного провода за один кадр считывать состояние всех 512 каналов. Прибор может занимать несколько каналов. Удобная адресация. Готовое решение для управления светом и поворотными головами.
Максимальная скорость обновления информации почитать можно здесь http://dsl.msk.ru/rus/around/dmx512/dmx512.htm
можно реализовать любое другое количество каналов.
Легко строятся взаимосвязи между устройствами и данными по каналам


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 22 мар 2016, 23:33 
Только пришел
Аватара пользователя

Зарегистрирован: 17 мар 2016, 02:00
Сообщения: 11
Откуда: г. Москва
smart_pic, придумано всё, кроме того нужно....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Одноранговая сеть для микроконтроллера
СообщениеДобавлено: 23 мар 2016, 08:57 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Dragon_Knight писал(а):
анкер, если-бы драйвер RS485 имел ногу контроля занятости линии, то пол года размышлений превратились в пол года налаженной схемы :)

Не прыгают уровни на выходе драйвера в течении какого-то времени, значит линия свободна.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB