|
Магазин Arduino | WIKI | Регистрация | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
17.04.2013, 18:54 | #131 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
Сделал еще один фокус.
На линукс машине запустил http сервер, запрос с которого идет в роутер, ну и соответственно к ардуине. Проблема к сожалению не пропала. |
17.04.2013, 22:59 | #132 |
Junior Member
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0 |
В ожидании посылок решил заняться сильно напрягывшей проблемой и вот что вышло.
Напомню: искал возможность на 1 линии RS485 передавать данные с нескольких устройств, разнимать чтоб не подрались, с нормальной скоростью и не сильно требовательно к ресурсам. Велосипед собрал за пару вечеров за основу взяв CSMA/CD (помогла статейка) чуть перепилил и получилось. Работает шустро около 50 команд/сек с подтверждением и пр. формальностями. От процессора требуется 1.5 кб 2 прерывания и 1 таймер с прерыванием по переполнению и все! работает даже на Atmega 8 проверял. Для теста собрал 5 модулей: Ардуина передает команды, поступившие от компа по лану, Master 3 передает команды принятые от ИК пульта, Master 2 всех тролит 33 запроса/сек (было 100Гц - 1/3 просто для теста дает приличную нагрузку на линию), Module 1 выполняет все команды тут полноценная прошивка про него я писал, Module 2 берет на себя часть нагрузки по присмотру за линией и выдает разрешение на передачу. На правом фото крупно светодиоды: белый - устройство передает, зеленый - питание, переключатель выбирает встроенный RS485/внешний модуль(его нет), после включения троль начинает забивать линию, но все доходит и разруливается автоматом. По такой системе можно довешивать модули разного назначения, которые могут командовать другими, сообщать о чл с маленькой задержкой и тд. Опрос легко делается через лан цена вопроса не велика ENC28J60 - 150р + проц и мелочь. Что думаете по такой организации? |
17.04.2013, 23:33 | #133 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
Не понял как это все работает, но красиво. Главное чтоб вас устраивало.
А вот это с релюшками что за зверь? |
18.04.2013, 16:13 | #134 |
Junior Member
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0 |
3 устройства, которые могут передавать данные: Master 1,2,3 (две левые платы и мега), правая верхняя плата выполняет адресованные ей команды от любого устройства, правая нижняя только следит за линией и выдает разрешение на использование линии. Master 2 задалбывает всех своими вопросами, и создает искусственную загрузку линии процентов на 70 (после включения переключателя запросы идут в RS485 и начинаются активные переговоры, видно по миганию белых светодиодов, до этого линия им не засоряется), Master 1 и 3 получив команду от сервера или ИК пульта соответственно заставляют правую верхнюю плату (Module 1) сделать чл. Для этого надо вклиниться на линию чтобы другим не помешать и самих не запинали и сказать что надо сделать модулю 1, а получив подтверждение, оставить его в покое. Обмен происходит в фоновом режиме по прерываниям и не сильно отрывает процессор от основной задачи.
Алгоритм похож на рис. 3 из приведенной статьи. Желающий передать ждет пока освободится линия, выжидает IPG (межпакетная щель), после этого имеет право послать запрос (здесь наибольшая вероятность коллизий), шлет запрос модулю 2, модуль 2 выдает разрешение на использование линии, происходит обмен и по истечению IPG в линию ломятся другие желающие. Все тонкости и сценарии развития описывать очень долго, если будет желание можно развить тему. Цель поста показать что на RS485 можно повесить много устройств, которые могут обмениваться между собой данными без сервера, с малой задержкой и обсудить такую структуру сети. Плюсы такой системы думаю понятны всем. Про зверя с релюшками писал здесь, это универсальный модуль собственной разработки. В 3 залита прошивка только для эксперимента и все что там наставлено не используется, а команды выполняет полноценный. |
18.04.2013, 20:23 | #135 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
По моему по алгоритму на CAN bus смахивает.
|
18.04.2013, 20:34 | #136 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Цитата:
|
|
18.04.2013, 21:44 | #137 | |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
Цитата:
Пожалуйста можно поподробнее как вы компилировали. Дело в том что mbusd контролирует состояние RTS линии и не работает с любыми UART MC. Последний раз редактировалось andr128; 18.04.2013 в 21:53. |
|
18.04.2013, 22:08 | #138 |
Junior Member
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0 |
Вероятность что 2 и более желающих начнут передавать в интервал 0,2мс (это время передачи 1 байта на 57600) крайне мала, но это случается если во время передачи одного находятся еще 2 желающих и дружно ждут IPG
но и тут нет проблем: первый запрос бьется и все желающие понимают это и встают в очередь уже на основе уникального ID или можно генерить случайную задержку, после чего повторяют попытку. и так пока не передадут или закончатся попытки. По ID дольше но проще и мне кажется чуть надежнее. Контроль целостности можно делать либо прослушивая линию в момент передачи (будет сильно грузить проц, другая схема включения драйвера, в железе так и не попробовал) либо по CRC (использовал этот вариант) тут в любом случае надо дожидаться конца пакета чтобы понять побился или нет. Это дольше но проц не перетруживается, нам не HD кидать, и так скорости хватит. при хорошей реакции человека 0,1 сек около 20мс на обмен не критично. Знаю о нескольких уязвимостях, но они крайне маловероятны и можно исправить ести не жалко еще чуть места. по алгоритму на многое смахивает. они все похожи. CAN нет во многих процах! я уже пожалел что не взялся за жирную СТМку (но может тогда и не осилил бы). Задачу ставил найти способ обмена данными с дешевыми дохлыми устройствами без сервера (кл устройство на 8 меге) Можно делать законченное, простое, более надежное устройство, которое по событию может сообщить всем что случилось или управлять несколькими модулями. Кстати, может кто подскажет как по уму посылать из веб страницы пакет в виде байт на IP Устройства (к примеру массив 128,255,128,255) |
18.04.2013, 22:21 | #139 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
|
06.09.2013, 21:10 | #140 |
Member
Регистрация: 29.03.2013
Сообщений: 68
Вес репутации: 0 |
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|