modbus, rs-485 и tcp
- Войдите на сайт для отправки комментариев
Приветствую.
Я новичёк в arduino, т.к. по работе приходиться опрашивать разные железяки по модбас, то возникла мысль начать знакоство с ардуино сделав себе удобное рабочее решение...
Собственно чего хочу (описываю по максимуму, может такое невозможно реализовать)
1 tcp порт
3 rs-485 порта
Возможности:
a) ардуино одним 485 подключается к контроллеру, выступает в роли мастера
два других 485 ждут подключений от других мастеров (например два независимых компа) и ардуино приняв запрос (выступив в роли слейва), пересылает в устройство, получает ответ и отправляет в тот порт, откуда пришёл запрос...
при этом ещё и делает очередь обработки посылок, т.к. спрашивать надо последоваться, иначе работать не будет.
аналогично с tcp - принимаем запросы, форвардим в 485, ответ пересылаем обратно...
b) тоже самое, то с контроллером общаемся по tcp, а 485 - как бы слейвы...
Собственно вопрос, какую плату ардуино выбрать как базу, какие шилды под указанные задачи? Если конечно это реально реализовать?
Так же ещё вопрос про конфигурирование системы... Хочется иметь возможность менять режимы работы (а) или (b) , как и скорости 485 портов, чётность, битность.... чтобы не переливать разные программы, можно ли через web интерфейс в ардуино их менять и хранить в eeprom? или можно будет сделать мини прогу для пк и вливать только настройки?
Привет. Стандарт RS-485 поддерживает максимальное количество устройств 32 — 256 устройств (32 нагруженных).
Можно с ардуинки слать данные установив соответствующий пин в HIGH, и периодически проверять не пришло ли чего на вход ардуинке, установив соответствующий пин в LOW (тогда ардуино будет выступать в качестве слейва). Они все будут в одной сети. Так что сигналы будут видеть все. Если же нужно чтобы были отдельные сети, то потребуется несколько ардуино, потому что в одной по RS-485 можно подключить только одну сеть.
b) По tcp нужет Ethernet Shield
По поводу разных режимов работы, то можно просто реализовать разные функции, и в зависимости от параметра вызывать ту или другую. Значение параметра можно менять через Ethernet отправив и обработав на ардуино соответсвующие запросы(Это уж как сами придумаете) А значение текущего параметра можно хранить в eeprom.
Привет,
спасибо за ответ.
С ethernet шилдом понятно, если я опять таки правильно понял, то надо брать arduino uno версию под него?
rs-485 http://www.aliexpress.com/wholesale?SearchText=arduino+rs-485&catId=&initiative_id=SB_20140204005702 вот такой подойдёт?
и можно ли иметь больше одного rs-485 активного? логику куда какой пакет засунуть реализовать уже можно будет...
Ну можно купить Шилд и под arduino mega, но если мега не нужен тоUNO дешевле будет.
Думаю подойдет. Я использовал просто MAX485 и на плату его паял, но проще порой купить готовую.
А вот на счет одновременной активности, то тут у меня были проблемы. Пришлось по очереди запускать, иначе данные терялись. Если кто-то знает как это исправить, то поправьте меня.
А вообще, я наврал. Можно к одной ардуинки несколько подсоединить несколько сетей RS-485. С помощью билиотеки SoftwareSerial. Так что можно сделать несколько независимых сетей, и в них выбрать либо мастер, либо слейв. Извиняюсь за дезинформацию.
Снова приветствую.
Собственно приехали железки, а именно Arduino Nano и Arduino Pro Mini + Max485
Попробовал использовать SoftwareSerial - вроде работает...
Но нашёл момент, нельзя при открытии порта указать параметры типа parity, flow control, data bits...
Собственно вопрос, есть ли возможность их задать при использовании этой, или какой либо другой библиотеки?