![]() |
|
![]() |
#1 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
А ты сможешь набросать скетч на основе этой библиотеки, с тремя ардуинами, две ведомые, одна главная? А то пример который идёт вместе с библиотекой не совсем понятен!
PHP код:
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Есть ещё одна библиотека <ModbusMaster.h>.
Вот из неё пример: PHP код:
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
на странице автора прямо так и написано Small Modbus slave, RTU (serial) for Arduino. Вроде все расписал что не понятно? меняйте ID и будет вам другая ардуина в сети. А что у вас будет делать ардуина работающая мастером? Её задача? Последний раз редактировалось andr128; 25.11.2012 в 05:11. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Я хочу чтоб мастер отправлял данные ведомым, слушал от них ответ и общался с сервером.
|
![]() |
![]() |
![]() |
#5 | ||||
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Цитата:
Цитата:
Вы же понимаете что это лишнее звено. На ардуино нужно будет задействовать уже 2-а сериальных порта. Ваш сервер каким-то образом (посредством некой программы cgi, php?) через 2-й сериальный порт будет связываться с ардуиной-мастером, причем по отношению к серверу эта ардуина будет ведомой (т.е. инициатором соединения будет выступать сервер). По какому-то известному лишь вам протоколу. Ну чтож попробуйте. |
||||
![]() |
![]() |
![]() |
#6 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
То что я хочу сделать, я попытался описать вот здесь: http://cyber-place.ru/showpost.php?p=2311&postcount=5
Как же без сервера, без него никак нельзя! ))))) |
![]() |
![]() |
![]() |
#7 | ||
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 программа перезаписывает файл данных. Ну как то так ![]() |
||
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Всё верно, просто я хочу поставить мегаардуину на случай выхода из строя сервера (завис например) , тогда "умный дом" всё равно будет работоспособен, в меге будут хранится те же данные что и на сервере. На сервере я планирую всё помещать в БД. В свою очередь, если зависнет мега, то после ресета она возьмёт данные из БД на сервере. Мега и сервер как бы дублируют друг друга.
Последний раз редактировалось stD; 01.12.2012 в 17:56. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|