![]() |
![]() |
#21 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Я хочу чтоб мастер отправлял данные ведомым, слушал от них ответ и общался с сервером.
|
![]() |
![]() |
![]() |
#22 | ||||
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Цитата:
Цитата:
Вы же понимаете что это лишнее звено. На ардуино нужно будет задействовать уже 2-а сериальных порта. Ваш сервер каким-то образом (посредством некой программы cgi, php?) через 2-й сериальный порт будет связываться с ардуиной-мастером, причем по отношению к серверу эта ардуина будет ведомой (т.е. инициатором соединения будет выступать сервер). По какому-то известному лишь вам протоколу. Ну чтож попробуйте. |
||||
![]() |
![]() |
![]() |
#23 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
То что я хочу сделать, я попытался описать вот здесь: http://cyber-place.ru/showpost.php?p=2311&postcount=5
Как же без сервера, без него никак нельзя! ))))) |
![]() |
![]() |
![]() |
#24 | ||
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
![]() Цитата:
Просто когда вы пишите "хотелки" вы должны четко представлять, последовательность обмена информацией. В модбас инициатором соединения всегда выступает МАСТЕР для протокола modbus RTU (или КЛИЕНТ для протокола modbus TCP/IP). В данном случае мы рассматриваем протокол modbus rtu из чего следует: все ардуины в сети будут помощниками (slave) которые, слушают, ожидают соединения от мастера. Они (slave) отвечают только в том случае если идет обращение непосредственно к ним (к нему) т.е. когда ID запроса от мастера соответствует ID slave. После этого происходит обмен информацией между мастером и помощником, либо чтение регистров (пременных), либо запись в зависимости от функции протокола модбас. Я еще раз обращаю ваше внимание на то, что для понимания процесса обмена нужно прочитать хотя бы основы протокола modbus rtu. Можно не вникать в дебри самого протокола, но основное вы должны понять. Почему я вам задаю вопрос зачем нужна ардуина-мастер, да потому что я не вижу и не понимаю её сущность. Вот на мой взгляд приблизительный алгоритм работы: У вас в сети modbus-rtu подключено (соединено) несколько ардуин-slave (2x проводная линия, витая пара с эл. интерфесом RS-485). Допустим их 3шт с ID=1, ID=2, ID=3. Каждая из ардуин в цикле слушает и отвечает только на свой ID. Причем в выше приведенном примере (пост №4) используются: 1. 10 регистров (переменных) 2. работают только функции 3 и 10 (что вполне хватает для нужд умного дома) Каждая из этих ардуин-slave может выполнять различные функции, например: - анализируя аналоговые входа измерять температуру и записывать эти значения в какой либо регистр модбас, который в последствии будет считываться мастером. - изменять цифровые входа (для вкл. реле или тиристоров) считывая значения др. регистров, которые в свою очередь будут изменяться опять же мастером. и т.д. (все зависит от назначения конкретной ардуины) Мастером в этой сети служит роутер (mr3020) - на роутере установлен WEB сервер. - на роутере установлена программа modbus-мастер (бинарный файл). В этом звене нужно обеспечить обмен между запросами от клиента (браузера) web-сервера и модбас-мастером. Здесь я предполагаю несколько путей: 1. modbus-мастер может работать как CGI приложение. Клиент-браузер периодически (через функции POST, GET) прередает CGI программе запрашиваемые или изменяемые параметры (переменные регистры) в свою очередь CGI приложение modbus-master связывается с соответствующим modbus-slave и получает или изменяет соответствующие регистры и возвращает результаты WEB клиенту. 2. modbus-мастер работает как демон (в фоне). Он в цикле с определенной периодичностью опрашивает помщников (slave) и записывает состояние их регистров в файл данных, затем считывеет этот же файл и записывает снова в регистры slave. При обращении к Web серверу вызывается программа (php скрипт) которая считывает этот файл данных интерпретирует и передает эти данные на web страницу клиента. При изменении каких то параметров происходит обратный процесс, php программа перезаписывает файл данных. Ну как то так ![]() |
||
![]() |
![]() |
![]() |
#25 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Всё верно, просто я хочу поставить мегаардуину на случай выхода из строя сервера (завис например) , тогда "умный дом" всё равно будет работоспособен, в меге будут хранится те же данные что и на сервере. На сервере я планирую всё помещать в БД. В свою очередь, если зависнет мега, то после ресета она возьмёт данные из БД на сервере. Мега и сервер как бы дублируют друг друга.
Последний раз редактировалось stD; 01.12.2012 в 17:56. |
![]() |
![]() |
![]() |
#26 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Что бы не завис Arduino нужно использовать WDT
|
![]() |
![]() |
![]() |
#27 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Это вачдогтаймер?
А если в системе присутствует GSM-сигнализация, то можно что-нибудь прикрутить к ней, чтоб она могла в перегрузить сервер. Последний раз редактировалось stD; 01.12.2012 в 18:26. |
![]() |
![]() |
![]() |
#28 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Вот ещё интересный вопрос, про ответвления от линии!
Я почитал несколько статей и ряд форумов про RS-485, так вот в одной статье вапще не рекомендуют делать ответвления, в другой разрешают не больше 50 см., в третьей пару-тройку метров, а на одном форуме человек писал что они прокладывали сеть rs-485 на каком-то предприятии, длинной в сотни метров (то есть речь идёт о промышленных масштабах) и они делали ответвления чуть ли не по 50 метров. И всё прекрасно работало! Что скажите? |
![]() |
![]() |
![]() |
#29 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Я в этом не специалист, но мне кажется что,
к каждому УУ должен идти отдельный кабель и соединяются все кабели на входе ЦУ |
![]() |
![]() |
![]() |
#30 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Везде написано что такой метод соединения самый нежелательный!!!
Должно быть так: ![]() |
![]() |
![]() |
![]() |
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5) | |
|
|