Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.04.2013, 18:54   #131
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Сделал еще один фокус.
На линукс машине запустил http сервер, запрос с которого идет в роутер, ну и соответственно к ардуине. Проблема к сожалению не пропала.
andr128 вне форума   Ответить с цитированием
Старый 17.04.2013, 22:59   #132
pma
Junior Member
 
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0
pma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud of
По умолчанию

В ожидании посылок решил заняться сильно напрягывшей проблемой и вот что вышло.
Напомню: искал возможность на 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р + проц и мелочь.

Что думаете по такой организации?
Миниатюры
Нажмите на изображение для увеличения
Название: DSC1.jpg
Просмотров: 482
Размер:	447.6 Кб
ID:	959   Нажмите на изображение для увеличения
Название: DSC2.jpg
Просмотров: 400
Размер:	119.5 Кб
ID:	960  
pma вне форума   Ответить с цитированием
Старый 17.04.2013, 23:33   #133
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Не понял как это все работает, но красиво. Главное чтоб вас устраивало.
А вот это с релюшками что за зверь?
andr128 вне форума   Ответить с цитированием
Старый 18.04.2013, 16:13   #134
pma
Junior Member
 
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0
pma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud of
По умолчанию

3 устройства, которые могут передавать данные: Master 1,2,3 (две левые платы и мега), правая верхняя плата выполняет адресованные ей команды от любого устройства, правая нижняя только следит за линией и выдает разрешение на использование линии. Master 2 задалбывает всех своими вопросами, и создает искусственную загрузку линии процентов на 70 (после включения переключателя запросы идут в RS485 и начинаются активные переговоры, видно по миганию белых светодиодов, до этого линия им не засоряется), Master 1 и 3 получив команду от сервера или ИК пульта соответственно заставляют правую верхнюю плату (Module 1) сделать чл. Для этого надо вклиниться на линию чтобы другим не помешать и самих не запинали и сказать что надо сделать модулю 1, а получив подтверждение, оставить его в покое. Обмен происходит в фоновом режиме по прерываниям и не сильно отрывает процессор от основной задачи.

Алгоритм похож на рис. 3 из приведенной статьи.
Желающий передать ждет пока освободится линия, выжидает IPG (межпакетная щель), после этого имеет право послать запрос (здесь наибольшая вероятность коллизий), шлет запрос модулю 2, модуль 2 выдает разрешение на использование линии, происходит обмен и по истечению IPG в линию ломятся другие желающие. Все тонкости и сценарии развития описывать очень долго, если будет желание можно развить тему.

Цель поста показать что на RS485 можно повесить много устройств, которые могут обмениваться между собой данными без сервера, с малой задержкой и обсудить такую структуру сети. Плюсы такой системы думаю понятны всем.

Про зверя с релюшками писал здесь, это универсальный модуль собственной разработки. В 3 залита прошивка только для эксперимента и все что там наставлено не используется, а команды выполняет полноценный.
pma вне форума   Ответить с цитированием
Старый 18.04.2013, 20:23   #135
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

По моему по алгоритму на CAN bus смахивает.
andr128 вне форума   Ответить с цитированием
Старый 18.04.2013, 20:34   #136
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
Желающий передать ждет пока освободится линия, выжидает IPG (межпакетная щель), после этого имеет право послать запрос
А если будет несколько желающих передать?
Admin вне форума   Ответить с цитированием
Старый 18.04.2013, 21:44   #137
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от zuriuslev Посмотреть сообщение
..
Начал рыться и наткнулся на замечательную программу -
Free MODBUS/TCP to MODBUS/RTU gateway

Действительно !
скомпилировал, запустил на роутере
(mbusd -d -v9 -L- -p/dev/ttyACM0 -s9600 -P502)
и подключился уже с виндозы, через ModbusPoll.
Всё работает !

Даже собрал .ipk для OpenWrt.

Завтра продолжу уже из PHP.

Пожалуйста можно поподробнее как вы компилировали.

Дело в том что mbusd контролирует состояние RTS линии и не работает с любыми UART MC.

Последний раз редактировалось andr128; 18.04.2013 в 21:53.
andr128 вне форума   Ответить с цитированием
Старый 18.04.2013, 22:08   #138
pma
Junior Member
 
Регистрация: 04.02.2013
Сообщений: 19
Вес репутации: 0
pma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud ofpma has much to be proud of
По умолчанию

Вероятность что 2 и более желающих начнут передавать в интервал 0,2мс (это время передачи 1 байта на 57600) крайне мала, но это случается если во время передачи одного находятся еще 2 желающих и дружно ждут IPG
но и тут нет проблем: первый запрос бьется и все желающие понимают это и встают в очередь уже на основе уникального ID или можно генерить случайную задержку, после чего повторяют попытку. и так пока не передадут или закончатся попытки. По ID дольше но проще и мне кажется чуть надежнее. Контроль целостности можно делать либо прослушивая линию в момент передачи (будет сильно грузить проц, другая схема включения драйвера, в железе так и не попробовал) либо по CRC (использовал этот вариант) тут в любом случае надо дожидаться конца пакета чтобы понять побился или нет. Это дольше но проц не перетруживается, нам не HD кидать, и так скорости хватит. при хорошей реакции человека 0,1 сек около 20мс на обмен не критично. Знаю о нескольких уязвимостях, но они крайне маловероятны и можно исправить ести не жалко еще чуть места.

по алгоритму на многое смахивает. они все похожи. CAN нет во многих процах! я уже пожалел что не взялся за жирную СТМку (но может тогда и не осилил бы). Задачу ставил найти способ обмена данными с дешевыми дохлыми устройствами без сервера (кл устройство на 8 меге) Можно делать законченное, простое, более надежное устройство, которое по событию может сообщить всем что случилось или управлять несколькими модулями.

Кстати, может кто подскажет как по уму посылать из веб страницы пакет в виде байт на IP Устройства (к примеру массив 128,255,128,255)
pma вне форума   Ответить с цитированием
Старый 18.04.2013, 22:21   #139
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от pma Посмотреть сообщение
Кстати, может кто подскажет как по уму посылать из веб страницы пакет в виде байт на IP Устройства (к примеру массив 128,255,128,255)
см. php + сокеты, примеры выше были
andr128 вне форума   Ответить с цитированием
Старый 06.09.2013, 21:10   #140
electric
Member
 
Регистрация: 29.03.2013
Сообщений: 68
Вес репутации: 0
electric is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от andr128 Посмотреть сообщение
Сделал еще один фокус.
На линукс машине запустил http сервер, запрос с которого идет в роутер, ну и соответственно к ардуине. Проблема к сожалению не пропала.
Победили проблему?
Тоже хотел попробовать получать температуру по modbus...
electric вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:25. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика