![]() |
|
|
|
|
#1 | |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Получается ардуины должны работать в режиме "помощник", а главный должен непрерывно опрашивать их. А как же тогда они будут отвечать? ............... Или нужно так: Главный отправляет ардуине №1 , в запросе: стартовый байт > ID-устройства > разрешение на отправку данных и переключается на приём, принимает данные от ардуины. Что дальше? Отправлять запрос на следующую ардуину или отправлять инфу принятую от первой ардуины на сервер? Или: Главный отправляет ардуине №1 , какую-то инфу с сервера: стартовый байт > ID-устройства > инфа. Что дальше? Последний раз редактировалось stD; 24.11.2012 в 05:30. |
|
|
|
|
|
|
#2 | |
|
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В принципе да, это и есть протокол Modbus. Естественно всю "кухню" я не расписывал. Контрольные суммы, сам формат кадра и прочую низкоуровневую фигню. Зачем выдумывать свой велосипед, если уже есть все готовое..
Цитата:
Для начала посмотрите в этой ветке пост №4. В основном цикле вызывается функция, которая отвечат за механизм обмена между мастером и помощником. Естественно она обслуживает только запросы на свой ID. Код:
// Инициализация SLAVE, идентификатор в сети ID_slave = 25 ModbusinoSlave modbusino_slave(ID_slave) Код:
... modbusino_slave.loop(tab_reg, regs); ... В этом примере я (задал массив) использовал лишь 10 регистров Код:
uint16_t tab_reg[regs]; //задаем массив из 10-и 16 битовых значений (регистров) , чтобы облегчить нам жизнь. При желании механизм ее работы можно посмотреть в исходниках.Я лишь кратко упоминал, что мастером нужно использовать роутер либо компьютер. Здесь есть некоторые "трудности" - нужно компилировать программу-демона под роутер или ПК, который будет управлять ардуинами. Я склоняюсь к роутеру. В принципе я уже прошел этот путь (компиляции программ). Выше я писал, что есть уже библиотеки ModBus под наш роутер (OpenWrt). Почему я выбираю роутер, да потому что это автономное устройство с достаточными ресурсами. Которое может работать сутками, потребляет мало эл.энергии, к которому можно подключиться по сети как угодно (хоть по Wi-Fi, хоть по Ethernet) и разумеется через интернет, на нем можно установить Web сервер и управлять нашими ардуинами в сети т.е. нашим умным домом. А выдумывать свой протокол.. не это не по мне. Последний раз редактировалось andr128; 24.11.2012 в 21:34. |
|
|
|
|
|
|
#3 |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А ты сможешь набросать скетч на основе этой библиотеки, с тремя ардуинами, две ведомые, одна главная? А то пример который идёт вместе с библиотекой не совсем понятен!
PHP код:
|
|
|
|
|
|
#4 |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Есть ещё одна библиотека <ModbusMaster.h>.
Вот из неё пример: PHP код:
|
|
|
|
|
|
#5 | |
|
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
на странице автора прямо так и написано Small Modbus slave, RTU (serial) for Arduino. Вроде все расписал что не понятно? меняйте ID и будет вам другая ардуина в сети. А что у вас будет делать ардуина работающая мастером? Её задача? Последний раз редактировалось andr128; 25.11.2012 в 05:11. |
|
|
|
|
|
|
#6 |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я хочу чтоб мастер отправлял данные ведомым, слушал от них ответ и общался с сервером.
|
|
|
|
|
|
#7 | ||||
|
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Цитата:
Цитата:
Вы же понимаете что это лишнее звено. На ардуино нужно будет задействовать уже 2-а сериальных порта. Ваш сервер каким-то образом (посредством некой программы cgi, php?) через 2-й сериальный порт будет связываться с ардуиной-мастером, причем по отношению к серверу эта ардуина будет ведомой (т.е. инициатором соединения будет выступать сервер). По какому-то известному лишь вам протоколу. Ну чтож попробуйте. |
||||
|
|
|
|
|
#8 |
|
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
То что я хочу сделать, я попытался описать вот здесь: http://cyber-place.ru/showpost.php?p=2311&postcount=5
Как же без сервера, без него никак нельзя! ))))) |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|