Очередной "Умный дом", на этот раз модульная система...

riv
Offline
Зарегистрирован: 20.07.2017

Повтор случайно вылез.

MaksVV
Offline
Зарегистрирован: 06.08.2015

дак конечно шилд делать по размеру самой ноды

riv
Offline
Зарегистрирован: 20.07.2017

Добился более менее устойчивой работы сети.

В то же время все равно много ошибок на контроллерах RX/TX, до bus-off не доходит но серьезно смущает. 

riv
Offline
Зарегистрирован: 20.07.2017

Еще по какой то причине лезут дубли (а то и 3-5) отправленных сообщений. Т.е отправляю одно сообщение а по сети их принимают по 2-5 раз.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013
MaksVV
Offline
Зарегистрирован: 06.08.2015

riv пишет:
Добился более менее устойчивой работы сети.

а каким образом? все-таки репитеры шлюзы? можешь схему сети нарисовать ? топологию

ВН
Offline
Зарегистрирован: 25.02.2016

riv пишет:

Добился более менее устойчивой работы сети.

 

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

 

riv
Offline
Зарегистрирован: 20.07.2017

Подкрутил все кабели, все разъемы, соединил все экраны, подобрал места установки терминаторов путем отслеживания ошибок. Кстати в центре я все соединил без коммутатора (это узлы 6,8) на одном из них терминатор. Без него были ошибки. (На каком то буржуйском сайте производителя умных домов прочитал что в центре звезды тоже надо ставить терминатор)

Вот топология, но от коммутатора отказался. 

riv
Offline
Зарегистрирован: 20.07.2017

ВН пишет:

riv пишет:

Добился более менее устойчивой работы сети.

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

На базе нашей совместной с MaxVV работы я пишу библиотеку https://github.com/graynet-dev/aHomeBus2

Пока основная задача добиться стабильной работы сети, ее контроля и авто восстановления узлов при сбоях.

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

В центре 2 DUE они держат CAN сеть и являются шлюзами к Ethernet (socket, ModbusTCP, MQTT)

Абоненты Mega2560 pro у них GPIO + ModbusRTU для связи с контроллерами управления шторами, управление вентиляцией и отоплением.

riv
Offline
Зарегистрирован: 20.07.2017

По поводу повторителя. Так с ним и не разобрался. Думаю просто не совместимость MCP2551 и TJA1050 с модуля MCP2515.

Проблема выражалась в дублировании сообщений ( а то и 2-5 повторов) коммутатором, причем и ошибок тоже. В итоге ошибки быстро нарастали и гасили контроллер.  Эту статью уже наизусть почти выучил http://microsin.net/adminstuff/hardware/mcp2515-stand-alone-can-controller-with-spi-interface.html

Уже и контроль регистров TEC и REC  устроил. И прерывание на прием настроил. А все сыпались ошибки. Причем как уже написал выше малейшая ошибка превращалась за счет дублей в шторм и поэтапную блокировку контроллеров (bus-off) при TEC>255

MCP2515 error modes state diagram fig6 1

 

riv
Offline
Зарегистрирован: 20.07.2017

Кстати прикупил тут по случаю для мультирума Комуутатор Kramer vs848 и Регулятор уровня Kramer VA-8xl у них 232, 485 есть.

Соответственно подключу через CAN в MQTT к Majordomo.  Нашел 8 канальный усилитель на али (У меня 7 помещений, в одном стерео, остальные моно)

 

ВН
Offline
Зарегистрирован: 25.02.2016

Спасибо за подробный ответ. 

riv пишет:
Пока основная задача добиться стабильной работы сети, ее контроля и авто восстановления узлов при сбоях.

По CАN, ничего не подскажу, могу только сказать, что, по описанным вами причина, у нас от нее отказались в пользу RS-422.  Лет 20-ть назад, это уже в другой конторе, мне также довелось разрабатывать протоколы местной сети устройств и тогда выбор тоже был сделан в пользу RS-422.  До сих пор прекрасно работает на сотнях объектов. 

riv
Offline
Зарегистрирован: 20.07.2017

От 485 я отказался из-за мономастерности.

Да и проблему удалось решить. Нужно просто соблюдать правила построения CAN и правила CKC для ВЧ сигналов. Как с 485 не прокатит.

Получил более или менее четкую картинку в сети.

MaksVV
Offline
Зарегистрирован: 06.08.2015

скорость 125 кбит/с?  думаю можно даже 100 поставить. Этого хватит

riv
Offline
Зарегистрирован: 20.07.2017

Сутки простоял на 100 кбит - без ошибок.

Сейчас поставил 250 кбит - пока ошибок нет.

tosic
Offline
Зарегистрирован: 14.05.2018


>На базе нашей совместной с MaxVV работы я пишу библиотеку https://github.com/graynet-dev/aHomeBus2
>Пока основная задача добиться стабильной работы сети, ее контроля и авто восстановления узлов при сбоях.
>
Если заинтересует выложу здесь последнюю версию. (так и не разобрался как на гитхаб синхронизироваться)

Это библиотека может работать только как мастер-слейв ?

как мастер-мастер сможет работать ? если в сети все мастера )

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

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

riv назвал "мастер" "слейв" не в контексте канального уровня сети (это как в модбас и других сетях на RS485 нормальная коммуникация и порядок в сети обычно обеспечивается мастером, который общается со слейвами), а в контексте функционала узлов. (Имхо, действительно, чтобы не вносить путаницу, лучше бы назвал "шлюз").  При этом инициировать передачу сообщений может любой узел в любой момент времени.  Т.е. у riv, я так понял, мастер является шлюзом между CAN сетью и другими коммуникациями, а слейв - просто запасной - следит за работой мастера, и если тот погиб, берёт его обязанности на себя. 

Так что для осуществления вашей задачи никаких проблем нет. 

tosic
Offline
Зарегистрирован: 14.05.2018

проблема только остается в запихнуть это все в arduino nano на 8 битном)

Спасибо за толкование  

riv
Offline
Зарегистрирован: 20.07.2017

tosic пишет:

проблема только остается в запихнуть это все в arduino nano на 8 битном)

Спасибо за толкование  


MaxVV прав, насчёт логического уровня, 4 в в модели OSI. В сети есть 3 типа узлов master, slave, node. Master и Slave это шлюзы в Ethernet на Majordomo и контроллеры сети.

На Nano к сожалению либа не заточена, расчет на DUE master/slave и 2560 node. Хотя можно сделать либу и для Nano упростив код.

Просто исходя из названия темы мы делали модульную прошивку. Т. е. в node заливается одна и та же прошивка на всей сети. Функционал определяется настройками. Так же любой node работает шлюзом в modbus, uart и пр. сети.

MaksVV
Offline
Зарегистрирован: 06.08.2015

tosiс, есть вариант использовать 19 ver. нашей прошивки, которая была то того, как riv начал делать библиотеку. Она конечно не простая в понимании, но могу снять видео как всё настраивать. 

tosic
Offline
Зарегистрирован: 14.05.2018

спасибо MaksVV

я пока изучаю вашу реализацию, так как моя толком не заработала ( времени пока мало, но скоро я продолжу), вы выбрали CAN по определенным принципам, и у вас работает прототип. Я пытался на rsXXX ( но от can пока не отказался, так как есть ТЗ)

  Моя задача заключается в том, что бы это вся сборка уместилась в одном выключателе в 6см круглой коробочке. Куда подходит только витая пара ( топология звезда) А распайка дополнительно я can схемы состоящей их 2 немалых микросхем - усложняет реализацию. Также в выключателе помимо основной задачи включать и выключать (2-6 каналов) имеется дополнительные датчики температуры, света, IK приемник.

Данные с выключателя по температуре отправляются по интервалу. С ик датчика по активности. Датчик света тоже по активности, ну и включение света по действию. Если учесть что таких выключателей планируется 20 шт по дому, то сеть должна выдержать такой флуд. 

Учитывая размеры устройства, я думаю опять вернуться к rs485 \ 422 и продолжить тестировать доставки пакетов широковещательно.

riv
Offline
Зарегистрирован: 20.07.2017

tosic, самый простой для Вас вариант выдрать из нашего кода формирователь и парсер сообщений CAN, или использовать пример из библиотеки mcp2515. Там есть даже CAN to Ethernet. А контроль сети организовать либо более мощным контроллером либо Линукс машиной. Универсальности не добьётесь но работать на nano будет. Ещё вариант использовать esp32, в нем встроенный can нужен только преобразователь уровней сигнала.